Как заполнить CellFrameLabels в Mathematica Notebook Styles? - PullRequest
5 голосов
/ 25 января 2012

Я работаю над получением пронумерованных меток в ячейках, следуя советам, приведенным в других ответах

Расширение определения ячейки до определения CellFrameLabels

Какк тэгам Autonumber Cell в Mathematica Notebooks?

и я почти у цели.Я хотел добавить номера разделов к стилям разделов в таблице стилей Creative / Pastel colors.Я создал новую записную книжку (вот копия в моем общедоступном раскрывающемся списке)

http://dl.dropbox.com/u/1997638/CellFrameMargins.nb

, перейдите в меню «Формат», выберите «Таблица стилей \ Creative \ PastelColor», затем «Формат» «Изменить таблицу стилей "," Выберите стиль: раздел ", затем нажмите Creative \ Pastelcolor.nb в верхней части диалогового окна редактирования таблицы стилей.

Это открывает еще один редактор таблиц стилей, и я перехожу к четвертому пункту внизу «Стили для ячеек заголовка и раздела», затем ко второму пункту там «Раздел».Поместите туда перекрестие мыши и нажмите, затем выберите меню «Ячейка», пункт «Показать выражение», который показывает следующее выражение:

Cell[StyleData["Section"],
 CellFrame->{{0, 0}, {1, 3}},
 CellFrameColor->RGBColor[1., 0.819608, 0.658824],
 FontFamily->"Helvetica",
 FontSize->18,
 FontWeight->"Bold",
 FontColor->RGBColor[0.882353, 0.419608, 0.0784314],
 Background->RGBColor[1., 0.886275, 0.741176]]

БОЛЬШОЙ!Раскрывает все детали, или я так думал.В частности, элемент CellFrame дает мне информацию {{0, 0}, {1, 3}}, необходимую для выравнивания надписей рамок ячеек со стилем Section.Итак, вернемся к диалоговому окну редактора steylsheet для моей записной книжки и, следуя вышеупомянутым ответам, набираю

Cell[
 StyleData["Section"],
 CellFrameLabelMargins -> 0,
  CellFrameLabels-> { {
   Cell[
    TextData[{ "§", CounterBox["Section"], ": " }], 
    "SectionLabel",
    CellFrame -> {{0, 0}, {1, 3}},
    CellFrameMargins -> 4
   ] (* left label *),
   Inherited (* right label *) }, 
  {Inherited (* bottom label *), 
   Inherited (* top label *) } } ]

Правило CellFrameMargins -> 4, которое я нашел методом проб и ошибок, необходимо для выравнивания верхней части.и нижняя часть рамки ячейки с остальной частью стиля раздела справа.Мне грустно сообщать, что это только почти работает.Между текстом CellFrameLabels и фреймами есть пробелы, и я хочу их заполнить.Как будто шрифты в CellFrameLabels не растягиваются вверх и вниз, хотя они точно такие же, как шрифты в ячейках Раздела.Я не могу найти способ заполнить фон за метками.Я попытался Background -> RGBColor[...], я попытался вставить явные шрифты, я попытался установить CellFrameMargins и CellFrameLabelMargins, во многих многих комбинациях, но безрезультатно.

Я в тупике и буду признателен за любые советы.

Screenshot

1 Ответ

4 голосов
/ 25 января 2012

Это похоже на работу в пастельном стиле.То, что это делает, помещает этикетку в рамку.Мне пришлось немного поиграться с ImageMargins и FrameMargins из FrameBox, чтобы все выровнять.

Cell[StyleData["Section"],
 CellFrameLabels->{{
  Cell[
   BoxData[
    FrameBox[
     TemplateBox[{"§", CounterBox["Section"], ": "},
      "Row",
       DisplayFunction->(RowBox[{#, " ", #2}]& )
     ],
     ImageMargins->-1,
     Background->RGBColor[1., 0.886275, 0.741176],
     FrameStyle->RGBColor[1., 0.886275, 0.741176],
     FrameMargins->2
    ]
   ], 
   "SectionLabel", CellFrame -> {{0, 0}, {1, 3}}, 
   CellFrameMargins->0
  ], Inherited}, 
  {Inherited, Inherited}},
 CellFrameLabelMargins->0
]

Снимок экрана: screen shot

...