Re: MakeBoxes on v7.0
- To: mathgroup at smc.vnet.net
- Subject: [mg97131] Re: [mg97107] MakeBoxes on v7.0
- From: John Fultz <jfultz at wolfram.com>
- Date: Fri, 6 Mar 2009 04:23:48 -0500 (EST)
- Reply-to: jfultz at wolfram.com
On Thu, 5 Mar 2009 04:56:37 -0500 (EST), Mariano Su=E1rez-Alvarez wrote: > Hi all, > > after executing this on v7.0 > > h /: MakeBoxes[h[i_], StandardForm] := SubscriptBox[h, MakeBoxes[i, > StandardForm]] > > evaluating h results not in an h with a subscript, but in Global`h > with > the expected subscript. Is that intentional? This code is very > close to an example in the documentation for MakeBoxes... > > -- m Any box argument presented directly on-screen (as opposed to, for example, the tag of a TagBox, the symbolic expr of a DynamicBox, the variables of a DynamicModuleBox) should always be a string. So, your example is easily fixed by doing... h /: MakeBoxes[h[i_], StandardForm] := SubscriptBox["h", MakeBoxes[i, StandardForm]] Also correct, but unnecessarily verbose for this particular example, would be... h /: MakeBoxes[h[i_], StandardForm] := SubscriptBox[MakeBoxes[h, StandardForm], MakeBoxes[i, StandardForm]] Using, e.g., SubscriptBox with symbols rather than strings has always been bad form, but in versions of Mathematica prior to version 6, it would have appeared to work as those versions were not as strict in handling the Box argument types. Tightening up the argument handling was necessary for us to properly support DynamicBox. Sincerely, John Fultz jfultz at wolfram.com User Interface Group Wolfram Research, Inc.