Я не думаю, что это можно сделать так, как вы хотите.CellLabel
s может быть только текстом, в то время как CellDingbat
и CellFrameLabels
могут быть произвольными выражениями ячейки.
Оба CellDingbat -> ...
и CellFrameLabels -> {{...,None},{None,None}}
работают, если ячейка имеет длину только одну строку.Но не изменяйте размер автоматически для нескольких ячеек линии (по крайней мере, насколько я могу судить).Например:
Cell["Abcdefg", "Text",
CellFrame->{{0, 1}, {0, 2}},
CellMargins->{{30, 24}, {6, 6}},
CellFrameMargins->0,
CellFrameColor->RGBColor[0, 0, 1],
CellFrameLabels->{{Cell[" Definition 1.1 ", "Text",
CellFrame -> {{2, 0}, {0, 2}}, CellFrameMargins -> 0], None}, {None, None}},
CellFrameLabelMargins->0,
Background->RGBColor[0, 1, 1]]
Помещение метки CellFrameLabel сверху не вызывает этой проблемы, но я не знаю, как выровнять ее по левому краю ...
Cell["Abcde", "Text",
CellFrame->{{1, 1}, {0, 2}},
CellMargins->{{30, 24}, {6, 6}},
CellFrameMargins->0,
CellFrameColor->RGBColor[0, 0, 1],
CellFrameLabels->{{None, None}, {None,
Cell[" Definition 1.1 ", "Text",
CellFrame -> {{2, 2}, {0, 2}}, CellFrameMargins -> 0]}},
CellFrameLabelMargins->0,
Background->RGBColor[0, 1, 1]]
Я думаю, что, возможно, лучшим решением было бы включение «Definition ch.def:» в содержимое ячейки.
Cell[TextData[{
Cell["Definition 1.1: ", Editable->False, Selectable->False, Deletable->False],
"Abcdefg"}], "Text",
CellFrame->{{1, 1}, {0, 2}},
CellMargins->{{30, 24}, {6, 6}},
CellFrameColor->RGBColor[0, 0, 1],
Background->RGBColor[0, 1, 1]]
Сделайте так, чтобы обычные пользователи не могли их удалить и, вероятно, почти так же хорошо, как метка ячейки (фрейма).Он может включать счетчики, чтобы автоматически отображать правильную нумерацию.Единственная проблема заключается в том, что он не появляется автоматически, но если вы просто скопируете ранее существующую ячейку, это не является большой проблемой.
Редактирование: добавление входного псевдонима , который создает не удаляемый счетчик
Сначала мы получаем текущие псевдонимы ввода
oldAliases = InputAliases /. Options[EvaluationNotebook[], InputAliases];
, а затем заменяем любой существующий псевдоним Esc def Esc с нашим новым:
newAliases =
Append[DeleteCases[oldAliases, "def" -> _],
"def" -> Cell[TextData[
RowBox[StyleBox[#, FontWeight->"Bold", FontColor->Blue]&/@{"Definition ",
CounterBox["Chapter"], ".", CounterBox["Definition"], ": "}]],(*"Text",*)
Editable -> False, Selectable -> False, Deletable -> False]];
SetOptions[EvaluationNotebook[], InputAliases -> newAliases]
Так как у меня нет вашей таблицы стилей, мне нужно установить пару счетчиков:
CellPrint[Cell["Setting the counters", "Text",
CounterAssignments -> {{"Chapter", 2}, {"Definition", 3}}]]
Теперь я могу использовать псевдонимв существующей ячейке - она наследует стиль родительской ячейки (если не указано иное):
Другой вариант - создать палитру пойти с вашей таблицей стилей.Это было бы полезно, поскольку существует только ограниченное число из MenuCommandKey значений, которые вы можете использовать для своих новых стилей (даже если перезаписать стандартные, они просто запутают людей).См. этот ответ для примера такой палитры.