我尝试按照Mathematica-8笔记本中自动编号细胞的说明进行操作
http://reference.wolfram.com/mathematica/tutorial/AutomaticNumbering.html
我创建了一个带有四个文本单元的小笔记本
foo
qux
blancmange
bar
将光标放在foo
之前,然后我使用Insert
菜单Automatic numbering
项,给我Create Automatic Numbering Object
对话框。我在Counter
下拉列表中选择了Text
项,点击了This counter object
单选按钮和Huzzah!在foo
之前获得了数字1,可能是指笔记本中第一个Text
类型的单元格。我现在看到了
1foo
qux
blancmange
bar
我在1之后插入我自己的dot space
以获得漂亮的
1. foo
qux
blancmange
bar
我同样使用bar
并查看预期的
1. foo
qux
blancmange
4. bar
因为bar
是Text
类型的第四个单元格。大。现在,我想为单元格qux
和blancmange
创建一个独立的编号系统。我使用Cell
菜单,Cell Tags...
,Add/Remove Cell tags...
项,并将标记test
放在单元格qux
和blancmange
上。我使用Cell
菜单,Cell Tags...
,Show cell tags
项来确保它们存在,并且,当然,它们会出现在笔记本中(我不会尝试模仿显示,在这里,但如果你想看一下,在这个问题的底部有一个Dropbox公共文件夹中的笔记本链接。然后我将光标放在qux
之前并使用Insert
菜单Automatic numbering
项,这次选择Use the counter value corresponding to the location of:
,然后选择The first cell with the tag:
,然后选择test
,我的用户创建的标签,好的,我得到一个零!在blancmange
之前同上。在我用自己的dot
和space
给猪做一点口红后,我的最终(不好)结果看起来像
1. foo
0. qux
0. blancmange
4. bar
如果尝试引用不存在的标记,我会
1. foo
XXXqux
XXXblancmange
4. bar
所以Mathematica认识到了某些东西,但不是我所期望或需要的东西。
我还需要说我在Item Numbered
项中尝试了Format
项,但我遇到了两个问题:(1)我不知道如何从1重新编号,因此Item Numbered
个单元格的每个块都属于相同的编号项目序列。我得到1,2,3,这里,然后是4,5,6,之后,以及7,8,9,甚至更晚等。我真的需要独立编号的项目块:1,2,3这里,1,2 ,3以后,以及1,2,3甚至更晚等。(2)我需要编号各种不同类型的单元格,所以我真的需要创建自己的标签并控制我对它们的跟踪。
我将非常感谢任何建议。
这是我琐碎的小笔记本的链接。
答案 0 :(得分:2)
我认为您正试图以错误的方式使用单元格标签 (我只是注意到你在上面的评论中说了很多)!
计数器仅计算已经发生的特定样式的单元格数量(尽管计数器可以自动或手动重置/更改)。单元格标签是以后您可以引用特定单元格,例如特定的公式或代码块等...
目前,您的小组标记了“测试”我们以下的计数器CounterBox["Code", "test"]
。
此计数器将查找标记为“test”的第一个代码样式单元格并打印其编号。由于您没有标记为“test”的代码块,因此它返回零。
如果你想要一个类似文本的单元格,它使用与普通文本单元格不同的计数器,
那么你需要编写一个新的文本样式。
转到格式>编辑样式表。然后单击default.nb并将Text样式单元格复制到笔记本的样式表中。然后,您可以将其修改为具有不同的名称(例如,“Text2”)和不同的计数器。然后,您可以使用CounterBox["Text2"]
引用这些单元格数字,就像使用普通文本单元格一样。
您也可以通过将CounterBox
添加到CellDingbat
或CellFrameLabels
来自动编号。例如,请参阅:Extending cell definition to CellFrameLabels definition和CounterIncrements for individual cells
答案 1 :(得分:1)
对于那些尝试做类似事情的人: 我建议你做以下事情:
提取笔记本中的所有单元格标签
tags= Union[Cases[NotebookGet[nb], (CellTags -> t_) :> t, Infinity]]
通过查找标签循环遍历单元格:
Do[
NotebookLocate[tags[[i]]];
(*Some stuff you wanted to do to each cell with a certain tag*)
,{i,1,Length[tags]}
]
希望有所帮助!