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

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

Более сложные случаи

Надписи, охватывающие несколько колонок. Чтобы создать такую надпись, нужно на месте соответствующей графы таблицы записать команду \multicolumn. У этой команды три обязательных аргумента:

  1. Количество колонок, охватываемых нашей " нестандартной" графой.
  2. "Преамбула" нашей графы. В качестве таковой может выступать буква l, r или c (текст в графе был прижат влево, вправо или центрирован), возможно, с символами | слева или справа, если мы хотим, чтобы графа была ограничена вертикальными линейками.
  3. Текст, записываемый в графу.

Пример — в таблице (1)

\begin{tabular}{|l|l|l|l|}
\hline
\multicolumn{4}{|c|}{\textbf{Популярные напитки}}\\
\hline
Название & Старый мельник & Бочкарев & Очаковское\\
\hline
Атрибут& Душевное & Правильное & Живительное\\
\hline
Цена & \multicolumn{2}{c|}{15} & \multicolumn{1}{c|}{14}\\
\hline
\end{tabular} ( 1)

Получается эта таблица таким образом (обратите внимание, что в строке с ценами в командах \multicolumn вертикальная черта стоит справа от c, но не стоит слева):

\begin{tabular}{|l|l|l|l|}
\hline
\multicolumn{4}{|c|}{\textbf{Популярные напитки}}\\
\hline
Название & Старый мельник & Бочкарев & Очаковское\\
\hline
Атрибут&Душевное & Правильное & Живительное\\
\hline
Цена & \multicolumn{2}{c|}{15} & \multicolumn{1}{c|}{14}\\
\hline
\end{tabular}

Если таблица, в которой вы используете \multicolumn, является к тому же еще и линованной, то возможностей команды \hline для рисования горизонтальных отрезков может не хватить: иногда бывает нужен горизонтальный отрезок, простирающийся не на всю ширину таблицы, а охватывающий только часть ее колонок. Для рисования таких отрезков предусмотрена команда \cline. Как и \hline, ее нужно давать сразу после \\, но она имеет обязательный аргумент - номера первой и последней из колонок, охватываемых горизонтальной чертой, разделенные знаком "минус". Примеры использования команды \cline будут даны ниже .

Абзацы в графах таблицы. Иногда требуется, чтобы в графе таблицы стояла не строка, а абзац текста, переносы и разрывы строк в котором находятся автоматически. Чтобы этого добиться, надо в преамбуле вместо буквы l, c или r, описывающей структуру колонки, написать p{...}, где вместо многоточия должна быть указана ширина колонки (в TeX'овских единицах ). Вот как можно представить в виде таблицы известную шутку М.М.Жванецкого:

\begin{tabular}{|p{5cm}|p{5cm}|}
\hline
\multicolumn{2}{|c|}{\large\textbf{Я видел раков}}\\
\hline
Вчера: & Сегодня: \\
Маленькие, но по три рубля, но очень
маленькие, но по три, но очень маленькие. & Большие, но по пять рублей, но
большие,
по пять рублей, но очень большие,
но по пять.\\
\hline
\end{tabular}
\begin{tabular}{|p{5cm}|p{5cm}|}
\hline
\multicolumn{2}{|c|}{\large\textbf{Я видел раков}}\\
\hline
Вчера: & Сегодня: \\
Маленькие, но по три рубля, но очень
маленькие, но по три, но очень маленькие. & Большие, но по пять рублей, но
большие,
по пять рублей, но очень большие,
но по пять.\\
\hline
\end{tabular}

По умолчанию абзацы в графах таблицы печатаются выровненными, но без абзацного отступа; если абзацный отступ нужен, начните абзац с установки необходимого значения параметра \parindent ; если выравнивание не нужно, дайте команду \raggedright ; одним словом, вы можете проделывать с этими абзацами все манипуляции, описанные в разд.3.6 .

Из этого правила есть одно важное исключение: для принудительного разрыва строки в абзацах, являющихся графами таблицы, вместо команды \\ надо использовать команду \tabularnewline (команда \\ в окружениях {tabular} и {array} означает "перейти к новой строке таблицы").

Что такое колонка? При работе с линованными таблицами возникает вопрос, как LaTeX понимает слова "одна колонка"? Пусть, например, преамбула таблицы имеет вид ||c|ll||r|l|l, и мы в одной из строк написали, скажем,

Что-то&\multicolumn{1}{r}{Что-то еще}&&&И еще&Еще\\"

Напечатается ли в этой графе вертикальный отрезок между первой и второй колонками? Другой пример: пусть в таблице с той же преамбулой какая-то из строк имеет вид

Слово & Еще слово & Еще одно\\

(стало быть, заканчивается эта строка преждевременно); сколько вертикальных отрезков будет напечатано в конце этой строки? Ответ таков. Преамбула делится на части, соответствующие колонкам. Если в преамбуле присутствуют только буквы l, c, r или p, то каждая такая часть — это просто соответствующая буква (p — вместе с выражением после нее: p{...} ). Если же, кроме этого, в преамбуле присутствуют вертикальные черточки между буквами или так называемые at-выражения (о них речь пойдет ниже), разделение преамбулы на колонки происходит по таким правилам:

  • в каждой из колонок присутствует одна и только одна из букв l, c, r или p (последняя — вместе с выражением "{...}");
  • каждая колонка, кроме, возможно, первой, начинается с буквы.

В нашем примере, в частности, колонки устроены так:

{\samepage
\begin{tabbing}
Четвертая колонка\quad\=\kill
Преамбула        \>\ttfamily\obeyspaces{}||c|ll||r|l|l\\
Первая колонка   \>\ttfamily\obeyspaces{}||c|\\
Вторая колонка   \>\ttfamily\obeyspaces{}    l\\
Третья колонка   \>\ttfamily\obeyspaces{}     l||\\
Четвертая колонка\>\ttfamily\obeyspaces{}        r|\\
Пятая колонка    \>\ttfamily\obeyspaces{}          l|\\
Шестая колонка   \>\ttfamily\obeyspaces{}            l\\
\end{tabbing}
}

Поэтому в конце графы таблицы с такой преамбулой, оборванной после третьей колонки, будут напечатаны два вертикальных отрезка, поскольку они принадлежат третьей колонке. А если на месте второй графы такой таблицы написано "Что-то&\multicolumn{1}{r}{Что-то еще}", то вертикальный отрезок между первой и второй колонками также будет напечатан: этот отрезок является принадлежностью первой колонки, и команда \multicolumn, меняющая оформление второй колонки, отменить его не может.

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