Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
Drexel University or The Math Forum.



Formatting Input Cells within a NotebookWrite[]
Posted:
Feb 27, 2013 3:03 AM


Hello Mathgroup,
I'd like to have NotebookWrite[] create an input cell *exactly* as I have typed that input cell. I'm trying to create set of tutorials with exercises and worked solutions.
Here are two *almost working* method, however they don't reproduce the code as it is writtenwhich is what I'm trying to do. I'm stuck.
(*Method 1*) SetAttributes[expressionCell, HoldAll];
expressionCell[expr_] := NotebookWrite[EvaluationNotebook[], Cell[Block[{BoxForm`$UseTextFormattingWhenEvaluating = True}, RawBoxes[MakeBoxes[expr]]], "Input", LanguageCategory > "Mathematica"]]
(*examplesthese "almost" work, but the FrontEnd converts to StandardForm 2d form and removes indentation. I'm trying to make it look more like InputForm*)
expressionCell[Integrate[x y^2, {y, 1, 2}]]
expressionCell[ Manipulate[x y^2, {y, 1, 2}] ]
expressionCell[ Module[{x, y, z}, x y z ] ]
(*Method 2, wrap expr in InputForm*)
Clear[expressionCell] SetAttributes[expressionCell, HoldAll];
expressionCell[expr_] := NotebookWrite[EvaluationNotebook[], Cell[Block[{BoxForm`$UseTextFormattingWhenEvaluating = True}, RawBoxes[MakeBoxes[InputForm[expr]]]], "Input", LanguageCategory > "Mathematica"]]
(*examplesthese work, but I am trying to indicate to students what I am typing, and so wish to eliminate the explicit *multiplication, and I'd like to keep my line returns and indentation on the Module example *)
expressionCell[Integrate[x y^2, {y, 1, 2}]]
expressionCell[Manipulate[x y^2, {y, 1, 2}]]
expressionCell[ Module[{x, y, z}, x y z ] ]
This is a follow on question to "Re: Using Defer on Dynamic Expressions?" which was answered by John Fultz and by Mark Maclure on the Wolfram community site.
W Craig Carter Professor of Materials Science, MIT



