RE: Tentative conclusion: Mathematica cannot outputplain text
- To: mathgroup at smc.vnet.net
- Subject: [mg39802] RE: [mg39762] Tentative conclusion: Mathematica cannot outputplain text
- From: "David Park" <djmp at earthlink.net>
- Date: Fri, 7 Mar 2003 03:41:14 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Carlos,
I'm not certain about this because I never use TeX or LaTeX. But there is a
TexForm in Mathematica. Instead of using a Print statement, use a plain
TableForm output. Then use TexForm to obtain output which I presume can be
pasted into a Tex document.
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"};
TableForm[t, TableAlignments -> {Right},
TableDirections -> {Column, Row}, TableSpacing -> {0.5, 1},
TableAlignments -> {Center, Left}]]
The following gives Mathematica table output.
PrintNodeCoordinates[
{{2, 3, 2000}, {5, a + b, 168.09}, {x_dir, y_dir, z_dir}}]
The following gives TeX output.
PrintNodeCoordinates[
{{2, 3, 2000}, {5, a + b, 168.09}, {x_dir, y_dir, z_dir}}] // TeXForm
\matrix{ node & x & y & z \cr 1 & \Mfunction{PaddedForm}(
2) & \Mfunction{PaddedForm}(3) & \Mfunction{PaddedForm
}(2000) \cr \Mfunction{2} & \Mfunction{PaddedForm}(
5) & \Mfunction{PaddedForm}(a + b) & \Mfunction{Padded
Form}(168.09) \cr \Mfunction{3} & \Mfunction{PaddedFo
rm}(\Mfunction{Pattern}(x,
\Mfunction{Blank}(\Mvariable{dir}))) & \Mfunction{Pad
dedForm}(\Mfunction{Pattern}(y,
\Mfunction{Blank}(\Mvariable{dir}))) & \Mfunction{Pad
dedForm}(\Mfunction{Pattern}(z,
\Mfunction{Blank}(\Mvariable{dir}))) \cr }
Is that of any use? There should be people in MathGroup who know a great
deal more about this.
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
From: Carlos Felippa [mailto:carlos at titan.Colorado.EDU]
To: mathgroup at smc.vnet.net
Dear David: Many thanks for your answer. I know the 4 "Forms" you
mentioned, but they all produce formatting characters.
The original question is posted below. I guess what is needed
is a //PlainForm.
================ 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.
Running this under 4.2 gives a messy output. Saving the output
cell with Save Selection As -> Plain Text I see
\!\(\*
TagBox[GridBox[{
{"\<\"node\"\>", "\<\"x\"\>", "\<\"y\"\>", "\<\"z\"\>"},
{"\<\"1\"\>",
TagBox[
InterpretationBox["\<\" 2\"\>",
2,
Editable->False],
PaddedForm],
<30+ more lines snipped, you get the idea>
How can I get exact plain text output? I looked for something
like a TextForm or PlainTextForm filter, so I could say
Print[PlainTextForm[TableForm[t,TableAlignments->{Right},
TableDirections->{Column,Row},TableSpacing->{0,1}]]];
but found nothing in the 4.2 help file. Is there a way?