在这里,我尝试按照Mathematica-8笔记本中的单元格自动编号的说明进行操作
http://reference.wolfram.com/mathematica/tutorial/AutomaticNumbering.html
我创建了一个包含四个文本单元格的小型笔记本
foo
qux
blancmange
bar将光标放在foo之前,然后使用Insert菜单,Automatic numbering item,出现Create Automatic Numbering Object对话框。我选择了Counter下拉菜单,然后选择了item Text,点击了This counter object单选按钮,然后哈哈!在foo之前获取数字1,大概是指notebook中类型为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 menu,Cell Tags...,Add/Remove Cell tags... item,并将标签test放在单元格qux和blancmange上。我使用Cell menu,Cell Tags...,Show cell tags item来确保它们在那里,果然,它们会出现在notebook中(我不会试图模仿这里的显示,但在这个问题的底部有一个指向我的notebook的链接,如果你想看看的话)。然后我将光标放在qux前面,使用Insert menu,Automatic numbering item,这次选择Use the counter value corresponding to the location of:,然后选择The first cell with the tag:,然后选择test,我的用户创建的标记,go OK,我得到了一个零!blancmange之前也是如此。在用我自己的dot和space在猪身上涂了一点口红之后,我的最终(糟糕)结果看起来是这样的
1. foo
0. qux
0. blancmange
4. bar如果尝试引用一个不存在的标记,我会得到
1. foo
XXXqux
XXXblancmange
4. bar因此,Mathematica认识到了一些东西,但不是我期望或需要的东西。
我还需要说明的是,我尝试了Format项中的Item Numbered项,但我遇到了两个问题:( 1 )我不知道如何从1开始重新编号,因此每个Item Numbered单元格块都属于相同的编号项序列。我真的需要独立编号的项目块: 1,2,3这里,1,2,3甚至更晚,等等。(2)我需要给各种不同类型的单元格编号,所以我真的需要创建我自己的标签并控制我对它们的跟踪。
如果有任何建议,我将不胜感激。
这是我琐碎的小笔记本的链接。
CellTagsAutonumbering.nb
发布于 2012-01-20 11:13:09
我认为您试图以错误的方式使用单元格标签
(我刚刚注意到你在上面的评论中说了这么多)!
计数器仅对已经出现的特定样式的单元进行计数(尽管计数器可以自动或手动重置/改变)。单元格标记是为了便于您以后引用特定的单元格,例如特定的等式或代码块等。
此时,您的细胞标记为“测试”我们下面的计数器CounterBox["Code", "test"]。此计数器将查找标记为"test“的第一个代码样式单元格,并打印其编号。因为您没有标记为"test“的代码块,所以它返回零。
如果您希望类似文本的单元格使用与普通文本单元格不同的计数器,则需要构造一个新的文本样式。转到格式>编辑样式表。然后单击default.nb并将文本样式单元格复制到notebook的样式表中。然后,您可以将其修改为具有不同的名称(例如,"Text2")和不同的计数器。然后,您可以使用CounterBox["Text2"]引用这些单元格编号,就像对普通文本单元格所做的那样。
您还可以通过将CounterBox添加到CellDingbat或CellFrameLabels来自动对它们进行编号。例如,请参阅:Extending cell definition to CellFrameLabels definition和CounterIncrements for individual cells
发布于 2012-04-26 08:46:37
对于那些试图做类似事情的人:我建议你做以下事情:
提取notebook中的所有单元格标签
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]}
]希望这能有所帮助!
https://stackoverflow.com/questions/8903484
复制相似问题