RE: TableAlignments
- To: mathgroup at smc.vnet.net
- Subject: [mg18798] RE: [mg18756] TableAlignments
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Thu, 22 Jul 1999 08:19:21 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Harvey P. Dale wrote:
-----------------------
I would like to reset the defaults, on boot-up, so that TableForm uses the
option TableAlignments->Right when, but only when, the output to the table
comprises exclusively numbers. Otherwise, I'd like to keep
TableAlignments->Automatic. Is there a command I can insert into the proper
init.m file to accomplish this, or is there some other way to do it?
-------------------------
The code below will make TableForm do what you want. I bet the only way you
can do this outside Mathematica is to write your own program in Fortran, C,
etc.
In[1]:=
HiddenSymbols`ModifyTableForm=True;
Unprotect[TableForm];
TableForm[m_?(MatrixQ[#,NumberQ]&),opts___?OptionQ]/;
HiddenSymbols`ModifyTableForm:=
Block[{HiddenSymbols`ModifyTableForm},
TableForm[m,opts,TableAlignments->Right]
];
Protect[TableForm];
Be warned you will get a long string of messages
if you evaluate DownValues[TableForm] after making the above definition.
However, it seems this definition doesn't do any harm.
----------------------
It's easier to define a new function (MyTableForm) as below. First evaluate
the following to undo the definitions above.
In[5]:=
Unprotect[TableForm];
DownValues[TableForm]={};
Protect[TableForm];
-------------------------
A definition of MyTableForm is given below. It will also do what you want.
In[8]:=
MyTableForm[m_?(MatrixQ[#,NumberQ]&),opts___?OptionQ]:=
TableForm[m,opts,TableAlignments->Right];
MyTableForm[m_,opts___?OptionQ]:=TableForm[m,opts]
----------------------
Note:
In either method above you may want to change (NumberQ) to (NumericQ)
Here is an example of how they differ:
NumberQ[Log[5]]--> False
NumericQ[Log[5]]-->True
------------
Regards,
Ted Ersek
ersektr at navair.navy.mil