Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.



Re: making a Module or Column that will print lines interspersed with plots
Posted:
Feb 4, 2013 1:25 AM


For the record, a semicolon does _not_ in itself suppress output. Rather, a semicolon separates the constituent expressions of a compound expression. When, however, there is a terminal semicolon, the compound expression is treated as if there were a Null after that semicolon. And Null returns no output. Hence the behavior is _as if_ the terminal semicolon suppresses the output of the preceding expression.
On Feb 3, 2013, at 8:24 PM, Murray Eisenberg <murray@math.umass.edu> wrote:
> 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] > ] > > (Prettyprinting 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 sideeffect; 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 semicolon, that just as with any other Mathematica expression, this suppresses the output. Hence when you are using a semicolon 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 semicolon. 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 5491020 (H) > University of Massachusetts 413 5452838 (W) > 710 North Pleasant Street fax 413 5451801 > Amherst, MA 010039305 > > > > >
 Murray Eisenberg murray@math.umass.edu Mathematics & Statistics Dept. Lederle Graduate Research Tower phone 413 5491020 (H) University of Massachusetts 413 5452838 (W) 710 North Pleasant Street fax 413 5451801 Amherst, MA 010039305



