5
$\begingroup$

I'm programmatically generating some formatted output that generates a cell in the form of a Cell[] expression. For instance, the output might be

cell = Cell[TextData[{"Function ",
    Cell[BoxData[FormBox[RowBox[{"f","(","x",")"}],
        TraditionalForm]], FormatType->"TraditionalForm"]}],
   "Subsection"];

(where $f(x)$ will actually be some complicated expression). How can I get the rendered Cell expression displayed in the notebook temporarily during evaluation?

I can display it (permanently) in the notebook using CellPrint:

CellPrint

I can display text temporarily using PrintTemporary:

PrintTemporary

But combining them doesn't work, because PrintTemporary assumes its argument is an expression to print rather than a box structure:

PrintTemporary doesn't work

Adding DisplayForm doesn't work; it seems DisplayForm only works for boxes when not wrapped in a complete Cell expression:

DisplayForm doesn't work

So I really need a CellPrintTemporary function.

$\endgroup$

2 Answers 2

1
$\begingroup$

I don't know if it will be possible to produce the Cell dingbat et al, as those don't appear on inline cells. However, you can at least get the formatting of your Cell expression by preventing it from being converted to Box form (doubly, making it inert).

Here is a practical example:

myPrintTemp[expr_Cell] :=
 Internal`InheritedBlock[{MakeBoxes},
  MakeBoxes[expr, _] := expr;
  PrintTemporary[expr]
 ]

myPrintTemp[cell]; Pause[5];
$\endgroup$
1
$\begingroup$

You can use RawBoxes to render a Cell object:

PrintTemporary[RawBoxes @ cell]; Pause[2]

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.