MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Legends for Data Plots
  • Next by Date: Re: Logic and Truth Tables with Mathematica?
  • Previous by thread: Re: Legends for Data Plots
  • Next by thread: Re: Formatting Input Cells within a NotebookWrite[]