Re: creating input cell with unevaluated expression?
- To: mathgroup at smc.vnet.net
- Subject: [mg20133] Re: creating input cell with unevaluated expression?
- From: "P.J. Hinton" <paulh at wolfram.com>
- Date: Sat, 2 Oct 1999 03:04:58 -0400
- Organization: "Wolfram Research, Inc."
- References: <7suv3g$21l@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 30 Sep 1999, Aaron Gross wrote: > Can anyone tell me how to do the following? I want to write an > expression that creates and inserts (at the current position in the > front-end) an input cell containing a given *unevaluated* expression, > just as if the user had typed it in himself. For instance, I'd like > to create an input cell containing the expression "1+1", so that if > the user then evaluates the cell, he gets an output cell containing > "2". > > I tried > > StylePrint[HoldForm[1+1],"Input"] > > but that doesn't work -- the input cell still has the "Hold" tag, so > when the user evaluates it by hand, he gets an output cell containing > "1+1" rather than "2". > > I also tried > > StylePrint[Unevaluated[1+1],"Input"] > > but that just gave me a "2" in the input cell. So what's the "right" > way to do this? Define a function named createInputCell[] like so: createInputCell[expr_] := ( SelectionMove[EvaluationNotebook[], After, EvaluationCell]; NotebookWrite[ EvaluationNotebook[], Cell[BoxData[ToBoxes[Unevaluated[expr], StandardForm]], "Input"] ] ) Endow it with the attribute HoldFirst. SetAttributes[createInputCell, HoldFirst] Now watch the magic! createInputCell[Integrate[Sin[x], x]] If you don't like two-dimensional typeset forms, you can replace the argument of Cell[] to ToString[Unevaluated[expr], InputForm] -- P.J. Hinton Mathematica Programming Group paulh at wolfram.com Wolfram Research, Inc. Disclaimer: Opinions expressed herein are those of the author alone.