Formatting Input Cells within a NotebookWrite[]
- To: mathgroup at smc.vnet.net
- Subject: [mg129932] Formatting Input Cells within a NotebookWrite[]
- From: W Craig Carter <ccarter at MIT.EDU>
- Date: Wed, 27 Feb 2013 03:03:57 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
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 written---which 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"]] (*examples---these "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"]] (*examples---these 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