这篇文章来自我的问题extending cell definition to cellframelabels。我一直在玩CounterIncrements
并且我没有得到我期待的东西。
正如西蒙在回答我提到的帖子时所做的那样,我们首先要制作一个计数器。
CellPrint[Cell["Setting the counter", "Text",
CounterAssignments -> {{"MyCounter", 0}}]]
现在我们打印这个计数器。
CellPrint[Cell[
TextData[RowBox[{"MyCounter ", CounterBox["MyCounter"]}]], "Text"]]
结果将是:
MyCounter 0
要增加计数器,我们可以使用选项CounterIncrements
,如下所示:
CellPrint[Cell[TextData[RowBox[{"MyCounter ", CounterBox["MyCounter"]}]],
"Text", CounterIncrements -> "MyCounter"]]
这会给你:
MyCounter 1
您可以根据需要多次输入,然后您会看到计数器增加。
由于CounterIncrements
是一个细胞的选项,我对自己说:“好吧,如果我在细胞内制作细胞并在那里设置这个选项怎么办?”。由于我用这个选项制作一个单元格,我希望计数器能够增加。这会发生吗?
CellPrint[
Cell[TextData[
RowBox[{"MyCounter ", CounterBox["MyCounter"],
Cell[TextData[RowBox[{"[InlineCell]"}]], "Text",
CounterIncrements -> "MyCounter"]}]], "Text"]]
输出结果为:
MyCounter 1[InlineCell]
我原本期望输出为MyCounter 2[InlineCell]
因为我告诉单元格中的单元格增加了计数器,但它没有这样做。
文档说CounterIncrements
“尚未完全整合到长期的Mathematica系统中,并且可能会发生变化”但我认为这些信息有些误导。
我想要的原因是我可以定义一种每次使用时都会增加计数器的样式。但是这种风格将用于另一个细胞内的细胞。有人知道这里发生了什么吗?我在Mac OS X中使用MMA8。
答案 0 :(得分:3)
我的猜测是,只有当计数器位于正确的(非内联)单元格中时才会计数。 这很好,因为内联单元格仅用于格式化目的,而不用于文档结构。
如果将计数器移动到外部单元格,则计数器增加正常。修改上面的代码:
CellPrint[Cell["Setting the counter to 0", "Text",
CounterAssignments -> {{"MyCounter", 0}}]]
(* Prints a cell containing: Setting the counter to 0 *)
CellPrint[Cell[
TextData[RowBox[{"MyCounter ", CounterBox["MyCounter"],
Cell[TextData[RowBox[{"[InlineCell]"}]], "Text"]}]], "Text",
CounterIncrements -> "MyCounter"]]
(* Prints a cell containing: MyCounter 1[InlineCell] *)
这是your previous "Definition" style之类的吗?如果是这样,那么为什么不将内联单元格作为从外部单元格继承其样式的普通(无样式)单元格。然后只是在“定义”样式中,即在样式表中增加计数器? 如上所述,非内联单元格应该是样式的单元格(作为“定义”,“章节”,“部分”等等),因为它是确定文档结构的单元格。
这是一个调色板,可以创建新的章节单元格和新的定义单元格。 后者带有内置的,不可编辑的计数器。 请注意,大多数样式应移动到样式表中。
CreatePalette[With[{nb = InputNotebook[]}, {
Button["New Chapter", SelectionMove[nb, After, Cell];
NotebookWrite[nb, Cell["New Chapter", "Chapter" (* Styling is in stylesheet*)]]],
Button["New Definition", SelectionMove[nb, After, Cell];
NotebookWrite[nb, Cell[TextData[RowBox[
{Cell[TextData[
StyleBox[#, FontWeight -> "Bold"] & /@ {
"Definition ", CounterBox["Chapter"], ".", CounterBox["Definition"], ": "}],
Editable -> False, Selectable -> False, Deletable -> False],
"New definition"}]], "Definition", CounterIncrements -> "Definition",
CellFrame -> {{1, 1}, {0, 2}}, CellMargins -> {{30, 24}, {6, 6}},
CellFrameColor -> RGBColor[0, 0, 1], Background -> RGBColor[0, 1, 1]]]
]}], WindowTitle -> "Document writing palette"];