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

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

Дополнительные возможности

Выше мы описывали возможности печати таблиц, доступные " чистому" LaTeX'у (без подключения дополнительных стилевых пакетов). Ряд стилевых пакетов, входящих в комплект поставки LaTeX'а, позволяет добиться дополнительных интересных эффектов.

Пакет array

В этом разделе мы рассказываем о различных мелких (но нередко полезных) дополнительных возможностях, открывающихся при подключении стилевого пакета array.

Итак, предположим, что этот пакет подключен. Что нового вы сможете сделать?

При пользовании командой \hline горизонтальные линейки иногда слишком плотно примыкают к тексту (особенно если текст содержит прописные буквы). В " чистом" LaTeX'е для борьбы с этим надо либо писать

\renewcommand{\arraystretch}...

либо вставлять в каждую строку по дополнительной распорке. При подключении пакета {array} появляется и более простой способ: надо присвоить ненулевое значение параметру \extrarowheight. Это — величина, которая добавляется к высоте каждой строки таблицы. Этому параметру можно присваивать значения так же, как и любому другому параметру со значением длины; по умолчанию его величина равна нулю, для лучшего отделения линеек от текста хорошо присвоить ему значение 2-3 пункта.

Если вы пользовались окружением {tabular} с необязательным аргументом t, задающим выравнивание таблицы как " буквы" по верхней строке, то могли обратить внимание, что это выравнивание нарушается, если таблица начинается с горизонтальной линейки:

\begin{tabular}[t]{rr}
а & б \\в & г
\end{tabular}
\begin{tabular}[t]{|rr|}
\hline а & б \\в & г\\
\hline
\end{tabular}
\begin{tabular}[t]{rr}
а & б \\в & г
\end{tabular}
\begin{tabular}[t]{|rr|}
\hline а & б \\в & г\\
\hline
\end{tabular}

Чтобы выравнивание происходило не по линейке, а по первой строке текста, надо задать верхнюю линейку командой \firsthline, а не \hline.

\begin{tabular}[t]{rrrr}
а & б & в & г \\
д & е & ж & з
\end{tabular}
\begin{tabular}[t]{|rrrr|}
\hline а & б & в & г \\
д & е & ж & з\\ \hline
\end{tabular}\\[1in]
\begin{tabular}[t]{rrrr}
а & б & в & г \\
д &е & ж & з
\end{tabular}
\begin{tabular}[t]{|rrrr|}
\firsthline а & б & в & г \\
д & е & ж & з\\ \hline
\end{tabular}

\begin{tabular}[t]{rrrr}
а & б & в & г \\
д & е & ж & з
\end{tabular}
\begin{tabular}[t]{|rrrr|}
\hline а & б & в & г \\
д & е & ж & з\\ \hline
\end{tabular}\\[1in]
\begin{tabular}[t]{rrrr}
а & б & в & г \\
д & е & ж & з
\end{tabular}
\begin{tabular}[t]{|rrrr|}
\firsthline а & б & в & г \\
д & е & ж & з\\ \hline
\end{tabular}

Аналогично, чтобы при пользовании {tabular} с необязательным аргументом b выравнивание таблицы как целого шло по нижней строке текста, а не по нижней линейке, надо нижнюю горизонтальную линейку задать командой \lasthline, а не \hline.

Как мы знаем, в преамбуле окружения {tabular} (а также {array} ) могли стоять буквы l, r, c или выражение p{...}, обозначающие тип колонки, а между ними — вертикальные черточки или at-выражения. Пакет {array} добавляет кое-что к этому списку.

Во-первых, при подключении этого пакета в преамбуле, наряду с выражением p{...}, можно пользоваться выражениями m{...} и b{...}. Как и p{...}, они указывают, что в колонке стоит абзац текста ширины, заданной в фигурных скобках. Однако в графах абзац, заданный с помощью b{...}, выравнивается по своей нижней строке, абзац, заданный с помощью m{...} - по середине своей высоты, а абзац, заданный с помощью p{...}, всегда выравнивался по своей верхней строке.

\begin{tabular}{p{.9in}m{.9in}b{.9in}}
Все выше, и выше, и выше! & Все выше, и выше, и выше! & Все выше, и
выше, и выше!\\
\end{tabular}
\begin{tabular}{p{.9in}m{.9in}b{.9in}}
Все выше, и выше, и выше! & Все выше, и выше, и выше! & Все выше, и
выше, и выше!\\
\end{tabular}

Наряду с at-выражениями, пакет {array} позволяет использовать в преамбуле еще и !-выражения. Именно, между буквами, обозначающими колонки, можно, наряду с вертикальными черточками и at-выражениями, написать !{...}, где на месте точек стоят какие-то TeX'овские команды и/или текст. Эта конструкция оказывает то же действие, что и at-выражение, но при этом, в отличие от at-выражения, не подавляет интервал между колонками. Поэтому !-выражение удобно использовать для увеличения интервала между колонками: в таблице с преамбулой

{rc!{\hspace{2pt}}cl}

интервал между двумя центрированными колонками будет увеличен на два пункта.

Другое возможное применение !-выражений — печать линованных таблиц, в которых вертикальные линейки, разделяющие колонки, имеют разную ширину. Если, например, мы хотим, чтобы какая-то из вертикальных линеек имела ширину 1pt, а не \arrayrulewidth, надо в преамбуле вместо вертикальной черточки |, обозначающей эту линейку, написать !{\vrule width 1pt\relax}.

Наконец, еще одна интересная возможность, предоставляемая пакетом {array}, — это автоматическая вставка TeX'овских команд в начале и/или конце колонки. Именно, если в преамбуле непосредственно перед любой из букв l, c, r, t, m или b, обозначающих тип колонки, вставить выражение

>{команды}

то команды будут автоматически добавляться в начало соответствующей колонки. Это может пригодиться, если вам нужно сменить шрифт в одной из колонок:

\begin{tabular}{|>{Генрих }l|>{\slshape}l|}
\hline
II & 1519--1559\\III & 1551--1589\\
IV & 1553--1610\\ \hline
\end{tabular}
\begin{tabular}{|>{Генрих }l|>{\slshape}l|}
\hline
II & 1519--1559\\III & 1551--1589\\
IV & 1553--1610\\ \hline
\end{tabular}

Можно также после буквы, обозначающей тип колонки, или после конца p-, m-, или b-выражения, написать

<{команды}

чтобы команды были добавлены в конец колонки. Эта конструкция полезна, если какие-то из колонок в таблице, оформленной как {tabular}, должны набираться в математическом режиме — достаточно поставить в начале и конце этой колонки по знаку доллара. Пример:

\begin{tabular}{l>{$}l&lt;{$}}
квадрат суммы & (x+y)^2\\
квадрат разности & (x-y)^2\\
сумма кубов & x^3+y^3
\end{tabular}
\begin{tabular}{l>{$}l<{$}}
квадрат суммы & (x+y)^2\\
квадрат разности & (x-y)^2\\
сумма кубов & x^3+y^3
\end{tabular}
Нина Казачек
Нина Казачек
Василий Майоров
Василий Майоров