4

TableFormwith option 是在Mathematica FrontEndTableHeadings中显示好看的经典表格的一种快速简便的方法。唯一的问题是,通常会显示这样的表格,其标题向左对齐,但表格的内容向右对齐。是否可以强制以这种方式行事?或者如果不是,那么以这种方式进行模拟的最佳方法是什么?TableFormTableForm

4

3 回答 3

3

您可以使用GridAlignment。这是一种方法:

a = Map[Mod[RandomInteger[2*^9], 10^#] &, RandomInteger[{1, 6}, {4, 7}], {2}];

b = Item[#, Alignment -> Left] & /@
      {"One", "Two", "Three", "Four", "Five", "Six", "Seven"};

Grid[a~Prepend~b, Alignment -> Right]

这是另一个:

headings = {"One", "Two", "Three", "Four", "Five", "Six", "Seven"};

Grid[a ~Prepend~ headings,
     Dividers -> {None, {2 -> True}}, 
     Alignment -> {Right, Automatic, {{1, 1}, {1, -1}} -> Left}
]

在此处输入图像描述

于 2011-06-05T09:52:13.857 回答
2

似乎这样做的一种方法是:

RawBoxes[ToBoxes[
   TableForm[RandomReal[{-10, 10}, {3, 3}], 
    TableHeadings -> {{"First left header", "Second left header", 
       "Trird left header"}, {"First top header", "Second top header",
        "Third top header"}}]] /. (ColumnAlignments -> _) -> 
   ColumnAlignments -> {Left, Right}]

可以使用Villegas-Gayley 技巧使这种行为永久化:

Unprotect[TableForm];
TableForm[args___] /; ! TrueQ@$inTableForm := 
 Block[{$inTableForm = True}, 
  RawBoxes[ToBoxes[TableForm[args]] /. (ColumnAlignments -> _) -> 
     ColumnAlignments -> {Left, Right}]]
Protect[TableForm];

现在

TableForm[RandomReal[{-10, 10}, {3, 3}], 
 TableHeadings -> {{"First left header", "Second left header", 
    "Third left header"}, {"First top header", "Second top header", 
    "Third top header"}}]

给出:

修改后的表格

另一种方法是定义替代功能myTableForm

myTableForm[args___] := 
 RawBoxes[ToBoxes[TableForm[args]] /. (ColumnAlignments -> _) -> 
    ColumnAlignments -> {Left, {Right}}]
于 2011-06-06T05:44:09.130 回答
1

如果 TableForm 不符合您的喜好,您可以使用 Grid 或 GridBox 获得更多控制权。

于 2011-06-05T09:47:25.607 回答