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

Набор текста

Линейки

Линейки в простейшем виде

Один из часто встречающихся элементов полиграфического оформления — так называемые "линейки". Например, в книге, которую вы читаете, колонтитулы отделены линейкой от основной части страницы. В TeX'е линейкой (rule по-английски) называется любой черный прямоугольник. Для создания линеек в LaTeX'е используется команда \rule. У этой команды два обязательных аргумента: первый задает ширину прямоугольника-линейки, второй — высоту (оба этих размера должны быть заданы в используемых TeX'ом единицах измерения). Линейка, созданная командой \rule, рассматривается TeX'ом так же, как буква.

Если необходимо, чтобы созданный командой \rule прямоугольник был сдвинут по вертикали относительно уровня строки, надо воспользоваться командой \rule с необязательным аргументом. Этот аргумент — расстояние, на которое надо сдвинуть линейку по вертикали, — ставится перед обязательными; если расстояние положительное, то сдвиг идет вверх, если отрицательное, то вниз. Пример:

В этом месте, прямо посреди
абзаца, будет линейка
\rule{.5em}{15pt}, а
после нее продолжится
обычный текст. Сравните
также \rule{5pt}{5pt}
и \rule[-3pt]{5pt}{5pt}
В этом месте, прямо посреди
абзаца, будет линейка
\rule{.5em}{15pt}, а
после нее продолжится
обычный текст. Сравните
также \rule{5pt}{5pt}
и \rule[-3pt]{5pt}{5pt}

TeX'овские команды для генерации линеек

Рассмотренная нами LaTeX'овская команда \rule обладает рядом недостатков. Например, то обстоятельство, что создаваемые с ее помощью линейки воспринимаются TeX'ом как буквы, усложняют печать линейки, простирающейся во всю ширину страницы. Если между абзацами, т. е. в "вертикальном режиме", сказать \rule{10cm}{1pt}, то линейка начнется не с левого края текста, а после абзацного отступа: TeX решит, что с этой "буквы" начинается новый абзац. Кроме того, при печати линеек с помощью команды \rule необходимо заранее знать их длину и ширину, что не всегда удобно (например, если линейка должна идти во всю ширину текста, то надо точно знать, чему эта ширина равна, или, по крайней мере, как она обозначается в TeX'е). Избавиться от этого неудобства можно с помощью TeX'овских команд \hrule и \vrule. Команда \hrule употребляется в "вертикальном режиме" (между абзацами). Она создает линейку высотой 0.4pt и шириной, равной ширине колонки текста. Команда \vrule употребляется в "горизонтальном режиме" (внутри абзацев). Она создает линейку шириной 0.4pt, простирающуюся по высоте до максимальной высоты букв в содержащей ее строке (если в строке присутствуют буквы наподобие "у", опускающиеся ниже уровня строки, то и линейка будет опускаться ниже уровня строки). Пример:

\hrule\smallskip
Весь этот текст будет заключен
между двумя линейками.
Внутри абзаца тоже будет
\vrule{} линейка.

\Large Если буквы в строках
выше, то и линейка \vrule{}
будет больше. \smallskip\hrule
\hrule\smallskip
Весь этот текст будет заключен
между двумя линейками.
Внутри абзаца тоже будет
\vrule{} линейка.

\Large Если буквы в строках
выше, то и линейка \vrule{}
будет больше. \smallskip\hrule

Если вас не устраивает, что генерируемая командой \hrule линейка имеет высоту 0.4pt, то требуемую вам высоту можно указать в явном виде. Например, для задания линейки шириной во всю колонку и высотой 2 пункта надо написать (как водится, между абзацами) так:

\hrule height 2pt

Отсутствие символа \ перед \height не является опечаткой height - не команда, а одно из так называемых " ключевых слов" TeX'а, наподобие уже встретившихся нам ранее слов plus и minus ). Для явного задания ширины линейки, генерируемой командой \vrule, используется ключевое слово width:

\vrule width 2mm

В принципе можно указывать при команде \hrule не только высоту, но и ширину, а при команде \vrule - не только ширину, но и высоту, но в таком случае обычно проще воспользоваться LaTeX'овской командой \rule.

Если после команды \hrule или \vrule в тексте идет слово, совпадающее с одним из используемых этими командами ключевых слов (то бишь height, width или depth, о котором у нас речи не было), то это слово будет воспринято TeX'ом как ключевое, что приведет к сообщению об ошибке. В русском тексте вероятность такого стечения обстоятельств исчезающе мала, но если вы хотите, чтоб неприятностей не было с гарантией, то после чего-нибудь вроде \hrule height 2mm. пропустите строку (между абзацами это ничего не испортит), а после команды наподобие \vrule width 2mm поставьте еще команду \relax, означающую " ничего не делать".

Невидимые линейки

Высота и/или ширина линейки может быть и нулевой. Линейки нулевой высоты или ширины не печатаются, но тем не менее могут оказать влияние на вид текста. Например, линейка нулевой ширины и ненулевой высоты занимает место по вертикали; если ее высота больше высоты букв в строке, то высота строки, содержащей эту невидимую линейку, увеличится:

Для того, чтобы раздвинуть две
строки, можно в одну из них
поместить невидимую
линейку\rule{0pt}{5mm} нулевой
ширины и ненулевой высоты.
Для того, чтобы раздвинуть две
строки, можно в одну из них
поместить невидимую
линейку\rule{0pt}{5mm} нулевой
ширины и ненулевой высоты.

Один частный случай линейки нулевой ширины настолько важен, что в TeX'е и LaTeX'е для такой линейки предусмотрена специальная команда \strut. Невидимая линейка, создаваемая этой командой, имеет нулевую ширину; высота же ее установлена автором LaTeX'а с таким расчетом, чтобы она была чуть выше максимальной высоты букв текущего шрифта и опускалась ниже уровня строки настолько, насколько могут опускаться буквы текущего шрифта. Например, в прямом светлом шрифте кегля 11 команда \strut создает линейку ширины 0, поднимающуюся над уровнем строки на 9.52pt и опускающуюся ниже уровня строки на 4.08 pt.

Линейки нулевой ширины и ненулевой высоты действуют подобно команде \vspace*. Смысл невидимых линеек в том, что они позволяют создать вертикальные или горизонтальные пробелы в таких ситуациях, когда \vspace или \hspace не помогают. Вот пример ситуации, когда возникает нужда в невидимых линейках. Пусть в нашем тексте мы

\linebreak подчеркнули \underline{три} \underline{слова}
\underline{подряд}
. Выглядит это не очень удачно: в словах с буквами вроде р, опускающимися ниже строки, линейки, подчеркивающие слово, также опускаются ниже строки, а хотелось бы, чтобы все эти линейки были на одном уровне. Выход из положения такой: добавить ко всем словам по невидимой букве, которая не занимает места по горизонтали, а по вертикали опускается на максимально возможное в текущем шрифте расстояние. В качестве такой буквы как раз и возьмем невидимую линейку, генерируемую командой \strut:

\underline{три\strut}
\underline{\strut слова}
\underline{подряд\strut}
\underline{три\strut}
\underline{\strut слова}
\underline{подряд\strut}

Как видите, \strut можно ставить хоть после слова, хоть перед ним (и даже посередине, если вы не запутаетесь с пробелами). Назначение этой команды в данном случае сводится к тому, чтобы не позволить линейке, подчеркивающей слово, подойти к этому слову слишком близко. Кстати, в переводе с английского слово strut- означает " распорка".

В "Как набирать формулы" рассказывалось про команду \mathstrut, выполняющую аналогичные функции в математических формулах.

Другие примеры использования невидимых линеек читатель найдет в "Оформление текста в целом" , посвященной набору таблиц; в "Блоки и клей" , посвященной " блокам", мы также встретимся с линейками.

Василий Майоров
Василий Майоров
Даврон Юсупалиев
Даврон Юсупалиев
Алексей Башинов
Алексей Башинов
Россия, Нижний Новгород, ННГУ им. Н.И. Лобачевского, 2014