4

TableFormオプション付きは、 MathematicaTableHeadingsフロントエンドで見栄えの良い古典的な表をすばやく簡単に表示する方法です。唯一の問題は、見出しが左に配置されているが、テーブルの内容が右に配置されているようなテーブルを表示するのが一般的であるということです。このように振る舞うことを強制することは可能ですか?または、そうでない場合、そのアナログをこのように動作させるための最良の方法は何ですか?TableFormTableForm

4

3 に答える 3

3

Gridとを使用できますAlignment。これが1つの方法です:

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

これを行う1つの方法は次のようです。

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"}}]

与える:

変更されたTableForm

別の方法は、代替関数を定義することです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 に答える