ОК, обсуждение на 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
.)
Любые лучшие решения приветствуются.