Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 59
Текст из файла (страница 59)
Следующий за \’ текст печатается, начиная слевого края текущей колонки (то есть от положения текущего табулятора).\‘ сдвигает весь последующий текст в строке к правой границе страницы; послекоманды \‘ вплоть до конца строки не должно быть команд \>, \= или \␣.28312.2. Процедура tabular\pushtabs сохраняет текущее положение табуляторов в процедуре tabbing длядальнейшего использования.\poptabs восстанавливает табуляцию, предварительно сохранённую командой\pushtabs.
Команды \pushtabs и \poptabs могут быть парами вложены другв друга.Процедуры tabbing не могут быть вложены друг в друга, даже если внутренняя процедура заключена в парбокс. Нужно также учитывать, что команды табуляции ограничивают область действия деклараций так же, как и фигурные скобки или \end{tabbing}. Любая другая процедура, содержащаяся внутриtabbing, не может содержать ни одну из этих команд.Следует обратить внимание, что команды \=, \’, \‘, \-, имеющие смысл внепроцедуры tabbing, внутри неё переопределены.
Первые три из них вне tabbingиспользуются для печати символов с диакритическими знаками. Внутри tabbingсоответствующие диакритические знаки печатают команды\a=, \a’, \a‘Команда \- вне tabbing служит для указания точки переноса слова по слогам.Внутри tabbing перенос по слогам невозможен. Исходный смысл команд \=, \’,\‘, \- восстанавливается внутри парбокса, если он содержится в теле процедурыtabbing.12.1.1.Параметры настройки\tabbingsep — расстояние между колонками.12.2.Процедура tabularДля форматирования сложных таблиц или схем чаще используют процедуруtabular.
Она почти полностью аналогична процедуре array, описанной в главе 6, но в отличие от неё работает в любой моде, а не только в математической.Процедура tabular позволяет легко рисовать границы таблиц, проводить разделительные вертикальные и горизонтальные линии между их элементами. Строки в теле процедуры разделяются командой \\ или \tabularnewline, а каждаястрока обрабатывается в строковой моде, то есть не переносится автоматическина следующую строку, если не вмещается в текущую.Следующая таблицаРомановКутузовКурчатовописана во входном файле так:ПётрМихаилИгорьимператоргенералфизик284Глава 12. Таблицы\begin{center}\begin{tabular}{|l|c||r|}Романов & Пётр& императорКутузов & Михаил & генералКурчатов & Игорь & физик\end{tabular}\end{center}\\\\\\\hline\hline\hline\hlineЗдесь процедура center центрирует таблицу на странице по горизонтали.
Саматаблица создана процедурой tabular. Её аргумент {|l|с||r|} называют преамбулой таблицы. Буквы l, c, r в преамбуле таблицы происходят от сокращенияанглийских слов left, center, right. Они называются указателями колонок и означают, что в таблице должно быть три колонки, причём содержимое двух крайнихдолжно быть выровнено соответственно по левому и правому краю колонок, а всредней колонке — расположено по центру. Символы | показывают, что междуколонками нужно провести вертикальные линии на всю высоту таблицы. Горизонтальные линии проводит команда \hline.Как процедура tabular может формировать колонки переменной ширины,показывает ещё один пример.
Следующая пара таблицj’tuilImparfaitétaisétaisétaitnousvousilsétionsétiezétaientj’j’j’Plus-que-parfaitavaisétéavaisétéavaitéténousvousilsavionsaviezavaientétéétéétéсоздана одной процедурой tabular:\begin{tabular}{|ll|l|lll|} \cline{1-2} \cline{4-6}\multicolumn{2}{|c|}{\slshape Imparfait}& \hspace{7mm} &\multicolumn{3}{c|}{\slshape Plus-que-parfait} \\\cline{1-2} \cline{4-6}j’& \’{e}tais&& j’& avais& \’{e}t\’{e}\\tu& \’{e}tais&& j’& avais& \’{e}t\’{e}\\il& \’{e}tait&& j’& avait& \’{e}t\’{e}\\&&&&&\\nous & \’{e}tions && nous & avions & \’{e}t\’{e}\\vous & \’{e}tiez&& vous & aviez& \’{e}t\’{e}\\ils & \’{e}taient && ils & avaient & \’{e}t\’{e}\\\cline{1-2} \cline{4-6}\end{tabular}Пробел длиной 7 мм между двумя частями таблицы в процедуре описан как пустая третья колонка единой таблицы.
Ширина колонки определяется командой28512.2. Процедура tabular\hspace{7mm} в первой строке исходного текста таблицы. Команды \cline проводят горизонтальные линии через колонки (в данном случае через колонки 1–2и 4–6). Команда \multicolumn объединяет элементы нескольких колонок в одной строке в одну колонку, позволяя, как в данном примере, создать общий заголовок. Её первый аргумент показывает, сколько колонок нужно объединить.Второй аргумент замещает часть аргумента самой процедуры tabular, соответствующий объединённой колонке; он должен содержать одну и только одну буквуl, c или r и, возможно, символы |.
Третий аргумент собственно и есть текст вобъединённой колонке.Если аргумент процедуры содержит символы |, не совсем очевидно, какие изних будут замещены вторым аргументом команды \multicolumn. В этом случаедействует правило, что часть аргумента процедуры, соответствующая отдельнойколонке, начинается с буквы l, c или r. Поэтому в последнем примере второйаргумент у первой из двух команд \multicolumn начинается с символа |, а увторой — с буквы c (впрочем, в данном случае ничего бы не изменилось, если быон также начинался с |).Процедура tabular производит объект, называемый боксом (глава 9).
Бокс,созданный процедурой tabular, можно вставить в середину абзаца или слова какобычную букву, но это будет выглядеть очень странно. Лучше его разместить вотдельной строке, например в её центре; именно это делает процедура center.LATEX сам увеличит вертикальный размер строки до необходимой величины, ноесли высота строки превысит свободное расстояние до нижнего края страницы,LATEX выдаст соответствующее предупреждение «Overfull \vbox»2 и перенесётбокс на новую страницу. Полностью проблему размещения больших боксов настранице решают процедуры figure и table, рассмотренные в главе 11.Приведём теперь полное описание процедур типа tabular.
Процедуры\begin{array}[vpos]{cols}\begin{tabular}[vpos]{cols}\begin{tabular*}{width}[vpos]{cols}lineslineslines\end{array}\end{tabular}\end{tabular*}производят бокс, состоящий из последовательности строк lines, разделённых нанесколько ячеек, выровненных по вертикальным колонкам. Процедуры tabularи tabular* могут использоваться в любой моде, а процедура array только вматематической.
Назначение их аргументов описано ниже.width указывает ширину бокса, создаваемого процедурой tabular*. Между колонками должен быть вставлен пробел растяжимой длины, чтобы растянутьтаблицу до указанной ширины; см. описание команды \extracolsep ниже.vpos указывает способ позиционирования таблицы в строке, где таблица будетнапечатана; может принимать следующие значения:t — выравнивание по верхней строке (верхняя строка в таблице будет расположена на одном уровне со строкой, куда помещена таблица);2Переполнение вертикального бокса.286Глава 12.
Таблицыc — выравнивание по центру таблицы (используется по умолчанию);b — выравнивание по нижней строке.cols указывает способ форматирования колонок и называется преамбулой таблицы. Состоит из последовательности перечисленных ниже указателей колоноки межколоночного материала:l — колонка с выравниванием по левой границе;r — колонка с выравниванием по правой границе;c — колонка с выравниванием по центру;| — вертикальная линия между колонками на всю высоту таблицы.@{text} — вставка текста между колонками во все строки.
Этот указательназывается @-выражением. Аргумент text @-выражения обрабатывается вматематической моде в процедуре array и в строковой моде в процедурахtabular и tabular*; он рассматривается как подвижный аргумент, поэтомухрупкие команды внутри него должны быть защищены командой \protect.@-выражение подавляет вертикальный пробел, который обычно вставляется между колонками; любой требуемый пробел между вставляемым текстом и соседними ячейками должен быть включён в text.
Чтобы вместостандартного расстояния между двумя колонками установить пробел длины wd, достаточно вставить команду @{\hspace{wd}} между соответствующими указателями колонок. Команда\extracolsep{wd}в @-выражении вставляет дополнительный пробел длины wd с левой стороны всех последующих колонок, пока его длина не будет изменена другойкомандой \extracolsep (однако она не вставляет пробел слева от первойколонки). В отличие от обычного межколоночного пробела, этот дополнительный пробел не подавляется @-выражением.