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.