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

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

Аннотация: В настоящей лекции рассматриваются два основных способа, предоставляемых TeX'ом для печати текста с выровненными колонками (например, таблиц).

При работе на пишущей машинке печать таблиц, состоящих из нескольких колонок, не вызывала особых проблем: все литеры имели одинаковую ширину. Однако полиграфические шрифты (в частности, используемые TeX'ом) являются, как правило, "пропорциональными" (каждая буква имеет свою ширину), и в этом случае добиться выравнивания в колонках сложнее.

В настоящей лекции мы рассмотрим два основных способа, предоставляемых TeX'ом для печати текста с выровненными колонками (например, таблиц). Начнем с менее мощного, но более простого — имитации табулятора.

Имитация табулятора

Элементарные средства

Табулятор имитируется в LaTeX'е с помощью окружения {tabbing}. При печати таблиц с помощью этого окружения пользователь сам задает места, в которых должна начаться очередная колонка. Конкретно это выглядит так. При наборе первой строки этого окружения можно в любой момент поставить команду \= в окружении {tabbing} - она отмечает очередное место, с которого начинается новая колонка ("позицию табуляции"). Это место (расстояние от начала строки) запоминается, и в дальнейшем можно с помощью команды \> "перескочить" к очередной позиции табуляции — текст, следующий после этой команды, будет набираться, начиная с позиции табуляции. Строки разделяются командой \\. Рассмотрим это на примере:

\begin{tabbing}
начало\quad\=середина
\quad\=конец\\
раз\>два\>три\\
 раз\> два\> три\\
начинаем\>
продолжаем\>
заканчиваем\\
\end{tabbing}
\begin{tabbing}
начало\quad\=середина
\quad\=конец\\
раз\>два\>три\\
 раз\> два\> три\\
начинаем\>
продолжаем\>
заканчиваем\\
\end{tabbing}

В первой строке мы задали две позиции табуляции двумя командами \= (на всякий случай мы разделили дополнительными пробелами слова в первой строке и, тем самым, наши позиции табуляции; отсюда команды \quad ). Первая строка завершается командой \\, а во второй строке мы начинаем установленными позициями табуляции пользоваться. Слово "раз" напечаталось с начала строки (каждая строка начинается с крайней левой позиции, если отсутствует команда вроде \>, задающая переход к новой позиции). Далее идет команда \> — " перейти на следующую позицию табуляции". И действительно, следующее после нее слово "два" начинается со второй позиции — как раз там же, где начиналось слово "середина". Перед словом "три" стоит еще одна команда \> — оно печатается с третьей позиции, как раз под словом " конец", с начала которого мы эту позицию и определили. Третья строка ничем не отличается от четвертой, хотя в исходном тексте между командами \> и словами стоят пробелы. Дело в том, что пробелы после команд \> игнорируются. Наконец, в четвертой строке слова при печати наложились друг на друга. Это и не удивительно: окружение {tabbing} исправно начинает очередную порцию текста с той позиции, которую мы ему указали, но при этом не проверяет, сколько места этот текст реально займет и не будут ли перекрываться колонки — за это целиком отвечает тот, кто текст готовит. Видимо, в данном случае следовало оставить побольше места при определении позиций табуляции (например, написать в первой строке \qquad вместо \quad ).

Кроме установки дополнительных интервалов экспериментальным путем, есть и другой способ правильно проставить позиции табуляции. Именно, если закончить строку не командой \\, а командой с суровым названием \kill, то эта строка не будет напечатана, но все позиции табуляции, установленные в ней, будут запомнены LaTeX'ом, и их можно будет использовать в последующих строках. В приведенном выше примере можно было бы написать так:

\begin{tabbing}
начинаем \=продолжаем \=
заканчиваем\kill
начало\>середина\>конец\\
\bfseries раз\>
\itshape два\>три\\
начинаем\>продолжаем\>
заканчиваем\\
\end{tabbing}
\begin{tabbing}
начинаем \=продолжаем \=
заканчиваем\kill
начало\>середина\>конец\\
\bfseries раз\>
\itshape два\>три\\
начинаем\>продолжаем\>
заканчиваем\\
\end{tabbing}

Обратите внимание, что при установке позиций табуляции в первой (не печатающейся) строке мы сделали пробелы между концом слова и командой \= (иначе в последней строке слова бы опять слились: нам нужно, чтобы первая позиция табуляции не была впритык к концу слова "начинаем"). Заметьте также, что во второй строке мы убрали команды \quad ; можно было бы их и оставить — на внешний вид таблицы это бы никак не повлияло, поскольку позиции табуляции уже установлены и лишние пробелы перед очередной командой \> никого не волнуют. По этой же причине мы не потрудились оставить пробелы между словами и \> в строке " начинаем, продолжаем, заканчиваем". Наконец, обратите внимание и на то, как мы меняли шрифт в строке "раз, два, три": слово "три" переключилось на обычный шрифт само собой. Это объясняется тем, что часть текста окружения {tabbing}, расположенная между двумя командами \> или \=, образует группу.

Внутри окружения {tabbing} используется команда \=, которая, как мог заметить читатель, обычно имеет совсем другой смысл — постановка диакритического знака над буквой. Команды \' и \` также имеют внутри этого окружения особый смысл, о котором пойдет речь ниже. Поэтому, если внутри {tabbing} нам понадобился диакритический знак (скажем, над буквой e), то надо руководствоваться такой таблицей:

Таблица 6.1. Внутри окружения
вместо надо набирать
\=e \a=e
\'e \a'e
\`e \a`e
Нина Казачек
Нина Казачек
Василий Майоров
Василий Майоров