MathGroup Archive 2003

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

Search the Archive

Re: Tentative conclusion: Mathematica cannot outputplain text

  • To: mathgroup at smc.vnet.net
  • Subject: [mg39810] Re: Tentative conclusion: Mathematica cannot outputplain text
  • From: Paul Abbott <paul at physics.uwa.edu.au>
  • Date: Sat, 8 Mar 2003 02:45:57 -0500 (EST)
  • Organization: The University of Western Australia
  • References: <b49nkf$fem$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Carlos Felippa wrote:

> ================   The original posting  =========================
> I am converting an old code written 8 yrs ago in Mathematica 2.2 to
> 4.2, and would like to keep the same plain text tabular output.
> To see what I mean, consider the 2.2 fragment
> 
> PrintNodeCoordinates[xyzcoor_]:= Module[
>   {numnod=Length[xyzcoor],t,n,c},
>    t=Table["   ",{numnod+1},{4}];
>    For [n=1,n<=numnod,n++,c=xyzcoor[[n]];
>        If [Length[c]<=2, AppendTo[c,0]];
>        If [Length[c]==1, AppendTo[c,0]];
>        t[[n+1,1]]=ToString[n];
>        t[[n+1,2]]=PaddedForm[c[[1]]];
>        t[[n+1,3]]=PaddedForm[c[[2]]];
>        t[[n+1,4]]=PaddedForm[c[[3]]];
>    ];
>    t[[1]] = {"node","x","y","z"};
>    Print[TableForm[t,TableAlignments->{Right},
>            TableDirections->{Column,Row},TableSpacing->{0,1}]];
>    ];
> PrintNodeCoordinates[
>   {{2,3,2000},{5,a+b,168.09},{x_dir,y_dir,z_dir}}];
> 
> The output from 2.2 is
> 
>  node  x     y     z
>  1     2     3     2000
>  2     5    a + b  168.09
>  3    x_dir y_dir z_dir
> 
> What you see is exactly what you get if you move the output cell
> to another program like TeX, e.g. for verbatim display.

You can use TextForm to do this -- and there is no need to use Print.

PrintNodeCoordinates[xyzcoor_]:= Module[
  {numnod=Length[xyzcoor],t,n,c},
   t=Table["   ",{numnod+1},{4}];
   For [n=1,n<=numnod,n++,c=xyzcoor[[n]];
       If [Length[c]<=2, AppendTo[c,0]];
       If [Length[c]==1, AppendTo[c,0]];
       t[[n+1,1]]=ToString[n];
       t[[n+1,2]]=PaddedForm[c[[1]]];
       t[[n+1,3]]=PaddedForm[c[[2]]];
       t[[n+1,4]]=PaddedForm[c[[3]]];
   ];
   t[[1]] = {"node","x","y","z"};
   TextForm[TableForm[t,TableAlignments->{Right},
           TableDirections->{Column,Row},TableSpacing->{0,1}]]
   ]

If you Put this output to a temporary file you get exactly what you want:

 PrintNodeCoordinates[
  {{2,3,2000},{5,a+b,168.09},{x_dir,y_dir,z_dir}}] >> /tmp/tmp.out

The file /tmp/tmp.out reads

node x     y     z
1     2     3     2000
2     5    a + b  168.09
3    x_dir y_dir z_dir

Cheers,
Paul

-- 
Paul Abbott                                   Phone: +61 8 9380 2734
School of Physics, M013                         Fax: +61 8 9380 1014
The University of Western Australia      (CRICOS Provider No 00126G)         
35 Stirling Highway
Crawley WA 6009                      mailto:paul at physics.uwa.edu.au 
AUSTRALIA                            http://physics.uwa.edu.au/~paul



  • Prev by Date: Re: Re: Re: visualizing Map, Thread, Apply
  • Next by Date: Thank you very much (Emergent Help: NSolve Problems!)
  • Previous by thread: RE: Tentative conclusion: Mathematica cannot outputplain text
  • Next by thread: silver-pohlig-hellman