Re: Avoiding parentheses in Formatted or box structures
- To: mathgroup at smc.vnet.net
- Subject: [mg59651] Re: Avoiding parentheses in Formatted or box structures
- From: "James Gilmore" <james.gilmore at yale.edu>
- Date: Tue, 16 Aug 2005 04:39:31 -0400 (EDT)
- Organization: Yale University
- References: <ddpsvi$opu$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi David,
The problem here is that you are letting Mathematica use its internal
procedures to specify the output. Just control the multiplication of a
constant like you control the format of the 'f' function.
ClearAll[f]
Format[f[x_Symbol]] := SequenceForm[g, x]
Format[f[x^n_]] := SequenceForm[g, x^n]
constantmultiply[a_, f_] := SequenceForm[a, SequenceForm[" ", f]]
In[45]:=
{f[x], f[x^3]}
Out[45]=
{gx, gx^3}
In[46]:=
(constantmultiply[a, #1] & ) /@ %
Out[46]=
{a" "gx, a" "gx^3}
The required output. As a check:
In[53]:=
% /. a -> 5
Out[53]=
{5" "gx, 5" "gx^3}
Also, RowBox strucutres work:
In[77]:=
step1 = RowBox[{SubscriptBox["a", "1"], SubscriptBox["b", "2"]}]
DisplayForm[constantmultiply[k, %]]
Out[77]=
RowBox[{SubscriptBox[a, 1], SubscriptBox[b, 2]}]
Out[78]//DisplayForm=
\!\(\*
TagBox[
InterpretationBox[
RowBox[{"k", "\[InvisibleSpace]",
InterpretationBox[\(" "\[InvisibleSpace]\(\(a\_1\) b\_2\)\),
SequenceForm[ " ",
RowBox[ {
SubscriptBox[ "a", "1"],
SubscriptBox[ "b", "2"]}]],
Editable->False]}],
SequenceForm[ k,
SequenceForm[ " ",
RowBox[ {
SubscriptBox[ "a", "1"],
SubscriptBox[ "b", "2"]}]]],
Editable->False],
DisplayForm]\)
James Gilmore
Graduate Student
Department of Physics
Yale University
New Haven, CT 06520 USA
Email: james.gilmore at yale.edu
URL: http://pantheon.yale.edu/~jbg39/
"David Park" <djmp at earthlink.net> wrote in message
news:ddpsvi$opu$1 at smc.vnet.net...
> I'm producing some formatted output. The following is a simplified version
> that illustrates the problem I am having.
>
> ClearAll[f]
> Format[f[x_Symbol]] := SequenceForm[g, x]
> Format[f[x^n_]] := SequenceForm[g, x^n]
>
> The first line of output is what I desire. No extra parentheses. But when
> we multiply these expressions by a constant we obtain an extra set of
> parentheses, which I don't want.
>
> {f[x], f[x^3]}
> a %
>
> {gx, gx^3}
> {a (gx), a (gx^3)}
>
> So I tried the following Format statements.
>
> ClearAll[f]
> f[x_Symbol] := g\[InvisibleApplication]x
> f[(x_)^(n_)] := g\[InvisibleApplication](x^n)
>
> Now I don't get parentheses when I multiply the expression by a constant,
> but I do get them after the g. The InvisibleApplication does not carry
> through.
>
> {f[x], f[x^3]}
> a%
>
> {g[x],g[x^3]}
> {a g[x], a g[x^3]}
>
> I want
>
> {gx, gx^3}
> {a gx, a gx^3}
>
> Is it possible to obtain that? I've also tried RowBox structures without
> success. The example in the Book on RowBox, for example, produces an extra
> set of parentheses when multiplied by a constant.
>
> step1 = RowBox[{SubscriptBox["a", "1"], SubscriptBox["b", "2"]}] //
> DisplayForm
> k step1
>
> David Park
> djmp at earthlink.net
> http://home.earthlink.net/~djmp/
>