RE: Re: Automatic Display in MatrixForm

• To: mathgroup at smc.vnet.net
• Subject: [mg19540] RE: [mg19503] Re: Automatic Display in MatrixForm
• From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
• Date: Tue, 31 Aug 1999 00:52:27 -0400
• Sender: owner-wri-mathgroup at wolfram.com

```Colin Rose commented on the MakeBoxes definition that would make
StandardForm display matrices with the equivalent of MatrixForm.  His
comment included:
------------------

Two interesting cases are:

(1) Output from Solve will now get displayed as a 'Matrix', which I think is
highly undesirable. For instance, if Solve returns an answer such as

{{x -> 3}}

then it will now be presented as

(x -> 3)

which can cause a lot of confusion. I would suggest eliminating this
possibility by adding the exclusion  rule:

FreeQ[t, Rule] === True

to yield

Function[t,  MatrixQ[Unevaluated[t]] && (t =!= {{}} &&
FreeQ[t, Rule] === True), HoldAll]

(2).  Let:

lis = { {}, {}, {}, {} ... }

Some functions might generate output like this.  This generates a BEEP when
Mathematica tries to format it as a "Matrix". I can't think of a nice
general way to exclude such cases.

------------------

The version below takes care of both cases above.  The exclusion used here
is a little different from the one suggested above.  Here 'MatrixForm'
formatting isn't used on an empty matrix, or a matrix where *every* element
has the head Rule or RuleDelayed.  Other changes can be made as desired.

MakeBoxes[m_?(Function[t,MatrixQ[Unevaluated[t]] &&
Flatten[t//.{_Rule->Sequence[],_RuleDelayed->Sequence[]}]=!={},
HoldAll ]), StandardForm] :=
RowBox[{"(", GridBox[Map[Function[t,MakeBoxes[t,StandardForm],HoldAll],
Unevaluated[m],{2}]],")"}]

--------------------
Regards,
Ted Ersek

For Mathematica tips, tricks see
http://www.dot.net.au/~elisha/ersek/Tricks.html

```

• Prev by Date: Re: Re: Numbers problem
• Next by Date: Experimental Functions in Mathematica 4.0
• Previous by thread: RE: Automatic Display in MatrixForm
• Next by thread: RE: Automatic Display in MatrixForm