在Mathematica中生成输入/输出CellLabel的原因是什么?如何为它们添加自动计时?

Sim*_*mon 7 wolfram-mathematica configuration-files

当数学计算一个细胞,它给人的输入单元和输出单元的CellLabel小号In[$Line]:=Out[$Line]=其中$线是从每输入计算递增的计数器.

如果您输入类似TraditionalForm[expr]TeXForm[expr](或任何其他*表格$OutputForms)的内容,则表单的名称也会添加到输出单元格的标签中.例如Out[1]//TraditionalForm=.

我找不到任何自定义这些标签的方法.

  • 可以在"首选项"对话框中禁用它们.

  • 它们似乎不在输入和输出单元格的StyleSheet选项中 - 尽管有与CellLabel行为相关的选项.

  • 也不在Notebook选项中 - 尽管在Option Inspector中:Notebook Options> Evaluation Options> EvaluationCompletionAction可以通过添加TimeStamp来修改CellLabel.它还可以在StatusArea中显示Timing,一旦打印出其他内容,它就会被删除.

  • 也不是任何init.m类型的 配置文件.

那么,有谁知道这些CellLabel的生成位置?


特别是,我有兴趣将TimingCellLabel 添加到输出单元格.

Sim*_*mon 6

好的,关于物理论坛的讨论导致了这个非常糟糕的解决方案(现在已经清理了一点):

SetAttributes[Timeit, HoldAll]
Timeit[x_] := With[{t = Timing[x]}, Module[{out, form},
  If[TrueQ[MemberQ[$OutputForms, Head[t[[2]]]]],
    out = First[t[[2]]]; form = "//" <> ToString[Head[t[[2]]]], 
    out = t[[2]]; form = ""];
  If[out === Null, Null,
    CellPrint[ExpressionCell[t[[2]], "Output", CellLabelAutoDelete -> False,
      CellLabel -> StringJoin["(", ToString[t[[1]]], ")",
        "Out[", ToString[$Line], "]", form, "="]]];
  Unprotect[Out]; Out[$Line] = out; Protect[Out]; out;]];]
$Pre = Timeit;
Run Code Online (Sandbox Code Playgroud)

若要使CellLabels保持不变,以便在保存和加载笔记本时不会丢失时间,可以修改样式表,以便输出单元格具有该选项CellLabelAutoDelete -> True.(编辑:现在已添加到CellPrint命令中.)

任何更好的解决方案都非常受欢迎.


rag*_*eld 6

另一种方法是设置EvaluationCompletionAction - >"ShowTiming",它将在每次评估后在笔记本窗口的状态栏中显示时间信息.

替代文字