Wolfram mathematica 如何获取(不显示)节号

Wolfram mathematica 如何获取(不显示)节号,wolfram-mathematica,Wolfram Mathematica,通过使用Insert>Automatic number…菜单插入自动编号对象CounterBox[“Section”],可以对笔记本分区进行自动编号。然而,这个对象只控制节号的显示,我想得到它的数值,以便在程序中使用。你知道怎么做吗 编辑 我想使用它的原因已经概述了。必须有更好的方法来实现这一点,但如果我了解您想要做什么,下面是一些有效的方法 创建要使用的笔记本: nb = CreateDocument[{ Cell["My Title", "Title"], Cell["My

通过使用
Insert>Automatic number…
菜单插入自动编号对象
CounterBox[“Section”]
,可以对笔记本分区进行自动编号。然而,这个对象只控制节号的显示,我想得到它的数值,以便在程序中使用。你知道怎么做吗

编辑

我想使用它的原因已经概述了。

必须有更好的方法来实现这一点,但如果我了解您想要做什么,下面是一些有效的方法

创建要使用的笔记本:

nb = CreateDocument[{
    Cell["My Title", "Title"],
    Cell["My first section", "Section"],
    Cell["My second section", "Section"],
    Cell[TextData[{"Section ",
       CounterBox["Section"]}], "Section"]}];
选择最后一个单元,它恰好是一个截面单元

SelectionMove[nb, After, Notebook];
SelectionMove[nb, Previous, Cell];
倒数

cnt = sectionCnt = c = 0;
While[True, Print[c];
  c = NotebookRead[nb];
  If[c === {}, Break[]];
  If[c[[2]] == "Section", sectionCnt++];
  cnt++;
  SelectionMove[nb, Previous, Cell]];
现在
sectionCnt
应该保存您想要的值。您可以轻松地回到原来的位置:

Do[SelectionMove[nb, Next, Cell], {cnt}]

用标签盒和已知标签包装柜台盒:

Cell[BoxData[TagBox[CounterBox["Section"], "tag"]], "Text"]
然后使用FrontEnd`ObjectContents将所有DynamicBox/CounterBox/ValueBox转换为文字,并选择该标记框的值:

x = First@Cases[FrontEnd`ObjectContents[nb, True], TagBox[x_, "tag"] :> x, \[Infinity]]
如果您只想知道某一类型的计数器有多少,您可以执行以下操作:

x = FE`Evaluate[CurrentValue[{"MaxCounterValue", "Section"}]]

谢谢我觉得这让我更接近我想做的事情,但我还没有做到。目标是使同一节中的所有输入单元格都具有相同的CellContext(请参阅)。为此,我想使用节号作为上下文标识符的一部分。我不知道如何使用上面的代码来实现这一点。感谢您的努力,但我认为这不能用于我心目中的应用程序。我不清楚是我的错。我在我的问题上添加了一个链接,以澄清一些问题。