MathGroup Archive 1999

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

Search the Archive

Re: Seperate input and output in mathematica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg16575] Re: Seperate input and output in mathematica
  • From: "P.J. Hinton" <paulh>
  • Date: Wed, 17 Mar 1999 23:54:54 -0500
  • Organization: "Wolfram Research, Inc."
  • References: <innclip7cl8ab$9e2@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On 16 Mar 1999, Wenxin Mao wrote:

> [ Clipped from: comp.soft-sys.math.mathematica ]

> In mathematica frontend, all input and output are mixed together.
> 
> Is there anyway to seperate input and output ? I mean in a windows I input
> programs, and results show in another window.

Here is a very simple implementation of what you describe using notebook
manipulation functions:

(* First, we define a function named externalOuptut[] that acts as 
   a wrapper to NotebookWrite[]. *)

In[1]:=
externalOutput[Null]:= Return[]

In[2]:=
externalOutput[externalOutput] :=Return[]

In[3]:=
externalOutput[ 
    expr:(_Graphics|_Graphics3D|_SurfaceGraphics|_ContourGraphics|_\
DensityGraphics)]:= 
  Module[{$DisplayFunction = Identity},
    NotebookWrite[$outputNotebook,
      Cell[GraphicsData["PostScript", DisplayString[expr]], "Graphics"]];
    NotebookWrite[$outputNotebook, Cell[BoxData[ToBoxes[expr]],"Output"]]]

In[4]:=
externalOutput[expr_]:= 
  NotebookWrite[$outputNotebook,Cell[BoxData[ToBoxes[expr]], "Output"]]

(* This keeps graphics from being displayed in the notebook with Input 
   style cells. *)

In[5]:=
$DisplayFunction = Identity;

(* To use the functions above, we create a global variable named 
   $outputNotebook, which points to the notebook where output is
   to be placed. *)

In[6]:=
$outputNotebook= NotebookCreate[];

(* Setting $Post to use externalOutput means that all expressions 
   returned by the kernel will be fed to the externalOutput function. *)

In[7]:=
$Post = externalOutput

(* Here are some tests *)

In[8]:=
2+2

(* Notice that graphics appear only in the external notebook *)

In[9]:=
Plot[Sin[x], {x,0,2Pi}]

In[10]:=
Plot3D[Sin[x] Cos[y], {x, 0, 2Pi}, {y, 0, 2Pi}]

(* Any expression that returns Null does not create an Ouput style 
   cell. *)

In[11]:=
2+2;

--
P.J. Hinton
Mathematica Programming Group           paulh at wolfram.com
Wolfram Research, Inc.                  http://www.wolfram.com/~paulh/
Disclaimer: Opinions expressed herein are those of the author alone.



  • Prev by Date: Re: mathematica:- question ?
  • Next by Date: Re: Animation
  • Previous by thread: Seperate input and output in mathematica
  • Next by thread: Re: Seperate input and output in mathematica