Как выровнять первый столбец и первый ряд в Grid независимо от других? - PullRequest
2 голосов
/ 17 августа 2011

Как указать отдельные выравнивания для первого столбца (исключая первую строку в этом столбце), первой строки (исключая первый элемент в этой строке) и все другие элементы в Grid? Желательно делать это только с опцией Alignment из Grid, сохраняя жесткий контроль, заданный Item[] с опцией Alignment для более жестких целей.

P.S. Этот вопрос возник из предыдущего вопроса , но я хотел бы получить индивидуальный контроль над выравниванием горизонтальных и вертикальных заголовков таблицы здесь.

Ответы [ 3 ]

4 голосов
/ 17 августа 2011

Я нашел несколько способов достичь того, чего я хочу.Наиболее прямое решение:

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

3 голосов
/ 17 августа 2011

Если я понимаю ваши требования, я бы предпочел сделать это с 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

3 голосов
/ 17 августа 2011

Похоже, 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}

...