Набор текста
Специальные абзацы
В разделе, посвященном абзацам, уже упоминалось о том, как можно печатать текст без выравнивания по правому краю. Сейчас речь пойдет о других подобных случаях, когда требуются абзацы специального вида. Большинство описываемых в этом разделе способов верстки реализовано в виде окружений ; не забывайте, что всякое окружение ограничивает группу, так что если вам нужно будет не только получить текст специального вида, но и сменить шрифт, вы можете дать команду переключения шрифта (наподобие \itshape ) внутри окружения и не заботиться специально о восстановлении прежнего шрифта: вместе с окружением кончится и группа, и прежний шрифт восстановится автоматически.
Цитаты
Если вам нужно включить в текст цитату, пример, предупреждение и т.п., то удобно воспользоваться окружением quote. Это окружение набирает текст, отодвинутый от краев (полиграфист сказал бы: "втянутый". Пример:
![]() |
Каждый сознательный гражданин должен понимать, что \begin{quote} весьма небезопасно содержать экзотических животных в городской квартире. \end{quote} Поэтому подумайте, прежде чем покупать на рынке крокодила. |
Как вы можете заметить из этого примера, текст, оформленный окружением quote, не имеет абзацного отступа и отделяется от окружающего текста вертикальными промежутками. Если после \end{quote} дальнейший текст следует без пропуска строки, то на печати он начнется с новой строки, но без абзацного отступа (после включения цитаты продолжается прерванный абзац); если после \end{quote} пропустить строку, то после цитаты текст будет идти с абзацным отступом (если, разумеется, значение параметра \parindent не равно нулю).
Для длинных цитат, состоящих из нескольких абзацев, можно использовать окружение quotation. Оно полностью аналогично quote, за тем исключением, что в тексте, оформленном этим окружением, делается абзацный отступ.
Центрирование, выравнивание текста по краю
Для этих целей используются окружения center (для центрирования), а также flushleft и flushright (для выравнивания по левому и правому краю соответственно).
Внутри каждого из этих окружений можно в принципе набирать и самый обычный текст, стандартным образом разбитый на абзацы с помощью пустых строк, но при этом каждая строка получающегося "абзаца" будет центрирована (для окружения center) или выровнена по левому/правому краю (для окружений flushleft и flushright соответственно).
Окружение flushleft по своему действию практически эквивалентно команде \raggedright ; но вообще, конечно, все перечисленные окружения нужны не для создания абзацев столь странного вида, а для организации текста в виде последовательности строк, каждая из которых центрирована или сдвинута влево или вправо; для этого достаточно после каждой строки, которую вы хотите центрировать (или сдвинуть к краю), поставить команду \\ ; следующая строка будет принадлежать тому же абзацу, и, стало быть, опять же будет центрирована (сдвинута). А если вы не будете делать разбиения на строки командой \\, то это будет сделано автоматически, с появлением несколько странных абзацев. Примеры:
![]() |
\begin{flushleft} левый\\марш \end{flushleft} |
![]() |
\begin{flushright} наше дело\\ правое |
![]() |
\begin{center} а вот мы позиционируемся\\ в центристской части\\ политического спектра \end{center} |
Как и в случае с quote и quotation, если после команды \end, закрывающей любое из этих окружений, в исходном тексте идет пустая строка, то следующий абзац набирается LaTeX'ом с обычным абзацным отступом, в противном случае — без отступа.
Стихи
В принципе стихи можно набирать с помощью окружений flushleft или center, разделяя строки командой \\, а строфы, например, пустой строкой и командой \smallskip. Кроме того, в LaTeX'е для набора стихов предусмотрено специальное окружение verse. Строки в нем разделяются командой \\, а строфы — пустой строкой. При этом строки получаются выровненными по левому краю и отодвинутыми от левой границы текста. Если строка окажется слишком длинной, она будет перенесена на следующую строку (не исключено, что в каких-то словах будет сделан перенос) и сдвинута примерно на 15 пунктов вправо. Пример:
![]() |
\begin{verse} Здесь любит медведь\\ Иногда посидеть\\ И подумать: ``А чем бы такое заняться?'' \end{verse} |
Создатель LaTeX'а Лесли Лэмпорт предсказывал, что окружение verse будет обругано поэтами.
Наличие или отсутствие абзацного отступа в абзаце после окружения verse определяется по тем же правилам, что для quote и quotation.
Перечни
Для печати перечней используются окружения itemize (для простейших перечней), enumerate (для нумерованных перечней) и description (для перечней, в которых каждый пункт имеет заголовок — например, словарных статей или иных описаний). В любом случае элементы перечня вводятся командой \item (иногда — с необязательным аргументом). Разберем последовательно, как работают указанные окружения.
Простейшие перечни (itemize). Каждый элемент перечня вводится командой \item без аргумента.
- На печати каждый элемент перечня снабжается темным кружочком (" горох" на жаргоне полиграфистов).
- Перечни могут быть
вложенными друг в друга:
- максимальная глубина вложенности равна 4;
- отступы и символы перед элементами выбираются автоматически.
- На втором уровне элементы перечня отмечаются полужирными короткими тире, на третьем — звездочками, на четвертом — точками.
- При попытке вложить пять таких окружений LaTeX выдаст сообщение об ошибке.
Вот как выглядел в исходном файле предшествующий текст:
\begin{itemize} \item На печати каждый... \item Перечни могут быть вложенными друг в друга: \begin{itemize} \item максимальная глубина вложенности равна 4 \item тступы и символы перед элементами выбираются автоматически. \end{itemize} \item На втором уровне элементы... \item При попытке вложить... \end{itemize}
Внутри окружения itemize до первой команды \item не должно идти никакого текста или же команд, генерирующих текст. Если вы попытаетесь проигнорировать этот запрет, то LaTeX выдаст вам сообщение об ошибке. Другие команды (например, команды смены шрифта) могут идти и до первого \item.
Окружение itemize можно использовать также для создания перечней, в которых каждый элемент имеет короткий заголовок. Для создания такого заголовка надо задать команде \item необязательный аргумент (в квадратных скобках, как водится). При наличии у этой команды необязательного аргумента стандартный значок, отмечающий элемент перечня (" горошина", звездочка и т.п.) не печатается, а вместо него печатается текст, заданный в необязательном аргументе:
![]() |
\begin{itemize} \itemЭтот элемент перечня помечен стандартно. \item[\sffamily A] Здесь мы сами задали заголовок. \item[999] Здесь тоже. \end{itemize} |
Обратите внимание, что заголовки, заданные нами в необязательных аргументах команд \item, печатаются выровненными по правому краю, а также что команды смены шрифта в этих аргументах не распространяются на дальнейший текст.
Если заголовок, заданный вами в необязательном аргументе команды \item, будет слишком длинен, то он заедет на левое поле. В таких случаях лучше пользоваться окружением description, о котором речь пойдет ниже.
Если первый отличный от пробела символ после команды \item является открывающей квадратной скобкой, то LaTeX решит, что эта скобка начинает необязательный аргумент команды \item. Если при этом вы использовали эту скобку просто как типографский знак, то в результате получится сообщение об ошибке. Чтобы избежать такой неприятности, надо в этом случае квадратную скобку "спрятать", заключив ее в фигурные скобки:
\item {[} - редко встречающийся знак...
Нумерованные перечни (enumerate). В таких перечнях каждый элемент также вводится командой \item без аргумента, но на печати он будет отмечен не значком, а номером (эти номера создаются LaTeX'ом автоматически; если вы переставите какие-то элементы перечня, что-то добавите или удалите, нумерация автоматически изменится).
![\begin{enumerate}
\item В окружении \texttt{enumerate}...
\item Нумерация производится автоматически.
\item Перечни могут быть вложенными друг в друга:
\begin{enumerate}
\item максимальная глубина вложенности равна 4;
\item отступы и обозначения для элементов...
\end{enumerate}
\item На втором уровне элементы обозначаются...
\item При попытке вложить пять таких окружений...
\end{enumerate}](/sites/default/files/tex_cache/8dd90046d1b24ea6d8757290bf32d45a.png)
В исходном тексте это выглядело так:
\begin{enumerate} \item В окружении \texttt{enumerate}... \item Нумерация производится автоматически. \item Перечни могут быть вложенными друг в друга: \begin{enumerate} \item максимальная глубина вложенности равна 4; \item отступы и обозначения для элементов... \end{enumerate} \item На втором уровне элементы обозначаются... \item При попытке вложить пять таких окружений... \end{enumerate}
Внутри окружения enumerate до первой команды \item не должно идти никакого текста или же команд, генерирующих текст.
На номера элементов нумерованного перечня можно организовать автоматические ссылки с помощью команды \ref. Делается это так.
Представим себе, что вам нужно сослаться на какой-то пункт нумерованного перечня (например, чтобы написать "Согласно пункту 3 настоящих Правил ..."). Если вы в ходе работы над текстом переставите какие-то пункты или добавите новые, то номер пункта может измениться. Вместо того чтобы каждый раз отсчитывать, которым по счету идет этот пункт, можно пометить элемент перечня с помощью команды \label. Команду \label лучше ставить сразу после команды \item, вводящей помечаемый элемент перечня. но можно поставить ее и позже — до следующего \item.
Ссылка на метку производится с помощью команды \ref. У нее также один обязательный аргумент — та самая метка, на которую вы хотите сослаться (ссылка на страницу, на которой расположена метка, производится, как обычно, с помощью команды \pageref. Пример:
![]() |
\begin{enumerate} \item Переходите улицу только на зеленый свет. \item \label{tram} Стоящий трамвай обходить можно, а автобус — нет. \end {enumerate} Согласно правилу ~\ref{tram}, сформулированному на с.~\pageref{tram}, обходить стоящий автобус нельзя. |
Символы неразрывного пробела мы поставили затем, чтобы номер правила или страницы не остался в одиночестве в начале строки.
В окружении enumerate команда \item может иметь необязательный аргумент, который работает так же, как в окружении itemize. Если первый отличный от пробела символ после \item является открывающей квадратной скобкой, необходимо взять эту квадратную скобку в фигурные скобки (как и в случае с окружением itemize).
Перечни с заголовками (description). В этих перечнях каждый элемент, как уже было сказано, снабжен заголовком. Поэтому элементы перечня вводятся командой \item с необязательным аргументом (заключенным, стало быть, в квадратные скобки), представляющим собой этот заголовок. Пример:
![]() |
Летом можно собирать различные ягоды: \begin{description} \item[черника:] темно-синие, очень вкусные, хороши в свежем виде, варенье тоже получается хорошее; \item[голубика:] синие, более водянистые, чем черника, и не такие вкусные; \item[брусника:] ярко-красные, из них получается очень вкусное варенье. \end{description} |
Как вы могли заметить, заголовки элементов перечня оформляются в окружении description полужирным шрифтом. Если вас не устраивает этот шрифт, можно аргумент команды \item начать с команды переключения шрифта, скажем, \normalfont или \slshape.
Внутри окружения description до первой команды \item не должно идти никакого текста или же команд, генерирующих текст.
Если в заголовке элемента перечня присутствует закрывающая квадратная скобка, то LaTeX решит, что именно на ней заканчивается необязательный аргумент команды \item, в результате чего на печати получится совсем не то, что вы хотели. Чтобы избежать этой неприятности, надо эту квадратную скобку (либо, что еще проще, весь заголовок) заключить дополнительно в фигурные скобки (внутри квадратных).
Другие виды перечней. Если вас не устраивает стандартное оформление перечней (например, вид пометок, которыми отмечаются элементы перечня itemize), его несложно изменить. Как это сделать, будет рассказано в разд."Модификация разделов перечней" "Создание новых команд" . Несколько труднее, к сожалению, сделать так, чтобы буквы, которыми нумеруются элементы нумерованного перечня, были русскими, а не латинскими, как в примерах в этой книге (в "Модификация стандартных классов" мы расскажем, как этого добиться). Можно менять оформление перечней и более серьезным образом, создавая перечни иного типа, чем рассмотренные выше. На данный момент наш TeX-нический уровень не столь высок, чтобы можно было освоить эти возможности LaTeX'а, но в "Модификация стандартных классов" будет рассказано и об этом.