Более сложные случаи
Надписи, охватывающие несколько колонок. Чтобы создать такую надпись, нужно на месте соответствующей графы таблицы записать команду \multicolumn. У этой команды три обязательных аргумента:
- Количество колонок, охватываемых нашей " нестандартной" графой.
- "Преамбула" нашей графы. В качестве таковой может выступать буква l, r или c (текст в графе был прижат влево, вправо или центрирован), возможно, с символами | слева или справа, если мы хотим, чтобы графа была ограничена вертикальными линейками.
- Текст, записываемый в графу.
Пример — в таблице (1)
(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'овских единицах ).
Вот как можно представить в виде таблицы известную шутку М.М.Жванецкого:
Из этого правила есть одно важное исключение: для принудительного разрыва строки в абзацах, являющихся графами таблицы, вместо команды \\ надо использовать команду \tabularnewline (команда \\ в окружениях {tabular} и {array} означает "перейти к новой строке таблицы").
Что такое колонка? При работе с линованными таблицами возникает вопрос, как LaTeX понимает слова "одна колонка"? Пусть, например, преамбула таблицы имеет вид ||c|ll||r|l|l, и мы в одной из строк написали, скажем,
Что-то&\multicolumn{1}{r}{Что-то еще}&&&И еще&Еще\\" Напечатается ли в этой графе вертикальный отрезок между первой и второй колонками? Другой пример: пусть в таблице с той же преамбулой какая-то из строк имеет вид
Слово & Еще слово & Еще одно\\ (стало быть, заканчивается эта строка преждевременно); сколько вертикальных отрезков будет напечатано в конце этой строки? Ответ таков. Преамбула делится на части, соответствующие колонкам. Если в преамбуле присутствуют только буквы l, c, r или p, то каждая такая часть — это просто соответствующая буква (p — вместе с выражением после нее:p{...}). Если же, кроме этого, в преамбуле присутствуют вертикальные черточки между буквами или так называемые at-выражения (о них речь пойдет ниже), разделение преамбулы на колонки происходит по таким правилам:
- в каждой из колонок присутствует одна и только одна из букв l, c, r или p (последняя — вместе с выражением "{...}");
- каждая колонка, кроме, возможно, первой, начинается с буквы.
Поэтому в конце графы таблицы с такой преамбулой, оборванной после третьей колонки, будут напечатаны два вертикальных отрезка, поскольку они принадлежат третьей колонке. А если на месте второй графы такой таблицы написано "Что-то&\multicolumn{1}{r}{Что-то еще}", то вертикальный отрезок между первой и второй колонками также будет напечатан: этот отрезок является принадлежностью первой колонки, и команда \multicolumn, меняющая оформление второй колонки, отменить его не может.