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.
------------------
REPLY:
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