Defining new Forms

*To*: mathgroup at smc.vnet.net*Subject*: [mg20292] Defining new Forms*From*: Eckhard Hennig <hennig at itwm.uni-kl.de>*Date*: Tue, 12 Oct 1999 03:39:30 -0400*Organization*: ITWM*Sender*: owner-wri-mathgroup at wolfram.com

Hi, I would greatly appreciate some help on the following problem with Mathematica 3.0's expression formatting functionality. Assume that we have objects of the form LargeObject[lst, stuff] where "lst" is a (usually large) list of user data and "stuff" denotes some internal information, for instance lst = {1, 2, 3, 4, 5} and stuff = {opt1 -> val1, opt2->val2} . To abbreviate the display, I modified the Format/MakeBoxes rules for LargeObjects such that StandardForm and OutputForm return this: In[1]:= obj = LargeObject[lst, stuff] Out[1]= - LargeObject - So far, no problem. Now, I also want to be able to display a LargeObject such that the user data "lst" is shown in its natural form, i.e. as a list in StandardForm(!), using a new format type "ListForm" as illustrated below. In[2]:= obj // ListForm Out[2]//ListForm= {1, 2, 3, 4, 5} Although I experimented a lot with formatting rules, I was not able to produce exactly what I want. The definition Format[ListForm[LargeObject[a_,b_]]] := a returns the list but without the //ListForm suffix in the cell label, whereas the definition Format[LargeObject[a_,b_], ListForm] := a has no effect at all. However, if *both* Format definitions are executed, I get both the list output and a correct cell label. Unfortunately, this causes the output to be printed in OutputForm and not in StandardForm, which makes selecting the output with the mouse impossible. Does anyone have an idea how to apply Format and/or MakeBoxes to make the command obj // ListForm produce the correct output in StandardForm involving RowBoxes etc.? -- Eckhard ----------------------------------------------------------- Dipl.-Ing. Eckhard Hennig mailto:hennig at itwm.uni-kl.de Institut fuer Techno- und Wirtschaftsmathematik e.V. (ITWM) Erwin-Schroedinger-Strasse, 67663 Kaiserslautern, Germany Voice: +49-(0)631-205-3126 Fax: +49-(0)631-205-4139 http://www.itwm.uni-kl.de/as/employees/hennig.html ITWM - Makers of Analog Insydes for Mathematica http://www.itwm.uni-kl.de/as/products/ai -----------------------------------------------------------