RE: Those Pesky Minus Signs
- To: mathgroup at smc.vnet.net
- Subject: [mg43354] RE: Those Pesky Minus Signs
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Tue, 26 Aug 2003 07:13:28 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
David was right about a typo in my code. I don't know how that got in
there.
I added the first definition below to cover things like
(-a-b-c)
Notice I could have chaged MakeBoxes[a_*b: ] to MakeBoxes[(a_.)*b: ]
but then we would get
-1(a+b+c) when we really want
-(a+b+c)
So I made another definition to handle that case.
----------------------------
MakeBoxes[b:Plus[_?Negative*_, (_?Negative*_)..],
form:(StandardForm | TraditionalForm)] :=
RowBox[{"-",
RowBox[{"(", MakeBoxes @@ {-b, form}, ")"}]}]
MakeBoxes[a_*b:Plus[_?Negative*_, (_?Negative*_)..],
form:(StandardForm | TraditionalForm)] :=
RowBox[{MakeBoxes @@ {-a, form},
RowBox[{"(", MakeBoxes @@ {-b, form}, ")"}]}]
MakeBoxes[p_Rational?Negative, form:(StandardForm | TraditionalForm) ] :=
FractionBox[ MakeBoxes @@ {Numerator[p], form},
MakeBoxes @@ {Denominator[p], form} ]
--------------------
For lots of other cases I recommend my HoldTemporary package posted at
http://library.wolfram.com/infocenter/MathSource/705/
The package is really neat. In the package I define a function called
HoldTemporary that works like HoldForm, but the hold is automatically
released.
You can use HoldTemporary to prevent mapping of Times across an array.
----------------------------
Regards,
Ted Ersek
Get Mathematica tips, tricks from
http://www.verbeia.com/mathematica/tips/Tricks.html