TableForm
with option 是在Mathematica FrontEndTableHeadings
中显示好看的经典表格的一种快速简便的方法。唯一的问题是,通常会显示这样的表格,其标题向左对齐,但表格的内容向右对齐。是否可以强制以这种方式行事?或者如果不是,那么以这种方式进行模拟的最佳方法是什么?TableForm
TableForm
问问题
1160 次
3 回答
3
您可以使用Grid
和Alignment
。这是一种方法:
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 回答