Что генерирует In / Out CellLabels в Mathematica и как я могу добавить к ним автоматическую синхронизацию? - PullRequest
7 голосов
/ 15 октября 2010

Когда Mathematica оценивает ячейку, она дает входной и выходной ячейкам CellLabel s In[$Line]:= и Out[$Line]=, где $ Line - это счетчик, который увеличивается на каждый вычисленный вход.

Если вы введете что-то вроде TraditionalForm[expr] или TeXForm[expr] (или любую другую * форму из $OutputForms), тогда имя формы также будет добавлено к метке ячейки вывода. например, Out[1]//TraditionalForm=.

Я не могу найти способ настроить эти ярлыки.

  • Их можно отключить в диалоге настроек.

  • Кажется, они не в Параметры таблицы стилей для ввода и Выходные ячейки - хотя варианты относящиеся к поведению CellLabel там.

  • Ни в опциях Ноутбука - хотя в Option Inspector: Параметры ноутбука> Варианты оценки> EvaluationCompletionAction может изменить CellLabels, добавив метку времени. Он также может показывать время в StatusArea, немного это удаляется, как только что-то еще печатает там.

  • Ни один из типов init.m файлы конфигурации .

Итак, кто-нибудь знает, где создаются эти CellLabels?


В частности, я заинтересован в добавлении Timing в CellLabel для выходных ячеек.

Ответы [ 3 ]

6 голосов
/ 12 ноября 2010

Другой способ сделать это - установить EvaluationCompletionAction -> «ShowTiming», который будет отображать информацию о времени в строке состояния окна ноутбука после каждой оценки.

6 голосов
/ 16 октября 2010

ОК, обсуждение на Physics Forums привело к этому довольно хакерскому решению (теперь немного исправленному):

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;

Чтобы сделать CellLabels постоянными, чтобы выЧтобы не терять время при сохранении и загрузке записной книжки, вы можете изменить таблицу стилей так, чтобы в ячейках вывода была опция CellLabelAutoDelete -> True.(Изменить: теперь добавлено в команду CellPrint.)

Любые лучшие решения приветствуются.

2 голосов
/ 09 октября 2013

Можно добавить временные метки оценки к меткам ячеек Mathematica, выбрав «AddTimeStamp» в настройках инспектора параметров для EvaluationCompletionAction.Кроме того, список параметров можно задать, отредактировав запись, поэтому, используя {"ShowTiming", "AddTimeStamp"}, я получаю как продолжительность оценки в строке состояния, так и метки времени ввода и вывода в метках ячеек.

...