如何独立于其他网格对齐Grid中的第一列和第一行?

时间:2011-08-17 11:20:57

标签: wolfram-mathematica mathematica-frontend

如何为第一列(不包括此列中的第一行),第一行(不包括此行中的第一行)和Grid中的所有其他元素指定单独的对齐方式?最好只使用Alignment Grid Item[]选项保留Alignment {{1}} {{1}}选项,以实现更紧密的目的。

P.S。这个问题来自previous question,但我希望能够在这里单独控制水平和垂直表格标题的对齐。

3 个答案:

答案 0 :(得分:4)

我找到了几种方法来实现我想要的。最直接的解决方案是:

Grid[Table[Row@(Range[a]), {a, 1, 4}, {7}], 
 Alignment -> {Right, 
   Automatic, {{{2, -1}, {1, 1}} -> Left, {{1, 1}, {2, -1}} -> 
     Center}}, Dividers -> {{2 -> True}, {2 -> True}}]

enter image description here

其他解决方案包括:

Grid[Table[Row@Range[a], {a, 1, 4}, {7}], 
 Alignment -> {{Left, {Right}}, 
   Automatic, {{1, 1}, {1, -1}} -> Center}, 
 Dividers -> {{2 -> True}, {2 -> True}}]
Grid[Table[Row@Range[a], {a, 1, 4}, {7}], 
 Alignment -> {Right, 
   Automatic, {1 -> Left, {{1, 1}, {2, -1}} -> Center}}, 
 Dividers -> {{2 -> True}, {2 -> True}}]
Grid[Table[Row@Range[a], {a, 1, 4}, {7}], 
 Alignment -> {Right, 
   Automatic, {1 -> Left, {{1, 1}, {1, -1}} -> Center}}, 
 Dividers -> {{2 -> True}, {2 -> True}}]
Grid[Table[Row@Range[a], {a, 1, 4}, {7}], 
 Alignment -> {Right, 
   Automatic, {{{1, 1}, {1, -1}} -> Center, 1 -> Left}}, 
 Dividers -> {{2 -> True}, {2 -> True}}]

enter image description here

答案 1 :(得分:3)

看起来Alignment使用与Background中的Grid相同的语法,因此在Options > Background的文档中查看Grid可能会有所帮助实例

例如,假设您要将第一行和第一列中的项目右上角和左下角的所有其他项目对齐,您可以执行类似

的操作
Grid[RandomInteger[10, {5, 5}], ItemSize -> {3, 3}, Frame -> All, 
 Alignment -> {Left, Bottom, {{1, 1} -> {Right, Top}}}]

grid with different alignment for item {1,1}

答案 2 :(得分:3)

如果我理解您的要求,我赞成使用Item执行此操作,如下所示:

x = Array[\[HappySmiley] &, {5, 5}];

x = ReplacePart[x, 
      i : Except[{1, 1}, {_, 1} | {1, _}] :> 
        Item[x~Extract~i, Alignment -> Left]
    ];

Grid[x, ItemSize -> {3, 3}, Frame -> All]

enter image description here