Опубликован: 07.02.2007 | Доступ: свободный | Студентов: 4014 / 1341 | Оценка: 4.56 / 3.95 | Длительность: 23:09:00
Специальности: Художник
Лекция 6:

Печать текста с выравниванием

Таблицы

При пользовании окружением {tabbing} вы должны самостоятельно следить, чтобы разные колонки не накладывались друг на друга. Можно, однако, передать эти заботы программе: TeX предоставляет возможности для печати таблиц, в которых ширина колонок выбирается автоматически (по максимальной ширине их содержимого). В LaTeX'е для этих целей используются окружения {tabular} (для набора таблиц с текстом) и {array} (для набора таблиц из формул). Помимо автоматизированного определения ширины колонки, эти окружения дают возможность печатать разлинованные таблицы, таблицы, в которых некоторые записи охватывают несколько колонок, и т.д. В "Как набирать формулы" уже шла речь про окружение {array} ; здесь мы подробно разберем, как работает {tabular} ; все возможности этого окружения, о которых идет речь в этой лекции, доступны и для {array}, и ниже мы дадим примеры их использования.

Простейшие случаи

Окружение {tabular} задает таблицу. Окружению необходимо задать обязательный аргумент — преамбулу таблицы. Преамбула, помещаемая в фигурных скобках непосредственно после \begin{tabular}, представляет собой, в простейшем случае, последовательность букв, описывающих структуру колонок таблицы (по букве на колонку). Буквы эти могут быть такими:

  • l означает колонку, выровненную по левому краю;
  • r означает колонку, выровненную по правому краю;
  • c означает колонку с центрированным текстом.

Между \begin{tabular} (с преамбулой) и закрывающей окружение командой \end{tabular} располагается собственно текст таблицы. В нем команда \\ разделяет строки таблицы, а знак "&", называемый " амперсендом", разделяет колонки таблицы внутри одной строки (так что текст между двумя ближайшими амперсендами описывает "одну графу" таблицы). Пробелы в начале или конце "графы" таблицы игнорируются. Если вы прочли мелкий шрифт в разд. 2.4.2, то могли заметить буквальное совпадение с тем, что там написано про окружение {array}. Разница лишь в том, что содержимое граф таблицы обрабатывается в окружении {tabular} как текст, а в окружении {array} — как формулы. Вот первый пример:

\begin{tabular}{lc}
Тип перечня & нумерация \\[5pt]
\ttfamily itemize & нет\\
\ttfamily enumerate & есть\\
\ttfamily description & нет\\
\end{tabular}
\begin{tabular}{lc}
Тип перечня & нумерация \\[5pt]
\ttfamily itemize & нет\\
\ttfamily enumerate & есть\\
\ttfamily description & нет\\
\end{tabular}

Обратите внимание на две вещи. Во-первых, команда \\, завершающая первую строку, дана с необязательным аргументом. Он задается так же и имеет тот же смысл, как если бы эта команда была внутри абзаца или окружения {tabbing}: после строки вставляется дополнительный вертикальный промежуток (кстати, между строками таблицы, определенной с помощью окружения {tabular}, разрыва страницы никогда не происходит, так что в этом окружении у команды "\\" варианта "со звездочкой" нет). Во-вторых, команда \ttfamily всякий раз меняла шрифт только в одной графе таблицы, не действуя на соседние. Это объясняется тем, что графа таблицы образует группу, так что любые изменения параметров (в том числе текущего шрифта), проведенные в одной графе, не влияют на остальные.

Прежде чем мы начнем говорить о более сложных вещах, скажем о том, как окружение {tabular} взаимодействует с текстом вне его. Подобно окружению {picture}, оно не начинает печать с новой строки и не завершает текущего абзаца. Вся таблица, порождаемая этим окружением, рассматривается TeX'ом как одна большая буква; если окружение {tabular} встретилось в середине абзаца, эта "буква" будет помещена в строку (соседние строки раздвинутся, чтобы она поместилась), и результат будет выглядеть некрасиво. Если такое размещение текста не входит в ваши планы, начинайте окружение {tabular} между абзацами (после пустой строки или команды \par ). Удобно также бывает поместить окружение {tabular} внутрь окружения {center} или подобного ему: тогда LaTeX сам позаботится о пробелах между таблицей и окружающим текстом.

