This is what I get using Mathematica 9.0.1.
Instead I want this:
I know how to use MakeBoxes, Format and I thought this code would work:
MakeBoxes[(1/2)(expr_), StandardForm]:=
FractionBox[ MakeBoxes[expr, StandardForm], MakeBoxes[2, StandardForm]]
But the code above and all variations that I tried have no effect. This has to be automated to get the look I want. My actual application is much more complicated.
Answer
There are multiple internal forms of x / 2
. I ran into the same problem here (with 1/4
):
Using Hold correctly with Simplify and ComplexityFunction
This appears to work in all cases:
MakeBoxes[expr_ / 2 | Rational[1, 2] expr_, fmt_] :=
FractionBox[MakeBoxes[expr, fmt], "2"]
(3 + Sin[t])/2
You can better see what is going on with FullForm
:
HoldForm @ FullForm[expr_/2]
HoldForm @ FullForm[Rational[1, 2]*expr_]
Times[Pattern[expr,Blank[]],Power[2,-1]]
Times[Rational[1,2],Pattern[expr,Blank[]]]
You need to cover both the Power[2,-1]
and Rational[1, 2]
cases with your pattern.
Comments
Post a Comment