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