Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: making a Module or Column that will print lines interspersed with plots
Replies: 5   Last Post: Feb 4, 2013 1:25 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Murray Eisenberg

Posts: 2,097
Registered: 12/6/04
Re: making a Module or Column that will print lines interspersed with plots
Posted: Feb 3, 2013 8:20 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

This sort of thing has been asked about and answered in this newsgroup many times since Mathematica 6 appeared. The magic cure is to wrap each graphic with Print:

macro := Module[{j},
Print["something"];
Print[plota];
Print["something else"];
Print[plotb]
]

(Pretty-printing there just for structural clarity.)

And since you define "macro" with SetDelayed ( := ), there's no need for the semicolon you have terminating the whole piece of code.

Explanation: in Mathematica <= 5, the appearance of a graphic display was a side-effect; in Mathematica >= 6, the graphic display is the direct output as result. This implies that if you have some graphic object plotObject and use it in the form "plotObject;" with a trailing semi-colon, that just as with any other Mathematica expression, this suppresses the output. Hence when you are using a semi-colon to separate the component expressions of a compound expression -- as you are doing inside a Module -- then you must do something to counteract the effect of such a trailing semi-colon. And Print does that.

On Feb 3, 2013, at 2:46 AM, Bruce Shore <bwshore@me.com> wrote:

> I run Mathematica 7. I have some legacy notebooks, from Mathematica 5, in which there were Modules such as
>
> macro :=Module[{j},
> Print["something"];
> plota;
> Print["something else"];
> plotb
> ];
>
> where plota and plotb were plots. Now with Mathematica 7 the semicolons prevent the plots from showing up. Show[plota]; has the same problem. The semicolons, which are needed in a Module, prevent the plotting. I have tried using a Column or a Graphics column,
>
> macro:=Column[{
> Print["something"],
> plota,
> Print["something else"],
> plotb
> }]
>
> and this does the printing and the plotting, but all the printing comes at the beginning and all the plots come after that. I really want the printing to come in between the plots, in the order that I show them. How can I do this?
>
>
>
> ---------------------------
> Bruce Shore
> bwshore@me.com
> (925) 455 0627
> --------------------------
>
>
>


---
Murray Eisenberg murray@math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower phone 413 549-1020 (H)
University of Massachusetts 413 545-2838 (W)
710 North Pleasant Street fax 413 545-1801
Amherst, MA 01003-9305









Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.