Иногда бывает полезно знать, как расположена "большая буква", представляющая собой окружение {tabular}, по отношению к строке, в которой она оказалась. Ответ: ее середина идет вровень с низом строки (точнее, с "базисной линией" — см. "Блоки и клей" ); соответственно, на половинной высоте находится и точка отсчета этой "буквы". Пример:

слово
\begin{tabular}{rr}
А & Б\\В & Г
\end{tabular}
слово
слово
\begin{tabular}{rr}
А & Б\\В & Г
\end{tabular}
слово

Можно также использовать окружение {tabular} с необязательным аргументом b : тогда "буква", созданная окружением {tabular}, будет выровнена по нижней строке; необязательный аргумент t дает выравнивание по верхней строке:

слово
\begin{tabular}{rr}
А & Б\\В & Г
\end{tabular}
\begin{tabular}[t]{rr}
А & Б\\В & Г
\end{tabular}
\begin{tabular}[b]{rr}
А & Б\\В & Г
\end{tabular}
слово
\begin{tabular}{rr}
А & Б\\В & Г
\end{tabular}
\begin{tabular}[t]{rr}
А & Б\\В & Г
\end{tabular}
\begin{tabular}[b]{rr}
А & Б\\В & Г
\end{tabular}

Как мог заметить читатель, необязательный аргумент в данном случае ставится перед обязательным.

Можно напечатать и разлинованную таблицу. Для этого применяются команды, создающие горизонтальные и вертикальные отрезки ("линейки" на полиграфическом жаргоне). Горизонтальные отрезки задаются с помощью команды \hline. Эта команда может следовать либо непосредственно после \\ (тогда отрезок печатается после строки, завершенной этим \\ ), либо непосредственно после \begin{tabular} и преамбулы (тогда отрезок печатается перед началом таблицы). Задаваемый командой \hline горизонтальный отрезок имеет ширину, равную общей ширине таблицы. Что касается вертикальных отрезков, то давайте для начала также ограничимся случаем, когда эти отрезки, разделяющие колонки таблицы, простираются на всю ее высоту, сверху донизу. Такие отрезки проще всего предусмотреть в преамбуле таблицы. До сих пор мы говорили, что преамбула таблицы - это последовательность из букв l, c или r, характеризующих колонки. На самом деле в преамбуле может присутствовать и информация, описывающая то, что должно быть между колонками таблицы. В частности, символ |, помещенный в преамбулу таблицы между буквами, описывающими колонки, задает вертикальную линейку, разделяющую эти колонки. Можно поставить символ | перед первой из этих букв или после последней — тогда вертикальная линейка будет ограничивать таблицу слева или справа. Несколько таких символов могут стоять подряд — тогда колонки будут разделяться не одинарной, а двойной (тройной и т.д.) вертикальной линейкой. Вот пример разлинованной таблицы:

\begin{tabular}{||l|l||}
\hline
слон & zilonis\\
бегемот & nilzirgs\\
лев & lauva\\
\hline
\end{tabular}
\begin{tabular}{||l|l||}
\hline
слон & zilonis\\
бегемот & nilzirgs\\
лев & lauva\\
\hline
\end{tabular}

Две команды \hline могут следовать одна непосредственно за другой; в этом случае на печати получатся две горизонтальные линейки, одна под другой, разделенные по вертикали небольшим интервалом. Если слева и справа таблица ограничена вертикальными линейками, то на пересечении крайних вертикальных линеек с горизонтальными на печати получится разрыв:

\begin{tabular}{|c|c|}
\hline
Северо-Запад & Северо-Восток\\
\hline
\hline
Юго-Запад & Юго-Восток\\
\hline
\end{tabular}
\begin{tabular}{|c|c|}
\hline
Северо-Запад & Северо-Восток\\
\hline
\hline
Юго-Запад & Юго-Восток\\
\hline
\end{tabular}

Позже мы расскажем, как от этого разрыва можно избавиться.

Нина Казачек
Нина Казачек
Василий Майоров
Василий Майоров