Latex руководство для начинающих

Время на прочтение
14 мин

Количество просмотров 142K

Это руководство нацелено на первое знакомство с LaTeX и предварительных знаний о нем от вас не потребует. К его завершению вы уже напишете свой первый документ и получите представление о ряде базовых возможностей этого инструмента.

Что такое LaTeX?

LaTEX (произносится как «лэйтех» или «латех») представляет собой инструмент для создания профессиональных документов. В его основе лежит парадигма редактирования WYSIWYM (что вижу, то и подразумеваю), то есть от пользователя требуется сосредоточиться только на содержимом документа, оставив его форматирование программе. Вместо ручного распределения текста по странице, как это делается в Microsoft Word или LibreOffice Writer, можно просто его вводить, позволив LaTeX заняться остальным.

Зачем нужен LaTeX?

Этот инструмент используется повсеместно для создания научных документов, написания книг, а также многих других форм публикаций. Он позволяет не только создавать красиво оформленные документы, но также дает пользователям возможность очень быстро реализовывать такие сложные элементы печатного набора, как математические выражения, таблицы, ссылки и библиографии, получая согласованную разметку по всем разделам.

Благодаря доступности большого числа открытых библиотек (об этом чуть позже) возможности LaTEX становятся практически безграничны. Эти библиотеки расширяют возможности пользователей еще больше, позволяя добавлять сноски, рисовать схемы и пр.

Одна из наиболее веских причин, по которой многие используют LaTeX, заключается в отделении содержания документа от его стиля. Это означает, что после написания содержимого, можно с легкостью изменять его внешний вид. Аналогичным образом, можно создать один стиль документа и использовать его для стандартизации внешнего вида других.

Это позволяет научным журналам создавать шаблоны для предлагаемых на рассмотрение материалов. Такие шаблоны имеют заданную разметку, в результате чего добавить остается лишь содержание. На деле существуют сотни подобных шаблонов, начиная с различных резюме и заканчивая презентациями слайдов.

Пишем первый документ

Изначально нам потребуется новый проект, начать который можно либо создав файл .tex, либо через Overleaf. Возьмем простейший пример:

documentclass{article}

begin{document}
First document. This is a simple example, with no 
extra parameters or packages included.
end{document}

Здесь мы видим, что LaTeX уже позаботился о первом элементе форматирования, сделав отступ в начальной строке абзаца. Теперь более подробно рассмотрим, за что отвечает каждая часть кода.

Открыть пример в Overleaf

Первая строка объявляет тип документа, называемый классом. Класс определяет общее представление документа. Для разных типов документов требуются разные классы, то есть для CV/резюме будет использоваться свой класс, а для научного труда свой. В данном случае классом является article, самый простой и распространенный в LaTeX. Другие типы документов, с которыми вам, возможно, придется работать, могут потребовать использования других классов, например book или report.

После этого мы пишем содержание документа, заключенное в теги begin{document} и end{document}, представляющие его тело. Можете начать писать здесь текст и при желании вносить в него изменения.

Чтобы увидеть результат этих изменений в PDF, документ нужно скомпилировать. В Overleaf для этого нужно просто нажать Recompile. (Также можете настроить проект на автоматическую перекомпиляцию в процессе редактирования файлов, нажав на небольшую стрелку рядом с кнопкой Recompile и установив Auto Compile как On).

Если вы используете базовый текстовый редактор, например gedit, emacs, vim, sublime, блокнот и пр., то нужно будет компилировать документ вручную. Для этого просто выполните в терминале pdflatex <your document>. Подробнее об этом процессе можете почитать здесь.

При использовании специального редактора LaTeX вроде TeXmaker или TeXworks нужно просто нажать кнопку Recompile. Если не знаете, где она находится, обратитесь к документации.

Теперь, когда вы разобрались, как добавлять в документ содержимое, следующим шагом будет его именование. Для этого необходимо вкратце разобрать преамбулу.

Преамбула документа

В предыдущем примере текст вводился после команды begin{document}. Все, что содержится в файле .tex до этого места, называется преамбулой. В ней можно определить тип создаваемого документа, используемый язык, нужные библиотеки (подробнее позже) и ряд других элементов. Вот пример типичной преамбулы:

documentclass[12pt, letterpaper]{article}
usepackage[utf8]{inputenc}

А вот подробное разъяснение каждой строки:

documentclass[12pt, letterpaper]{article}

Как уже говорилось, этой командой определяется тип документа. В нее также можно передавать дополнительные параметры, включенные в квадратные скобки через запятую. В данном примере эти параметры устанавливают размер шрифта (12pt) и размер страницы (letterpaper). Конечно же, для шрифта можно установить и другие размеры (9pt, 11pt, 12pt), но если размер не задан, то предустановленным значением будет 10pt. Что же касается размера страницы, то для него доступны варианты a4paperи legalpaper. Подробнее об этом можете почитать в статье Page size and margins.

usepackage[utf8]{inputenc}

Эта команда задает кодировку документа. Ее можно опустить либо изменить на другой вариант, но рекомендуется использовать именно utf-8. Если вам не требуется конкретно другая кодировка, либо вы просто не уверены, то добавьте эту строку во вступление.

Добавление заголовка, автора и даты

Для добавления в документ заголовка, автора и даты необходимо внести во вступление три строки (только не в основное тело документа):

title{First document}

Заголовок.

author{Hubert Farnsworth}

Здесь размещается имя автора. При желании можно также добавить в фигурные скобки следующую команду:

thanks{funded by the Overleaf team}

Она может идти после имени автора, внутри скобок команды author. Эта команда добавляет верхний индекс и сноску с текстом из скобок. Очень полезный элемент, если вам нужно поблагодарить в своей статье какую-либо организацию.

date{February 2014}

Дату можно ввести вручную или использовать команду today, чтобы она обновлялась автоматически при компиляции документа.

После добавления перечисленных строк преамбула должна выглядеть так:

documentclass[12pt, letterpaper, twoside]{article}
usepackage[utf8]{inputenc}

title{First document}
author{Hubert Farnsworth thanks{funded by the Overleaf team}}
date{February 2017}

Теперь, когда вы присвоили документу заголовок, автора и дату, можно вывести в нем эту информацию с помощью команды maketitle. Ее нужно включить в ту часть тела документа, где вы хотите видеть заголовок.

begin{document}

maketitle

We have now added a title, author and date to our first LaTeX{} document!

end{document}

Открыть пример в Overleaf

Добавление комментариев

Как и в случае с любым кодом, зачастую будет нелишним добавлять комментарии. Комментарии – это включаемые в документ текстовые элементы, которые в итоге не отображаются и никак не него не влияют. Они помогают организовывать работу, делать пометки или закомментировать (отключать) строки/разделы при отладке. Чтобы создать комментарий в LaTeX, просто наберите символ % в начале строки, как показано ниже:

begin{document}

maketitle

We have now added a title, author and date to our first LaTeX{} document!

% This line here is a comment. It will not be printed in the document.

end{document}

Открыть пример в Overleaf

Жирный, курсив и подчеркивание

Теперь рассмотрим некоторые простые команды форматирования текста.

  • Жирный текст в LaTeX пишется внутри команды textbf{...};
  • Курсив пишется с помощью команды textit{...};
  • Подчеркнутый текст оформляется с помощью команды underline{...}.

Вот пример этих трех видов форматирования:

Some of the textbf{greatest}
discoveries in underline{science} 
were made by textbf{textit{accident}}.

А вот еще одна очень простая команда: emph{...}. Выполняемые ей для аргумента действия определяются контекстом – внутри обычного текста его выделенная часть переводится в курсив, а при использовании команды в курсивном тексте происходит обратное.

Пример:

Some of the greatest emph{discoveries} 
in science 
were made by accident.

textit{Some of the greatest emph{discoveries} 
in science 
were made by accident.}

textbf{Some of the greatest emph{discoveries} 
in science 
were made by accident.}

Более того, некоторые пакеты, например Beamer, изменяют поведение команды emph.

Открыть пример в Overleaf

Добавление изображений

В Overleaf для добавления изображений их сначала нужно будет загрузить.

Пример:

documentclass{article}
usepackage{graphicx}
graphicspath{ {images/} }

begin{document}
The universe is immense and it seems to be homogeneous, 
in a large scale, everywhere we look at.

includegraphics{universe}

There's a picture of a galaxy above
end{document}

Открыть пример в Overleaf

LaTeX не способен обрабатывать изображения самостоятельно, поэтому приходится использовать сторонний пакет. С помощью пакетов можно измерять предустановленный вид документа LaTeX и совершать другие действия. В данном случае нам нужно добавить в документ изображение, для чего потребуется библиотека graphicx, которая привнесет новые команды: includegraphics{...} и graphicspath{...}. Для использования graphicx включите во вступление следующую строку: usepackage{graphicx}.

Команда graphicspath{ {images/} } сообщает LaTeX, что изображения находятся в каталоге images в текущей директории.

Команда includegraphics{universe}, в свою очередь, уже конкретно добавляет изображение в документ. Здесь universe представляет имя файла, содержащего изображение, без его расширения, поэтому universe.png стал просто universe. Имя файла изображения не должно содержать пробелов и многоточий.

Примечание: расширение файла включить можно, но лучше его опустить. В этом случае LaTeX будет искать все поддерживаемые форматы. Также при загрузке файлов обычно рекомендуется указывать расширение в нижнем регистре.

Подписи, метки и ссылки

С помощью окружения figure изображения можно подписывать, размечать, а также делать на них ссылки:

begin{figure}[h]
    centering
    includegraphics[width=0.25textwidth]{mesh}
    caption{a nice plot}
    label{fig:mesh1}
end{figure}

As you can see in the figure ref{fig:mesh1}, the 
function grows near 0. Also, in the page pageref{fig:mesh1} 
is the same example.

Открыть пример в Overleaf

В примере выше показаны три важные команды:

  • caption{a nice plot}: подписывает изображение. При создании списка изображений данная подпись будет в них использована. Поместить ее можно как под, так и над рисунком.
  • label{fig:mesh1}: если вам нужно сослаться на изображение внутри документа, установите метку с помощью этой команды. Метка пронумерует изображение и при использовании вместе со следующей командой позволит на него сослаться.
  • ref{fig:mesh1}: этот код будет замещен числом, соответствующим изображению, на которое делается ссылка.

При добавлении изображений в документ нужно всегда размещать их внутри окружения figure или ему подобного, чтобы LaTeX вставлял картинку согласованно с остальной частью текста.

Примечание: если вы используете подписи и ссылки на собственном компьютере, то вам потребуется скомпилировать документ дважды, чтобы они сработали. Overleaf делает это автоматически.

Создание списков

Списки в LaTeX создаются очень просто. Делается это с помощью различных окружений списков. Окружения – это разделы, которые требуется представить отличным от остальной части документа образом. Начинаются они с begin{...}, а завершаются на end{...}.

Существует два основных типа списков: упорядоченные и неупорядоченные. Каждый из них реализуется в собственном окружении.

Неупорядоченные списки

Неупорядоченные списки создаются пространством itemize. Каждая запись должна предваряться управляющей последовательностью item, как показано ниже:

begin{itemize}
  item The individual entries are indicated with a black dot, a so-called bullet.
  item The text in the entries may be of any length.
end{itemize}

По умолчанию отдельные записи обозначаются черной точкой, или буллетом. Текст в записях может иметь неограниченную длину.

Открыть пример в Overleaf

Упорядоченные списки

Для упорядоченных списков используется тот же синтаксис, но в другом окружении. В данном случае этим окружением выступает enumerate:

begin{enumerate}
  item This is the first entry in our list
  item The list numbers increase with each entry we add
end{enumerate}

Аналогично неупорядоченным спискам, каждая запись должна предваряться управляющей последовательностью item, которая будет автоматически генерировать число, отмечая им элемент. Метки перечисления состоят из последовательных чисел, начинающихся с единицы.

Открыть пример в Overleaf

Добавление математических выражений

Одно из главных удобств LaTeX состоит в простоте использования математических выражений. Этот инструмент предоставляет два режима их написания: режим inline (встраивание) и режим display (отображение). Первый используется для написания формул, являющихся частью текста. Второй позволяет создавать выражения, не входящие в состав текста или абзаца, а размещаемые на отдельных строках. Вот пример режима встраивания:

In physics, the mass-energy equivalence is stated 
by the equation $E=mc^2$, discovered in 1905 by Albert Einstein.

Для размещения уравнений в режиме встраивания используйте один из следующих разграничителей: ( ... ), $ ... $ или begin{math} ... end{math}. Работают они равнозначно, поэтому выбор определяется лишь собственным предпочтением.

Режим отображения предлагает два варианта: без нумерации и с нумерацией.

The mass-energy equivalence is described by the famous equation
[ E=mc^2 ]
discovered in 1905 by Albert Einstein. 
In natural units ($c = 1$), the formula expresses the identity
begin{equation}
E=m
end{equation}

Для вывода уравнений в режиме отображения используйте один из следующих разграничителей: [ ... ], begin{displaymath} ... end{displaymath} или begin{equation} ... end{equation}. Применять $$ ... $$ нежелательно, так как он может внести несогласованные интервалы, а также коряво работать с некотороми математическими пакетами.

Важно: окружение equation* предоставляется в виде стороннего пакета. Подробнее об этом рекомендую почитать статью по amsmath.

Открыть пример в Overleaf

Для использования многих команд при работе с математикой необходим пакет amsmath, поэтому не забудьте его добавить. Ниже показан пример некоторых его базовых команд:

Subscripts in math mode are written as $a_b$ and superscripts are written as $a^b$. These can be combined an nested to write expressions such as

[ T^{i_1 i_2 dots i_p}_{j_1 j_2 dots j_q} = T(x^{i_1},dots,x^{i_p},e_{j_1},dots,e_{j_q}) ]
 
We write integrals using $int$ and fractions using $frac{a}{b}$. Limits are placed on integrals using superscripts and subscripts:

[ int_0^1 frac{dx}{e^x} =  frac{e-1}{e} ]

Lower case Greek letters are written as $omega$ $delta$ etc. while upper case Greek letters are written as $Omega$ $Delta$.

Mathematical operators are prefixed with a backslash as $sin(beta)$, $cos(alpha)$, $log(x)$ etc.

Открыть пример в Overleaf

Возможности использования математики в LaTeX безграничны, и перечислить их все здесь просто нереально. Так что рекомендую дополнительно почитать соответствующие материалы по теме:

  • Mathematical expressions (Математические выражения)
  • Subscripts and superscripts (Сноски и индексы)
  • Brackets and Parentheses (Скобки и кавычки)
  • Fractions and Binomials (Дроби и многочлены)
  • Aligning Equations (Выравнивание уравнений)
  • Operators (Операторы)
  • Spacing in math mode (Интервалы в математическом режиме)
  • Integrals, sums and limits (Интегралы, суммы и пределы)
  • Display style in math mode (Стиль отображения в математическом режиме)
  • List of Greek letters and math symbols (Список греческих букв и математических символов)
  • Mathematical fonts (Математические шрифты)

Базовое форматирование

Теперь разберем написание аннотаций, а также форматирование документов LaTeX в разных главах, разделах и абзацах.

Аннотации

В научных трудах принято включать краткий обзор основной темы работы. В LaTeX для этого есть специальное окружение abstract. Это окружение помещает текст в специальном формате в начало документа.

begin{document}

begin{abstract}
This is a simple paragraph at the beginning of the 
document. A brief introduction about the main subject.
end{abstract}
end{document}

Открыть пример в Overleaf

Абзацы и перевод строки

begin{document}

begin{abstract}
This is a simple paragraph at the beginning of the 
document. A brief introduction about the main subject.
end{abstract}
 
Now that we have written our abstract, we can begin writing our first paragraph.
 
This line will start a second Paragraph.
end{document}

Открыть пример в Overleaf

Когда при написании документа вам требуется начать новый абзац, нужно дважды нажать «Ввод», вставив таким образом двойную пустую строку. Имейте ввиду, что отступ абзацев LaTeX делает автоматически.

Чтобы создать новую строку без создания очередного абзаца нужно вставить точку разрыва строки, для чего используется \ (двойной обратный слэш, как в примере) или команда newline.
При этом не следует использовать несколько \ или newline для «имитации» абзацев с увеличенными интервалами между ними, так как это приведет к конфликту с внутренними алгоритмами LaTeX. Для подобного эффекта рекомендуется использовать двойные пустые строки, после чего добавлять во вступление usepackage{parskip}.

Дополнительную информацию по теме можно найти в статье Paragraphs and new lines.

Главы и разделы

Команды для организации документа варьируются в зависимости от его типа. Простейшей формой организации выступает деление на разделы, доступное во всех форматах.

chapter{First Chapter}

section{Introduction}

This is the first section.

Lorem  ipsum  dolor  sit  amet,  consectetuer  adipiscing  
elit.   Etiam  lobortisfacilisis sem.  Nullam nec mi et 
neque pharetra sollicitudin.  Praesent imperdietmi nec ante. 
Donec ullamcorper, felis non sodales...

section{Second Section}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  
Etiam lobortis facilisissem.  Nullam nec mi et neque pharetra 
sollicitudin.  Praesent imperdiet mi necante...

subsection{First Subsection}
Praesent imperdietmi nec ante. Donec ullamcorper, felis non sodales...

section*{Unnumbered Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  
Etiam lobortis facilisissem

Открыть пример в Overleaf

Команда section{} отмечает начало нового раздела, а внутри скобок содержит его имя. Нумерация разделов происходит автоматически и может быть отключена добавлением символа * в команду создания раздела: section*{}. Можно также использовать подразделы, subsection{} и даже подподразделы, subsubsection{}. Ниже перечислены основные уровни вложенности:

Обратите внимание, что part и chapter доступны только в классах report и book.

Более подробный разбор структуры документа описан в статье Sections and Chapters.

Создание таблиц

Простые таблицы

Вот простейший пример создания таблицы:

begin{center}
begin{tabular}{ c c c }
 cell1 & cell2 & cell3 \ 
 cell4 & cell5 & cell6 \  
 cell7 & cell8 & cell9    
end{tabular}
end{center}

По умолчанию для создания таблиц в LaTeX используется окружение tabular. В этом окружении нужно указывать параметр, в нашем случае {c c c}. В таком виде он сообщит LaTeX, что в таблице будет три столбца, и текст внутри этих столбцов нужно разместить по центру. Можно также использовать r для выравнивания текста по правому краю и l для выравнивания по левому.

Для указания разрывов в записях таблицы используется символ &. Количество символов выравнивания в каждой строке всегда должно быть на один меньше, чем количество столбцов. Чтобы перейти к очередной строке таблицы используется команда создания новой строки, \. Всю таблицу мы заключаем в окружение center, чтобы она размещалась по центру страницы.

Открыть пример в Overleaf

Добавление границ

Окружение tabular достаточно гибкое и позволяет размещать разделяющие строки между каждым столбцом.

begin{center}
begin{tabular}{ |c|c|c| } 
 hline
 cell1 & cell2 & cell3 \ 
 cell4 & cell5 & cell6 \ 
 cell7 & cell8 & cell9 \ 
 hline
end{tabular}
end{center}

Границы можно добавлять при помощи команды рисования горизонтальной линии hline и параметра рисования вертикальной линии |.

  • { |c|c|c| }: эта команда объявляет, что в таблице будут использованы три столбца, разделенные вертикальными линиями. На необходимость вертикального разделения указывает символ |.
  • hline: эта команда вставит горизонтальную линию. В примере выше горизонтальными линиями мы ограничили верх и низ таблицы, но при желании ими можно разделить ее всю.

Вот еще один пример:

begin{center}
 begin{tabular}{||c c c c||} 
 hline
 Col1 & Col2 & Col2 & Col3 \ [0.5ex] 
 hlinehline
 1 & 6 & 87837 & 787 \ 
 hline
 2 & 7 & 78 & 5415 \
 hline
 3 & 545 & 778 & 7507 \
 hline
 4 & 545 & 18744 & 7560 \
 hline
 5 & 88 & 788 & 6344 \ [1ex] 
 hline
end{tabular}
end{center}

Порой создание таблиц в LaTeX вызывает затруднения, поэтому вам может потребоваться обратиться к онлайн-инструменту TablesGenerator.com, чтобы экспортировать код LaTeX для окружения tabular. Копировать и вставлять данные из приложений электронных таблиц можно через опцию FilePaste table data.

Открыть пример в Overleaf

Подписи, метки и ссылки

Как и изображения, таблицы можно пописывать и делать на них ссылки. Единственное отличие – это использование вместо figure окружения table.

Table ref{table:data} is an example of referenced LaTeX{} elements.

begin{table}[h!]
centering
begin{tabular}{||c c c c||} 
 hline
 Col1 & Col2 & Col2 & Col3 \ [0.5ex] 
 hlinehline
 1 & 6 & 87837 & 787 \ 
 2 & 7 & 78 & 5415 \
 3 & 545 & 778 & 7507 \
 4 & 545 & 18744 & 7560 \
 5 & 88 & 788 & 6344 \ [1ex] 
 hline
end{tabular}
caption{Table to test captions and labels}
label{table:data}
end{table}

Открыть пример в Overleaf

Примечание: если вы используете подписи и ссылки на своем компьютере, то для работоспособности ссылок нужно будет скомпилировать документ дважды. Overleaf делает это автоматически.

Добавление содержания

Процесс создания содержания очень прост и реализуется командой tableofcontents:

documentclass{article}
usepackage[utf8]{inputenc}
 
title{Sections and Chapters}
author{Gubert Farnsworth}
date{ }
  
begin{document}
  
maketitle
  
tableofcontents

section{Introduction}
   
This is the first section.
      
Lorem  ipsum  dolor  sit  amet,  consectetuer  adipiscing  
elit.   Etiam  lobortisfacilisis sem.  Nullam nec mi et 
neque pharetra sollicitudin.  Praesent imperdietmi nec ante. 
Donec ullamcorper, felis non sodales...
       
section*{Unnumbered Section}
addcontentsline{toc}{section}{Unnumbered Section}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  
Etiam lobortis facilisissem.  Nullam nec mi et neque pharetra 
sollicitudin.  Praesent imperdiet mi necante...

section{Second Section}
       
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  
Etiam lobortis facilisissem.  Nullam nec mi et neque pharetra 
sollicitudin.  Praesent imperdiet mi necante...
         
end{document}

Разделы, подразделы и главы включаются в содержание автоматически. Чтобы добавить записи вручную, например для указания непронумерованного раздела, используйте команду addcontentsline, как показано в примере.

Открыть пример в Overleaf

Скачивание готового документа

Завершенный документ в формате PDF можно скачать через расположенное слева меню, кликнув PDF.

Есть и более быстрый способ через нажатие кнопки Download PDF в окне просмотра PDF, как показано ниже:

Штефан Коттвиц

LaTeX:
руководство для начинающих

LaTeX
Beginner’s Guide
Second Edition
Create visually appealing texts, articles,
and books for business and science using LaTeX

S T E F A N KOT TW I TZ

BIRMINGHAM — MUMBAI

LaTeX:
руководство
для начинающих
Создание визуально привлекательных текстов,
статей и книг

Ш Т Е ФА Н КОТ Т В И Ц

Москва, 2022

УДК 004.4
ББК 32. 972
К73

К73

Коттвиц Ш.
LaTeX: руководство для начинающих / пер. с англ. А. В. Снастина. – М.:
ДМК Пресс, 2022. – 320 с.: ил.
ISBN 978-5-93700-123-8
LaTeX – система верстки с открытым исходным кодом для набора и оформления текста, которая позволяет создавать печатные документы и файлы PDF
профессионального качества. Трудности в освоении столь мощного и сложного
инструмента поначалу могут обескуражить пользователя. Эта книга упрощает
начало работы с LaTeX: вашему вниманию предлагается множество пошаговых
примеров, которые помогут быстро достичь ощутимых результатов.
Издание предназначено широкому кругу читателей, желающих научиться
профессиональной верстке любых текстовых материалов: статей, диссертаций,
книг и др.

УДК 004.4
ББК 32. 972

First published in the English language under the title ‘LaTeX Beginner’s Guide — Second
Edition – (9781801078658).
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения
владельцев авторских прав.

ISBN 978-1-80107-865-8 (англ.)
ISBN 978-5-93700-123-8 (рус.)

© Packt Publishing, 2021
© Перевод, оформление, издание,
ДМК Пресс, 2022

Спасибо членам TUG и DANTE за поддержку разработки,
инфраструктуры и обучения TeX и LaTeX. Спасибо всем
помощникам на интернет-форумах за их неутомимую
поддержку новичков в LaTeX.
— Штефан Коттвиц

Содержание
От издательства. ………………………………………………………………………………………14
Участники проекта…………………………………………………………………………………..15
Предисловие……………………………………………………………………………………………..16
Глава 1. Начинаем работу с LaTeX……………………………………………………….21
Технические требования. ………………………………………………………………………………21
Что такое LaTeX……………………………………………………………………………………………..22
Преимущества LaTeX. ………………………………………………………………………………..22
Достоинства открытого исходного кода…………………………………………………….23
Разделение формы и содержания………………………………………………………………23
Переносимость…………………………………………………………………………………………..23
Защита вашей работы………………………………………………………………………………..24
Как начать работу с LaTeX………………………………………………………………………….24
Методики работы с LaTeX…………………………………………………………………………..25
Установка и использование LaTeX. ………………………………………………………………..25
Установка TeX Live с использованием мастера сетевой установки…………….27
Установка TeX Live в режиме офлайн…………………………………………………………30
Установка TeX Live в других операционных системах………………………………..31
Обновление TeX Live и установка новых пакетов………………………………………31
Создание первого документа. ……………………………………………………………………33
Сравнение с более продвинутыми редакторами LaTeX. …………………………….34
Работа с LaTeX в режиме онлайн с использованием Overleaf…………………………35
Что требует Overleaf, и что он предоставляет…………………………………………….35
Преимущества Overleaf………………………………………………………………………………36
Трудности при работе в режиме онлайн…………………………………………………….36
Создание первого документа в режиме онлайн…………………………………………37
Изучение возможностей Overleaf. ……………………………………………………………..39
Грамматика и языковая обратная связь с Writefull…………………………………….41
Рецензирование и комментирование………………………………………………………..42
Доступ к документации…………………………………………………………………………………43
Резюме…………………………………………………………………………………………………………..43

Глава 2. Форматирование текста и создание макрокоманд……….44
Технические требования. ………………………………………………………………………………44
Работа с логическим форматированием………………………………………………………..45
Создание документа с названием и заголовком раздела……………………………45
Изучение структуры документа…………………………………………………………………47
Описание команд LaTeX…………………………………………………………………………….48
Описание окружений LaTeX……………………………………………………………………….49
Как LaTeX читает наш ввод…………………………………………………………………………….50

Содержание  7

Вывод специальных символов. ………………………………………………………………….51
Изменение шрифтов текста…………………………………………………………………………..52
Установка формы шрифта………………………………………………………………………….52
Выбор гарнитуры (семейства) шрифтов…………………………………………………….53
Ограничение области действия команд фигурными скобками………………….56
Исследование размеров шрифта………………………………………………………………..57
Создание собственных команд………………………………………………………………………58
Использование макрокоманд для простого текста…………………………………….58
Правильное размещение пробелов после команд……………………………………..59
Создание более универсальных команд и использование аргументов………60
Создание макрокоман­ды с аргументами……………………………………………….60
Создание макрокоман­ды с необязательными аргументами………………….61
Использование боксов для ограничения ширины абзацев…………………………….62
Создание более узкого текстового бокса. …………………………………………………..63
Создание общих боксов абзацев………………………………………………………………..63
Изучение дополнительных функциональных возможностей боксов
абзацев………………………………………………………………………………………………………65
Использование мини-страниц…………………………………………………………………..65
Разделение строк и абзацев…………………………………………………………………………..66
Улучшение автоматического переноса слов………………………………………………67
Предотвращение переноса слов…………………………………………………………………68
Улучшение полного выравнивания по ширине………………………………………….68
Разделение строк вручную…………………………………………………………………………69
Изучение параметров разделения строк……………………………………………………70
Запрещение разрывов строк………………………………………………………………………71
Отключение выравнивания по ширине…………………………………………………………71
Создание текста с рваным правым краем………………………………………………….72
Создание текста с рваным левым краем…………………………………………………….72
Текст, выровненный по центру………………………………………………………………….73
Использование окружений для выравнивания. …………………………………………74
Вывод цитат…………………………………………………………………………………………………..75
Цитирование более длинного текста. ………………………………………………………..76
Резюме…………………………………………………………………………………………………………..79

Глава 3. Дизайн страниц………………………………………………………………………..80
Технические требования. ………………………………………………………………………………80
Создание книги с главами……………………………………………………………………………..81
Определение размеров полей………………………………………………………………………..83
Выбор размера страницы…………………………………………………………………………..84
Определение области текста………………………………………………………………………85
Настройка полей………………………………………………………………………………………..85
Использование параметров класса………………………………………………………………..86
Создание верхних и нижних колонтитулов……………………………………………………89
Описание стилей страниц………………………………………………………………………….92
Пользовательская настройка верхних и нижних колонтитулов…………………92
Использование декоративных линий в верхних и нижних колонтитулах….93
Изменение меток верхнего колонтитула LaTeX…………………………………………93

8  Содержание
Использование сносок. ………………………………………………………………………………….94
Изменение линии, отделяющей сноску от текста. ……………………………………..95
Использование пакетов для расширения стилей сносок……………………………96
Разрыв страниц……………………………………………………………………………………………..97
Увеличение страницы………………………………………………………………………………….100
Изменение межстрочного интервала…………………………………………………………..103
Создание оглавления. ………………………………………………………………………………….104
Резюме…………………………………………………………………………………………………………107

Глава 4. Создание списков…………………………………………………………………..108
Технические требования. …………………………………………………………………………….108
Создание списков. ……………………………………………………………………………………….108
Создание маркированного списка……………………………………………………………109
Создание нумерованного списка……………………………………………………………..112
Создание списка определений…………………………………………………………………113
Списки, настраиваемые пользователем……………………………………………………….115
Создание компактных списков………………………………………………………………..115
Выбор символов-меток и формата нумерации………………………………………..117
Приостановка и возобновление списков………………………………………………….120
Резюме…………………………………………………………………………………………………………122

Глава 5. Включение изображений в текст………………………………………123
Технические требования. …………………………………………………………………………….123
Включение изображения в текст………………………………………………………………….123
Выбор оптимального типа файла. ……………………………………………………………126
Масштабирование изображения………………………………………………………………127
Включение в текст целых страниц……………………………………………………………127
Размещение изображений позади текста…………………………………………………128
Управление плавающими изображениями………………………………………………….128
Описание параметров размещения. ………………………………………………………..130
Принудительный вывод изображений……………………………………………………..131
Ограничение плавающих объектов………………………………………………………….131
Полное запрещение перемещений плавающих объектов………………………..132
Размещение нескольких изображений…………………………………………………….133
Текст, обтекающий изображения……………………………………………………………..134
Резюме…………………………………………………………………………………………………………135

Глава 6. Создание таблиц…………………………………………………………………….136
Технические требования. …………………………………………………………………………….136
Использование табуляции для записи текста в столбцах……………………………..136
Верстка таблиц…………………………………………………………………………………………….140
Добавление разделительных линий в таблицы………………………………………..142
Описание аргументов форматирования…………………………………………………..142
Увеличение высоты строки………………………………………………………………………144
Улучшение внешнего вида таблиц……………………………………………………………145
Регулирование размеров линий……………………………………………………………….146

Содержание  9

Объединение нескольких столбцов для одной записи таблицы……………….147
Вставка кода, определяющего содержимое всего столбца………………………..148
Объединение нескольких строк для одной записи таблицы…………………….150
Добавление заголовков к таблицам……………………………………………………………..151
Размещение заголовков над таблицами…………………………………………………..153
Более детальная настройка заголовков. …………………………………………………..154
Использование пакетов для более детальной пользовательской
настройки…………………………………………………………………………………………………….154
Автоматическая подгонка столбцов к ширине таблицы…………………………..155
Создание многостраничных таблиц…………………………………………………………156
Использование цвета в таблицах……………………………………………………………..156
Использование альбомной ориентации…………………………………………………..157
Выравнивание столбцов по десятичной точке…………………………………………157
Обработка узких столбцов. ………………………………………………………………………157
Резюме…………………………………………………………………………………………………………158

Глава 7. Использование перекрестных ссылок……………………………..159
Технические требования. …………………………………………………………………………….159
Установка и настройка меток и ссылок………………………………………………………..160
Присваивание метки………………………………………………………………………………..162
Ссылка на метку……………………………………………………………………………………….163
Ссылка на страницу………………………………………………………………………………….164
Использование усовершенствованных ссылок…………………………………………….165
Создание интеллектуальных ссылок на страницы. ………………………………….165
Более тонкая настройка ссылок на страницы…………………………………………..166
Ссылки на диапазоны страниц…………………………………………………………………167
Использование автоматически присваиваемых имен ссылок………………….168
Объединение интеллектуальных ссылок с механизмом
автоматического именования………………………………………………………………….170
Ссылки на метки в других документах. ……………………………………………………….170
Преобразование ссылок в гиперссылки……………………………………………………….171
Резюме…………………………………………………………………………………………………………172

Глава 8. Формирование оглавления и списков ссылок………………173
Технические требования. …………………………………………………………………………….173
Настройка оглавления………………………………………………………………………………….174
Регулирование глубины оглавления…………………………………………………………176
Сокращение элементов оглавления. ………………………………………………………..177
Добавление элементов оглавления вручную……………………………………………177
Создание и настройка списка иллюстраций…………………………………………….178
Создание списка таблиц…………………………………………………………………………..179
Использование пакетов для дополнительной настройки…………………………180
Создание предметного указателя. ……………………………………………………………….180
Определение элементов и вложенных элементов предметного
указателя………………………………………………………………………………………………….182
Определение диапазона страниц. ……………………………………………………………183

10  Содержание
Использование символов и макрокоманд в предметном указателе…………183
Ссылки на другие элементы предметного указателя……………………………….184
Более подробная настройка номеров страниц…………………………………………184
Настройка макета предметного указателя……………………………………………….185
Создание списка использованной литературы…………………………………………….187
Использование стандартного окружения библиографии…………………………188
Использование библиографических баз данных с по­мощью BibTeX………..189
Подробное описание полей элемента BibTeX…………………………………………..191
Ссылки на ресурсы интернета………………………………………………………………….192
Описание типов элементов (записей) BibTeX…………………………………………..192
Выбор стиля библиографического списка………………………………………………..193
Список ссылок без цитирования………………………………………………………………194
Изменение заголовков…………………………………………………………………………………195
Резюме…………………………………………………………………………………………………………196

Глава 9. Создание математических формул…………………………………..197
Технические требования. …………………………………………………………………………….197
Создание простых формул…………………………………………………………………………..198
Включение математических выражений в текст………………………………………200
Вывод формул………………………………………………………………………………………….200
Нумерованные формулы………………………………………………………………………….201
Добавление подстрочных и надстрочных элементов……………………………….202
Использование операторов. …………………………………………………………………….202
Вычисление квадратных корней………………………………………………………………203
Запись дробей. …………………………………………………………………………………………204
Вывод букв греческого алфавита……………………………………………………………..204
Вывод рукописных букв. ………………………………………………………………………….206
Вывод многоточий. ………………………………………………………………………………….206
Изменение шрифта, стиля и размера……………………………………………………….207
Дополнительная настройка отдельно выводимых формул………………………208
Верстка многострочных формул………………………………………………………………….209
Нумерация строк в многострочных формулах. ………………………………………..211
Вставка текста в формулы………………………………………………………………………..211
Использование разнообразных математических символов…………………………212
Символы бинарных операций………………………………………………………………….212
Символы бинарных отношений……………………………………………………………….212
Символы неравенств………………………………………………………………………………..213
Символы подмножеств и супермножеств…………………………………………………213
Стрелки. …………………………………………………………………………………………………..214
Стрелки-гарпуны……………………………………………………………………………………..214
Символы, производные от букв. ………………………………………………………………214
Различные символы…………………………………………………………………………………215
Вывод единиц измерения………………………………………………………………………..216
Операторы переменного размера. …………………………………………………………..217
Разделители переменного размера………………………………………………………….218
Создание математических структур…………………………………………………………….218
Создание массивов…………………………………………………………………………………..219

Содержание  11

Верстка матриц………………………………………………………………………………………..219
Вывод биномиальных коэффициентов…………………………………………………….220
Подчеркивание и надчеркивание…………………………………………………………….220
Размещение знаков над буквами……………………………………………………………..221
Размещение символа над или под другим символом. ……………………………..222
Форматирование теорем и определений. ………………………………………………..222
Дополнительные инструменты для создания математических
выражений……………………………………………………………………………………………….224
Резюме…………………………………………………………………………………………………………225

Глава 10. Использование шрифтов…………………………………………………..226
Технические требования. …………………………………………………………………………….227
Использование универсальных групп шрифтов…………………………………………..227
Latin Modern – замена стандартного шрифта…………………………………………..230
Kp-Fonts – еще один обширный набор шрифтов. …………………………………….230
Использование специализированных семейств шрифтов……………………………231
Шрифты с засечками………………………………………………………………………………..231
Times Roman…………………………………………………………………………………………231
Palatino…………………………………………………………………………………………………232
Charter………………………………………………………………………………………………….232
New Century Schoolbook………………………………………………………………………..233
Concrete Roman…………………………………………………………………………………….234
Bookman……………………………………………………………………………………………….234
Шрифты без засечек…………………………………………………………………………………235
Arev………………………………………………………………………………………………………235
Computer Modern Bright………………………………………………………………………..236
Kurier……………………………………………………………………………………………………236
Helvetica……………………………………………………………………………………………….237
Моноширинные шрифты…………………………………………………………………………238
Courier………………………………………………………………………………………………….238
Inconsolata……………………………………………………………………………………………238
Bera Mono……………………………………………………………………………………………..239
Рукописные шрифты………………………………………………………………………………..239
Calligra………………………………………………………………………………………………….239
Miama Nueva…………………………………………………………………………………………240
Использование произвольных шрифтов. …………………………………………………….240
Выбор основного шрифта. ……………………………………………………………………….241
Выбор нескольких семейств шрифтов. …………………………………………………….242
Резюме…………………………………………………………………………………………………………243

Глава 11. Разработка больших документов…………………………………..245
Технические требования. …………………………………………………………………………….245
Разделение ввода…………………………………………………………………………………………246
Включение небольших фрагментов исходного кода. ……………………………….248
Включение более крупных частей документа…………………………………………..248
Выборочная компиляция частей документа…………………………………………….249

12  Содержание
Создание вступительной и завершающей частей………………………………………..251
Создание титульной страницы…………………………………………………………………….253
Работа с шаблонами…………………………………………………………………………………….255
Резюме…………………………………………………………………………………………………………261

Глава 12. Дополнительное улучшение документов…………………….262
Технические требования. …………………………………………………………………………….262
Использование гиперссылок и закладок. …………………………………………………….263
Добавление гиперссылок. ………………………………………………………………………..263
Настройка гиперссылок……………………………………………………………………………265
Создание гиперссылок вручную. ……………………………………………………………..268
Создание закладок вручную…………………………………………………………………….269
Использование математических формул и специальных символов
в закладках. ……………………………………………………………………………………………..269
Дизайн заголовков……………………………………………………………………………………….271
Добавление цвета в документы……………………………………………………………………274
Резюме…………………………………………………………………………………………………………275

Глава 13. Устранение проблем. ………………………………………………………….276
Технические требования. …………………………………………………………………………….276
Обнаружение и исправление ошибок…………………………………………………………..276
Обработка преамбулы и тела документа………………………………………………….279
Использование команд и окружений……………………………………………………….280
Запись математических формул………………………………………………………………281
Работа с файлами. ……………………………………………………………………………………282
Создание таблиц и массивов. …………………………………………………………………..282
Работа со списками………………………………………………………………………………….283
Работа с плавающими рисунками и таблицами……………………………………….283
Общие синтаксические ошибки……………………………………………………………….284
Обработка предупреждающих сообщений…………………………………………………..285
Выравнивание текста……………………………………………………………………………….286
Работа со ссылками………………………………………………………………………………….287
Выбор шрифтов. ………………………………………………………………………………………288
Размещение рисунков и таблиц……………………………………………………………….288
Настройка класса документа……………………………………………………………………289
Исключение из использования устаревших классов и пакетов. …………………..289
Общие методики устранения проблем. ……………………………………………………….291
Резюме…………………………………………………………………………………………………………294

Глава 14. Использование сетевых ресурсов…………………………………..295
Веб-форумы, сайты вопросов и ответов (Q&A) и дискуссионные клубы……..295
LaTeX.org………………………………………………………………………………………………….296
TeX и LaTeX на Stack Exchange………………………………………………………………….297
Форумы на других языках………………………………………………………………………..298
Группы Usenet………………………………………………………………………………………….298
Списки часто задаваемых вопросов…………………………………………………………….299

Содержание  13

Списки рассылки. ………………………………………………………………………………………..300
Сайты пользовательских групп TeX……………………………………………………………..301
Пользовательская группа TeX Users Group. ………………………………………………301
DANTE………………………………………………………………………………………………………301
Проект LaTeX……………………………………………………………………………………………302
UK TUG – TeX в Великобритании………………………………………………………………302
Другие локальные пользовательские группы…………………………………………..302
Веб-сайты для программного обеспечения и редакторов LaTeX………………….302
Дистрибутивы LaTeX………………………………………………………………………………..303
Редакторы LaTeX………………………………………………………………………………………303
Независимые от платформы………………………………………………………………..303
Windows. ………………………………………………………………………………………………304
Linux…………………………………………………………………………………………………….304
Mac OS X……………………………………………………………………………………………….304
Визуальный редактор LyX…………………………………………………………………….304
CTAN – Comprehensive TeX Archive Network……………………………………………..305
Графические галереи……………………………………………………………………………………305
Блоги по LaTeX. ……………………………………………………………………………………………305
Сообщения в Твиттере…………………………………………………………………………………306
Резюме…………………………………………………………………………………………………………307

Предметный указатель. ……………………………………………………………………….309

От издательства
Отзывы и пожелания
Мы всегда рады отзывам наших читателей. Расскажите нам, что вы ду­маете
об этой книге – что понравилось или, может быть, не понравилось. Отзывы
важны для нас, чтобы выпускать книги, которые будут для вас максимально
полезны.
Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя на
страницу книги и оставив комментарий в разделе «Отзывы и рецензии».
Также можно послать письмо главному редактору по адресу dmkpress@gmail.
com; при этом укажите название книги в теме письма.
Если вы являетесь экспертом в какой-либо области и заинтересованы в написании новой книги, заполните форму на нашем сайте по адресу http://
dmkpress.com/authors/publish_book/ или напишите в издательство по адресу
dmkpress@gmail.com.

Список опечаток
Хотя мы приняли все возможные меры для того, чтобы обеспечить высокое качество наших текстов, ошибки все равно случаются. Если вы найдете
ошибку в одной из наших книг, мы будем очень благодарны, если вы сообщите о ней главному редактору по адресу dmkpress@gmail.com. Сделав это,
вы избавите других читателей от недопонимания и поможете нам улучшить
последующие издания этой книги.

Нарушение авторских прав
Пиратство в интернете по-прежнему остается насущной проблемой. Издательства «ДМК Пресс» и Packt Publishing очень серьезно относятся к вопросам
защиты авторских прав и лицензирования. Если вы столкнетесь в интернете
с незаконной публикацией какой-либо из наших книг, пожалуйста, пришлите
нам ссылку на интернет-ресурс, чтобы мы могли применить санкции.
Ссылку на подозрительные материалы можно прислать по адресу элект­
ронной почты dmkpress@gmail.com.
Мы высоко ценим любую помощь по защите наших авторов, благодаря
которой мы можем предоставлять вам качественные материалы.

Участники проекта
Об авторе
Штефан Коттвиц (Stefan Kottwitz) изучал математику в университетах
Йены и Гамбурга. Сейчас он работает инженером по сетям и компьютерной
безопас­ности в компаниях Lufhansa Industry Solutions и Eurowings Aviation.
На протяжении многих лет Штефан оказывает поддержку LaTeX на онлайн-форумах. Он поддерживает веб-форумы LaTeX.org и goLaTeX.de, а также
сайты вопросов и ответов TeXwelt.de и TeXnique.fr, управляет сайтами галереи графики TeX TeXample.net, TikZ.net и PGFplots.net, онлайн-компилятором
TeXlive.net, сервисом TeXdoc.org и зеркалом программного обеспечения CTAN.
net. Кроме того, Штефан является модератором сайта TeX Stack Exchange
и matheplanet.com. Он публикует идеи и новости из мира TeX в своих блогах
LaTeX.net и TeX.co.
До этой книги он написал первое издание «LaTeX Beginner’s Guide» в 2011 г.
и «LaTeX Cookbook» в 2015 г. Обе книги были опубликованы издательством
Packt.

О рецензентах
Лянь Цзе Лим (Lian Tze Lim) наслаждалась комфортом и красотой набора
текста в LaTeX почти два десятилетия. В настоящее время она работает в сообществе TeXpert в Overleaf и помогает пользователям Overleaf с вопросами,
связанными с LaTeX, с 2014 г.
Джозеф Райт (Joseph Wright) является автором популярного пакета siunitx
для модулей, возглавляет группу сопровождения класса beamer и является
участником проекта LaTeX. Он также является одним из модераторов популярного сайта вопросов и ответов TeX – LaTeX Stack Exchange.

Предисловие
LaTeX – это высококачественное программное обеспечение с открытым исходным кодом для набора и оформления текста на типографском уровне,
которое позволяет создавать профессиональные печатные документы и файлы PDF. Но поскольку LaTeX представляет собой мощный и сложный инструмент, трудности в начале его освоения могут обескуражить пользователя,
а особенные аспекты, такие как изменение макета, могут показаться еще
более сложными. Использование Microsoft Word или другого программного
обеспечения для обработки текстов, возможно, кажется более простым, но
после того, как вы лучше познакомитесь с LaTeX, то увидите, что возможности этого инструмента намного перевешивают любые первоначальные
трудности. Эта книга поможет вам справиться со всеми трудностями и упрос­
тит начало работы с LaTeX. Если вы пишете математические, научные или
технические статьи, это превосходная книга для вас.
«LaTeX: руководство для начинающих» предлагает читателю практическое
введение в LaTeX. Сначала подробно описана установка и основы практического использования, потом вы научитесь оформлять документы, содержащие таблицы, рисунки, математические формулы и стандартные элементы
книги, такие как библиографии, глоссарии и указатели. Многие описанные
в пошаговом стиле примеры начинаются с тонкой настройки текста, формул
и макета страницы, а затем переходят к управлению сложными документами
и использованию современных функций формата PDF. Начать работу с LaTeX
легко, если у вас есть второе издание «LaTeX: руководство для начинающих».
Этот практический учебник проведет вас через основные этапы освоения
LaTeX, от установки программного обеспечения, форматирования и выравнивания текста до дизайна страницы. С самого начала вы научитесь использовать макросы и стили, чтобы поддерживать согласованную структуру
документа, не выполняя лишнюю работу по набору и оформлению текста.
Эта книга поможет вам научиться создавать профессионально выглядящие
таблицы, включать в текст изображения и записывать сложные математические формулы. Вы убедитесь, насколько легко можно создавать библиографические списки и указатели. Наконец, вы узнаете, как управлять сложными
документами и как пользоваться преимуществами современных функций
формата PDF. Подробная информация об онлайн-ресурсах, таких как архивы
программного обеспечения, веб-форумы и онлайн-компиляторы, дополняет
это вводное руководство.

Для кого предназначена эта книга
Если вы намереваетесь писать математические или научные статьи, рабочие
материалы для семинаров или даже планируете написать диссертацию, то
эта книга предлагает вам быстрое введение в практическое использование

Предисловие  17

LaTeX. Школьники и студенты университетов по специальностям математика или физика извлекут большую пользу, так же как студенты инженерных
и гуманитарных специальностей. Все обладатели грандиозных замыслов,
все, кто планирует написать статью или книгу, будут очарованы этим высококачественным и стабильным программным обеспечением.

Краткое содержание книги
Глава 1 «Начинаем работу с LaTeX» представляет читателю LaTeX и описывает его преимущества. Здесь подробно по шагам рассматривается процесс
загрузки и установки полного дистрибутивного комплекта LaTeX и демонстрируется создание первого документа. Также представлено описание практического использования онлайнового программного обеспечения Overleaf.
Кроме того, читатель познакомится со способами доступа к документации
пакета.
В главе 2 «Форматирование текста и создание макрокоманд» описывается,
как изменять шрифт, форму и стили текста. Это подразумевает выполнение
операций центрирования и выравнивание абзацев, а также возможности по
улучшению разрывов строк и переносов. Представлена методика логического форматирования и описано, как определить макрокоман­ду и использовать окружения и пакеты.
Глава 3 «Дизайн страниц» показывает, как можно регулировать границы
текста и изменять междустрочный интервал. Демонстрируется применение
портретного, ландшафтного и двухстолбцового макетов. В этой главе мы
будем создавать динамические верхние и нижние колонтитулы, научимся
управлять разделителями страниц и использовать сноски. При чтении этой
главы вы также будете обучаться переопределению существующих команд
и использованию параметров классов.
Глава 4 «Создание списков» посвящена оформлению текста в виде маркированных, нумерованных списков и списков с подзаголовками (списков
определений). Вы научитесь выбирать стили маркеров и нумерации, а также
узнаете, как проектировать общий макет списков.
Глава 5 «Включение изображений» показывает, как включать внешние
изобра­жения с подписями в документы. Здесь демонстрируются преиму­
щества системы автоматизированного размещения иллюстраций LaTeX
и методы ее тонкой настройки.
В главе 6 «Создание таблиц» показано, как создавать профессионально
выглядящие таблицы, и рассматриваются в деталях все подробности форматирования.
Глава 7 «Использование перекрестных ссылок» представляет интеллектуальную систему организации ссылок на разделы, примечания (сноски),
таблицы, рисунки и нумерованные окружения в целом.
В главе 8 «Формирование содержания и списков ссылок» рассматривается
создание и дополнительная настройка содержания и списков иллюстраций
и таблиц. Также описывается, как оформлять цитаты из книг, создавать биб­
лиографические списки и генерировать предметный указатель.

18  Предисловие
В главе 9 «Создание математических формул» подробно описаны способы
набора и форматирования математических формул и выражений. В начале
рассматривается создание простых формул, затем центрированные и нумерованные уравнения. Показано, как выравнивать многострочные уравнения.
Подробно демонстрируется набор математических символов, таких как знак
квадратного корня, стрелки, буквы греческого алфавита и различные математические операторы. Кроме того, вы научитесь создавать сложные математические структуры, такие как дробные и многоуровневые выражения,
а также матрицы.
Глава 10 «Использование шрифтов» представляет нам мир шрифтов и демонстрирует их разнообразные типы, включая романский (Roman), сансериф и моноширинный шрифт «печатной машинки» в различных формах
и начертаниях.
Глава 11 «Разработка больших документов» помогает управлять документами большого размера посредством разделения их на несколько файлов.
После чтения этой главы вы сможете создавать крупные сложные проекты,
состоящие из подфайлов. Кроме того, мы рассмотрим создание титульных
элементов и библиографических данных в конце книги с различной нумерацией страниц и отделением титульных листов. Мы подробно рассмотрим
этот процесс на примере создания целой книги. Выполняя данное упражнение, вы познакомитесь с применением шаблонов документов, после чего,
наконец, сможете самостоятельно написать диссертацию, книгу или отчет.
Глава 12 «Дополнительное улучшение документов» позволит придать вашим документам бóльшую внешнюю привлекательность. В ней демонстрируются методы изменения внешнего вида заголовков глав и всех типов разделов и подразделов. Вы узнаете, как создавать документы в формате PDF,
насыщенные функциональными особенностями, с закладками, гиперссылками и метаданными.
Глава 13 «Устранение проблем» предоставляет инструментальные средства
для решения возникающих проблем. Вы узнаете о различных типах ошибок
и предупреждений LaTeX и о методах их обработки. После чтения этой главы
вы будете понимать смысл всех сообщений LaTeX и знать, как использовать
их для исправления ошибок.
В главе 14 «Использование сетевых ресурсов» вы найдете справочник по
огромному количеству информационных ресурсов о LaTeX в интернете. Мы
посетим онлайн-форум LaTeX и сайт вопросов и ответов о LaTeX. Эта глава
указывает путь к большим архивам программного обеспечения LaTeX, домашним страницам пользовательских групп TeX, спискам рассылки, группам
Usenet и галереям графики LaTeX. Она расскажет вам, где можно скачать редакторы с поддержкой LaTeX и где можно встретиться с коллегами по LaTeX
в блогах и твиттере.

Как получить максимум пользы от этой книги
Необходим доступ к компьютеру с установленным на нем программным
обеспечением LaTeX. Будет полезным наличие соединения с интернетом для

Предисловие  19

установки и обновления программного обеспечения. LaTeX можно установить на большинстве операционных систем, поэтому можно использовать
Windows, Linux, macOS или любую Unix-подобную систему.
В этой книге используется свободно распространяемый дистрибутив TeX
Live, который работает на всех перечисленных выше платформах. Для его установки потребуется соединение с интернетом или диск TeX Live DVD. В книге
также используется кросс-платформенный редактор TeXworks, но вы можете
пользоваться любым текстовым редактором, который вам больше нравится.
При отсутствии установленного программного обеспечения LaTeX можно
работать с примерами кода на сайте https://latexguide.org, где имеется онлайновый компилятор.
Если вы используете цифровую версию этой книги, то рекомендуется вводить исходный код вручную или получить доступ к примерам кода из этой
книги в репозитории GitHub (ссылка приводится в следующем разделе). Это
поможет избежать потенциальных ошибок при копировании и вставке исходного кода.

Загрузка файлов с примерами исходного кода
Файлы с примерами исходного кода из этой книги можно скачать из репозитория GitHub здесь: https://github.com/PacktPublishing/LaTeX-Beginner-s-GuideSecond-Edition. Если потребуется обновление исходного кода, то оно будет
выполняться в этом репозитории GitHub.
На сайте книги https://latexguide.org также можно скачать файлы с примерами исходного кода. Кроме того, можно посетить сайт https://latex-cookbook.
net, который предоставляет более полные примеры кода, а еще онлайновый
компилятор.
Другие комплекты исходных кодов из нашего обширного каталога книг
и видеоматериалов доступны на сайте https://github.com/PacktPublishing. Не
забывайте заглядывать туда.

Условные обозначения, используемые
в этой книге
Существует ряд условных текстовых обозначений, используемых во всей
книге.
Исходный код в текстовом абзаце – выделяет фрагменты исходного кода
в обычном тексте: слова, инструкции, операторы, имена модулей, пакетов
и т. п. Пример: «Загрузите пакет fontenc и выберите кодировку шрифта T1».
Блок исходного кода изображается следующим образом:
[
int_a^b ! f(x) , dx = lim_{Delta x rightarrow 0}
sum_{i=1}^{n} f(x_i) ,Delta x_i
]

Powered by TCPDF (www.tcpdf.org)

20  Предисловие
Когда необходимо привлечь внимание читателя к конкретному фрагменту
в блоке кода, соответствующие строки или элементы выделяются полужирным шрифтом, как показано ниже:
documentclass{book}
usepackage{cleveref}
crefname{enumi}{position}{positions}
begin{document}
chapter{Statistics}
label{stats}
section{Most used packages by LaTeX.org users}
label{packages}

Полужирный шрифт – обозначает пункты экранных меню, имена кнопок, окон и вкладок, а также названия клавиш. Например: «Щелкните по
кнопке Typeset, чтобы скомпилировать документ».
Примечание
Так выглядят примечания, советы и подсказки.

Контакты
Обратная связь с читателями всегда приветствуется.
Общая обратная связь: если у вас возникли вопросы по любому аспекту
этой книги, то напишите сообщение на электронный адрес customercare@
packtpub.com с указанием названия книги и темы сообщения.
Вопросы по LaTeX: любой вопрос по LaTeX можно задать на форуме автора этой книги: https://latex.org.
Ошибки: мы весьма тщательно проверяем содержимое наших книг, но
ошибки все же встречаются. Если вы обнаружили ошибку или опечатку в этой
книге, то мы будем благодарны вам за сообщение о ней. Заполните соответствующую форму на сайте www.packtpub.com/support/errata.
Пиратство: если вам встретилась нелегальная копия наших материалов
в любой форме в интернете, то мы будем благодарны, если вы сообщите адрес
этой локации или имя веб-сайта. Ссылки на пиратские копии отправляйте
по адресу электронной почты copyright@packt.com.
Если вы хотите стать автором: если в какой-либо теме вы являетесь
экспертом и заинтересованы в написании или в соавторстве книги, то рекомендуем посетить сайт https://www.packtpub.com/authors.

Глава

1

Начинаем работу с LaTeX
Вам знакомы программы для обработки текста: вы что-то вводите с клавиа­
туры, а программа выводит это как есть на экран. В противоположность
таким программам LaTeX, как программное обеспечение типографского
набора и оформления (typesetting), принимает от вас инструкции и текст,
а затем создает некоторый вывод. LaTeX формирует высококачественный
результат на основе весьма сложных алгоритмов для выключки, выравнивания текста, балансировки пробелов, размещения иллюстраций и многих
других операций, таких как применение предварительно определенных стилей форматирования для заголовков и общего макета страниц, который вы
можете настроить сами.
Вы готовы отказаться от этих текстовых процессоров, работающих по системе «что видим, то и получаем», и погрузиться в мир точного, надежного
и высококачественного типографского набора и оформления текстов? Да?
Тогда начнем.
Очень хорошо, что вы решили изучать LaTeX. Эта книга проведет вас по
всему пути обучения, чтобы помочь получить максимум пользы. Давайте
сначала кратко обсудим достоинства и затруднительные аспекты LaTeX, а затем мы должны будем подготовить к работе необходимые инструменты.
В этой главе мы более подробно познакомимся с LaTeX, а также узнаем,
как установить и

использовать это программное обеспечение. Будут рассмат­
риваться следующие темы:
  что такое LaTeX;
  установка и использование LaTeX;
  работа с LaTeX в режиме онлайн с применением Overleaf;
  доступ к документации.
В конце этой главы у вас будет установлено работающее программное
обеспечение LaTeX, и вы узнаете, как набирать, редактировать и оформлять
документ, а также как получить дополнительную документацию.
Итак, начинаем.

Технические требования
Здесь мы сосредоточим внимание на операционной системе Windows, но вы
можете установить LaTeX в Mac OS X, Linux и других операционных системах.
Полная установка требует около 8 Гб дискового пространства.

22  Начинаем работу с LaTeX
Если у вас есть надежное соединение с интернетом, то устанавливать LaTeX
не обязательно. Можно использовать онлайновое программное обеспечение
LaTeX, например Overleaf. Мы рассмотрим Overleaf в конце этой главы.
Все примеры исходного кода из данной книги доступны в репозитории
GitHub: https://github.com/PacktPublishing/LaTeX-Beginner-s-Guide.
На веб-сайте этой книги https://latexguide.org вы можете читать, редактировать и компилировать каждый пример исходного кода из этой книги
в режиме онлайн без необходимости установки каких-либо программ. Браузер интернета с поддержкой JavaScript обеспечит все необходимое для этих
упражнений. Также потребуется настольный компьютер, ноутбук, планшет
или смартфон.

Что такое LaTeX
LaTeX (читается: «латех») – это свободно распространяемое программное обеспечение с открытым исходным кодом для типографского набора
и оформления документов. LaTeX – не текстовый процессор, а язык разметки
документов.
Изначально LaTeX был написан Лесли Лэмпортом (Leslie Lamport) на основе механизма типографской верстки документов TeX (читается: «тех»),
созданного Дональдом Кнутом (Donald Knuth). Часто говорят просто TeX,
имея в виду LaTeX. Это программное обеспечение имеет долгую историю,
о которой можно прочитать здесь: https://tug.org/whatis.html.
Далее мы узнаем, как можно получить максимум пользы от LaTeX.

Преимущества LaTeX
LaTeX особенно хорошо подходит для создания научных и технических документов. Превосходная возможность набора математических формул в LaTeX уже стала легендарной. Предположим, что вы студент или научный работник. В этом случае LaTeX безусловно является наилучшим выбором, но
даже если вам не нужны его возможности по оформлению научных текстов,
существуют и другие варианты использования – LaTeX создает весьма высококачественный результат и при этом невероятно стабилен. Он с легкостью
обрабатывает сложные документы вне зависимости от их размера.
Еще одним замечательным достоинством LaTeX являются его возможности по созданию перекрестных ссылок, автоматической нумерации, а также
генерации оглавления, списков иллюстраций и таблиц, предметных указателей, словарей терминов и библиографий. LaTeX многоязычен с поддержкой
специфических особенностей различных (естественных) языков и может использовать функциональные возможности языка разметки PostScript и формата PDF.
Помимо того что LaTeX идеально подходит для научных работников, он невероятно гибок – существуют шаблоны для писем, презентаций, счетов, книг
по философии, юридических текстов, партитур и даже для записи шахмат-

Что такое LaTeX  23

ных партий. Сотни пользователей LaTeX написали тысячи шаблонов, стилей
и полезных инструментов для всех возможных целей. Все это собирается
и классифицируется в режиме онлайн на архивных серверах.
Вы можете извлечь пользу из впечатляюще высокого качества LaTeX, начав со стилей, принятых по умолчанию и полагаясь на его интеллектуальное форматирование, но можно также свободно настраивать и изменять все
настройки. Члены сообщества TeX уже написали множество расширений,
удовлетворяющих почти все потребности форматирования.

Достоинства открытого исходного кода
Код LaTeX полностью открыт, бесплатен и доступен для чтения каждому.
Это позволяет вам изучать и изменять все, от ядра LaTeX до самых свежих
пакетов расширений. Но что это значит для новичка? Существует огромное сообщество LaTeX, в котором много дружелюбных и отзывчивых людей.
Даже если вы не можете напрямую использовать преимущества открытого
исходного кода, эти люди способны прочитать исходный код и помочь вам.
Просто присоединяйтесь к веб-форуму LaTeX и задавайте там свои вопросы.
При необходимости добровольные помощники будут копаться в исходниках
LaTeX и, по всей вероятности, найдут для вас решение, иногда рекомендуя
подходящий пакет, часто предоставляя переопределение коман­ды, принятой
по умолчанию.
В наши дни мы пользуемся преимуществами разработок сообщества LaTeX, продолжающихся в течение уже почти 30 лет. Философия открытого исходного кода сделала это возможным, поскольку каждый пользователь может
изучать и улучшать программное обеспечение и развивать его. В главе 14
«Использование сетевых ресурсов» указан путь к этому сообществу.

Разделение формы и содержания
Основополагающий принцип LaTeX – автор не должен уделять слишком
много внимания задачам форматирования. Обычно автор сосредоточен на
содержании, а форматирование выполняет логически. Например, вместо
того чтобы писать название главы крупными жирными буквами, вы прос­то
говорите LaTeX, что это название главы. Вы можете позволить LaTeX отформатировать заголовок или указать в настройках документа, как будут
выглядеть заголовки, – только один раз для всего документа. LaTeX широко
использует файлы стилей, называемые классами и пакетами, что упрощает
разработку и изменение внешнего вида всего документа и всех его деталей.

Переносимость
LaTeX доступен почти для всех операционных систем, таких как Windows,
Linux, Mac OS X и многих других. Его формат файла – простой текст, читае­
мый и редактируемый во всех операционных системах, что означает, что

24  Начинаем работу с LaTeX
LaTeX будет создавать одинаковый вывод в каждой системе. Существует несколько пакетов программного обеспечения LaTeX, которые мы называем
дистрибутивами TeX. Мы сосредоточимся на дистрибутиве TeX Live, поскольку он доступен для Windows, Linux и Mac OS X. На Mac собственная версия
TeX Live называется MacTeX.
LaTeX не имеет графического пользовательского интерфейса, и это одна
из причин его высокой переносимости. Вы можете выбрать любой текстовый
редактор. Для каждой операционной системы существует множество редакторов, иногда даже со специализацией на LaTeX. Некоторые редакторы доступны для нескольких операционных систем, например TeXworks работает
в Windows, Linux и Mac OS X, что является одной из причин, по которой мы
будем использовать его в нашей книге. Другая важная причина заключается
в том, что он, вероятно, лучше всего подходит для начинающих.
LaTeX генерирует вывод в формате PDF, который можно распечатать
и прочитать на большинстве компьютеров и который выглядит одинаково,
независимо от операционной системы. Помимо PDF, он поддерживает вывод
в форматах DVI, PostScript и HTML, подготавливая публикацию для распространения как в печатном виде, так и в интернете, например на персональных компьютерах, устройствах для чтения электронных книг и смартфонах.
Подводим итог: LaTeX можно переносить тремя способами – непосредственно исходный код, реализация и результат (вывод).

Защита вашей работы
Документы LaTeX хранятся в простом текстовом формате, удобном для чтения человеком, а не в каком-то непонятном проприетарном формате текс­
товых процессоров, который может изменяться в каждой очередной версии
одной и той же программы.
Попробуйте открыть документ 20-летней давности, написанный в коммерческом текстовом редакторе. Что может показать ваше современное программное обеспечение? Даже если вы сможете прочитать файл, его внешний
вид, несомненно, будет отличаться от прежнего. LaTeX обещает, что документ
всегда будет оставаться удобным для чтения и вывод результата всегда будет
одинаковым. Несмотря на непрерывное развитие LaTeX, он всегда остается
обратно совместимым.
Документы текстового процессора могут быть заражены вирусами, а вредоносные макросы могут уничтожить данные. Вы когда-нибудь слышали
о вирусе, «скрывающемся» в текстовом файле? Документам LaTeX вирусы
не угрожают.

Как начать работу с LaTeX
Кривая обучения может быть крутой, но эта книга поможет вам справиться
с трудностями.
Хотя написание кода LaTeX выглядит как программирование, не пугайтесь.
Скоро вы будете знать часто используемые коман­ды, а текстовые редакторы

Установка и использование LaTeX  25

с автодополнением и выделением ключевых слов вам помогут. Они могут
даже предоставить вам меню и диалоги с нужными коман­дами.
Вы все еще думаете, что пройдет много времени, прежде чем вы научитесь
добиваться достойных результатов? Не волнуйтесь – эта книга поможет вам
быстро освоиться. Обучение будет происходить с использованием множества
практических примеров. Еще больше примеров можно найти и загрузить из
интернета. В главе 14 «Использование сетевых ресурсов» описаны онлайновые ресурсы. Есть справочные форумы LaTeX, где можно получить ответы на
возникшие у вас вопросы. В частности, на сайте https://latex.org есть специальный форум для читателей этой книги. Обязательно посетите его.

Методики работы с LaTeX
Существует два методических подхода к работе с LaTeX:
  обычный способ – установка LaTeX на свой компьютер. Это довольно
просто, и мы подробно рассмотрим установку в ОС Windows в разделе
«Установка и использование LaTeX»;
  другой способ – использование LaTeX в режиме онлайн в облаке. Локальная установка не требуется, а все, что вам нужно, – это подключенный к интернету компьютер, планшет или телефон. Мы рассмотрим
этот вариант в разделе «Работа с LaTeX в режиме онлайн с использованием Overleaf» в конце данной главы.
Теперь продолжим и перейдем к процессу локальной установки LaTeX на
компьютере. При желании можно пока пропустить описание этого процесса
и сразу перейти к разделу «Работа с LaTeX в режиме онлайн с использованием Overleaf», а затем решить, какой подход вы хотели бы использовать.

Установка и использование LaTeX
Начнем с установки дистрибутивного комплекта LaTeX TeX Live. Этот дистрибутивный комплект доступен для Windows, Linux, Mac OS X (MacTeX)
и других Unix-подобных операционных систем. TeX Live имеет полноценную
поддержку и сопровождение и активно разрабатывается.

Другие дистрибутивы LaTeX
Другим превосходным, удобным для пользователя дистрибутивным комплектом для
ОС Windows является MiKTeX. Его легко установить, как и любое иное приложение
Windows. Скачать его можно здесь: https://miktex.org. Для получения более подробной информации и для сравнения различных дистрибутивов рекомендуется посетить
сайт https://latexguide.org/distributions.

TeX Live можно установить для одного пользователя (т. е. для вас) или как
совместно используемое программное обеспечение для всех пользователей данного компьютера. Последний вариант называется режимом адми­
нистратора (admin mode). Он требует запуска процедуры установки от имени

26  Начинаем работу с LaTeX
администратора: для этого нужно зарегистрироваться в системе с учетной
записью администратора или щелкнуть правой кнопкой мыши по имени
устанавливаемой программы и выбрать пункт меню Запуск от имени администратора (Run as administrator).
Рекомендуется установка в режиме одного пользователя (single-user mode).
Сначала мы посетим домашнюю страницу TeX Live и пройдем опрос о возможностях установки. Для этого в браузере откройте домашнюю страницу
TeX Live: https://tug.org/texlive.

Рис. 1.1  Домашняя страница TeX Live

Внимательно прочитайте содержимое этой домашней страницы, чтобы
получить полную информацию, предлагаемую на ней, но в этой книге мы
рассмотрим только два типа установки:
  установка TeX Live с использованием мастера сетевой установки, которая будет выполняться в режиме онлайн и потребует соединения
с интернетом;
  установка TeX Live в режиме офлайн – она начинается с долговременной загрузки, но затем можно выполнить установку без соединения
с интернетом.
Перед началом установки кратко рассмотрим соглашения об организации
пакетов LaTeX с различными степенями модульности:
  пакет (package), также называемый файлом стиля (style file), – это отдельный файл LaTeX с несколькими макрокоман­дами для добавления
специализированных функциональных возможностей или для обеспечения конкретно определенного вида и стиля документа. Этот файл
имеет расширение .sty;
  комплект (bundle) – комплект пакетов с одинаковыми целями (задачами). Он также может содержать файлы классов, которые имеют расширение .cls;
  набор (collection) – большой комплект пакетов, охватывающий довольно-таки обширную область деятельности. Например, это может быть

Установка и использование LaTeX  27

расширенный набор пакетов для математики и естественных наук,
пакеты для музыки или для графики;
  схема (scheme) – это вариант установки LaTeX конкретно определенного размера. Размер может быть минимальным (minimal) (наименьшее
количество компонентов только для обеспечения работы), базовым
(basic) (наиболее часто требуемые для использования компоненты) или
полным (full) (все доступные компоненты).
Теперь можно устанавливать и обновлять LaTeX с полным пониманием
описанной выше его организации. Самый простой вариант – установка всех
доступных компонентов, т. е. полная схема (full scheme). При таком подходе
не будет пропущен ни один пакет.
Проверим оба метода установки на компьютере с операционной системой
Windows. Сначала будет выполнена установка по интернету, для которой потребуется надежное и быстрое сетевое соединение. Если вы не располагаете
таким соединением, то можете сразу перейти к разделу «Установка TeX Live
в режиме офлайн».

Установка TeX Live с использованием мастера
сетевой установки
Мы скачаем программу сетевой установки TeX Live и установим полный дистрибутивный комплект TeX Live на свой компьютер. Для этого необходимо
выполнить описанные ниже шаги.
1. Щелкнуть по гиперссылке download, как показано на рис. 1.1, или перейти на страницу https://tug.org/texlive/acquire-netinstall.html.

Рис. 1.2  Инструкции по установке

2. Скачать выполняемый файл программы установки install-tl-windows.
exe и запусить эту программу.
3. Подтвердить выбор режима установки (для одного пользователя Single-user или от имени администратора Administrator), щелкнуть по
кнопке Next (Дальше), затем по кнопке Install (Установить).

28  Начинаем работу с LaTeX
4. Программа сетевой установки автоматически определит язык вашей
операционной системы. Можно выбрать язык графического пользовательского интерфейса (Graphical User Interface – GUI), щелкнув по пункту
меню GUI language в открывшемся окне, как можно видеть на рис. 1.3.

Рис. 1.3  Программа установки TeX Live

5. Можно изменить корневой каталог установки, т. е. локацию, в которой
размещаются все устанавливаемые файлы TeX Live на жестком диске.
Указанная по умолчанию полная установка является правильным выбором, но вы можете щелкнуть по кнопке Advanced (Дополнительные
параметры), чтобы определить более точно подробности предстоящей
процедуры установки, которые можно видеть на рис. 1.4.

Рис. 1.4  Дополнительные параметры программы установки TeX Live

Установка и использование LaTeX  29

6. Можно изменить параметр Scheme (возможные варианты: Full, Medium и Small), а также настроить количество наборов программного
обеспечения, например устанавливаемых форматов, шрифтов, стилей,
графических пакетов, а кроме того – редактор, поддержку (естественных) языков и многое другое. Поскольку рекомендуемые варианты уже
являются наиболее важными частями устанавливаемого дистрибутивного комплекта, отмена нескольких наборов не позволит существенно
сэкономить пространство на диске. Рекомендуется полная схема установки.
7. Щелкните по кнопке Install, чтобы начать установку. Теперь взаимодействие с программой не потребуется в течение достаточно длительного времени, и вы можете расслабиться, ожидая, когда все эти тысячи
пакетов TeX будут загружены и установлены.

Рис. 1.5  Процесс установки

8. Наконец, вы получаете сообщение-приветствие. Завершите процесс
установки, щелкнув по кнопке Close (Закрыть).
Итак, вы завершили процедуру установки TeX Live. Теперь меню Пуск
(Start) содержит папку TeX Live 2021, в которой имеется шесть программ,
как показано на рис. 1.6.

Рис. 1.6  TeX Live в меню Пуск
системы Windows

Краткое описание этих программ:
  DVIOUT DVI viewer – программа для просмотра классического формата
вывода LaTeX DVI (в наше время большинство пользователей выбирают
формат вывода PDF, поэтому, возможно, эта программа не потребуется);

30  Начинаем работу с LaTeX
  TeX Live command-line – используйте этот инструмент, если предпочитаете выполнять другие программы TeX Live в командной строке;
  TeX Live documentation – открывает руководство по TeX Live в веббраузере;
  TeX Live Manager – это инструмент для управления пакетами (например, для установки и обновления пакетов LaTeX);
  TeXworks editor – это редактор, который был разработан для удобного
создания документов LaTeX. В этой книге мы будем активно использовать редактор TeXworks;
  Uninstall TeX Live – используйте это инструментальное средство перед
установкой новой версии TeX Live с нуля или если захотите установить
вместо TeX Live дистрибутив MiKTeX.
Теперь рассмотрим во всех подробностях установку TeX Live в режиме
офлайн.

Установка TeX Live в режиме офлайн
Каждый год группа пользователей TeX (TeX User Group – TUG) создает DVD
с комплектом программного обеспечения TeX и рассылает этот диск членам
TUG. Вы можете получить такой DVD от члена TUG или приобрести его в вебмагазине TUG. В 2021 г. диск стоил 16 долл. Но можно бесплатно скачать содержимое этого диска.
Теперь мы скачаем ISO-образ TeX Live размером около 4 Гб. После завершения загрузки можно записать этот образ на физический DVD и запустить
с него процесс установки. Шаги установки подробно описаны ниже.
1. Перейти на страницу загрузки https://tug.org/texlive/acquire-iso.html.
2. Загрузить файл образа диска texlive.iso. По возможности используйте
менеджер загрузок, особенно если ваше соединение с интернетом нестабильно.
3. Запишите скачанный файл ISO-образа на физический DVD с по­мощью
специализированной программы, поддерживающей формат ISO, или
распакуйте ISO-образ на жесткий диск. Например, бесплатная программа-архиватор 7-zip может распаковывать ISO-файлы.
4. Среди распакованных файлов или на созданном DVD вы найдете файлы скриптов (bat-файлы) установки install-tl и install-tl-advanced. Выбрав один из них, запустите его и пройдите всю процедуру установки,
аналогичную установке в режиме онлайн. Более подробная информация доступна здесь: https://tug.org/texlive/quickinstall.html.
Установка TeX в режиме офлайн выполнялась точно так же, как и первая
(онлайн) установка. Но в этом случае у вас есть все данные, и вам не потребуется подключение к интернету во время установки или для следующей
установки. Этот способ загрузки образа DVD особенно рекомендуется, если
вы в будущем планируете установить TeX Live на другой компьютер или хотите передать дистрибутив TeX Live друзьям либо коллегам.
Поскольку TeX успешно работает и в других операционных системах, крат­
ко рассмотрим эти варианты.

Установка и использование LaTeX  31

Установка TeX Live в других операционных
системах
TeX работает не только в Windows, но и во многих других операционных
системах. Ниже приведены краткие описания процедур установки.
  Mac OS X – специализированную версию TeX Live можно скачать здесь:
https://tug.org/mactex. Скачайте огромный файл с расширением .pkg
и выполните двойной щелчок по нему для начала установки. Выводятся весьма подробные и понятные инструкции.
  Ubuntu Linux – воспользуйтесь услугами Software Center для установки
пакетов TeX Live или выполните коман­ду sudo apt-get install texlivefull для установки полного комплекта.
  Debian Linux – используйте менеджер пакетов Synaptic для установки
пакетов TeX Live или выполните коман­ду apt-get install texlive-full
(как суперпользователь root или с по­мощью коман­ды sudo) для установки полного комплекта.
  Red Hat, CentOS и Fedora Linux – используйте менеджер пакетов Red
Hat или коман­ду yum в командной строке, например yum install texlivescheme-full, или DNF: sudo dnf install texlive-scheme-full.
  Другие операционные системы – перейдите на страницу https://tug.org/
texlive/quickinstall.html и выполняйте приведенные на ней инструкции.
Если вы хотите пользоваться только свежими версиями, то можете загрузить и установить самую последнюю версию TeX Live прямо с домашней
страницы, а не версию из репозиториев операционных систем, как упоминалось в приведенных выше описаниях.
Если потребуется обновление или добавление пакетов, то переходите
к следующему подразделу – там вы узнаете, как это сделать.

Обновление TeX Live и установка новых пакетов
Разработчики LaTeX обновляют его непрерывно, добавляя новые функцио­
нальные возможности и исправляя ошибки. Время от времени вы можете
обновлять и свою установленную систему LaTeX.
Для этого перейдите в меню Пуск (Start), затем в папку TeX Live и запустите программу TeX Live Manager (ее более короткое имя tlmgr, а также
есть еще имя TeX Live Shell). Это приложение предназначено для обновления и для установки дополнительных пакетов. Посмотрите на рис. 1.7,
чтобы мы могли продолжить обсуждение использования программы TeX
Live Manager.
В первом разделе программы TeX Live Manager показан Repository (Репозиторий). Репозиторий – это сервер с архивом программного обеспечения TeX Live. Если принятый по умолчанию репозиторий недоступен или
слишком медленно работает в вашем регионе, то можно щелкнуть по пункту
меню Options (Параметры) и выбрать другой репозиторий из предложенного
списка.

32  Начинаем работу с LaTeX

Рис. 1.7  Окно программы TeX Live Manager

В меню File щелкните по пункту Load repository (Загрузить репозиторий)
для синхронизации вашей версии LaTeX и текущего состояния программного
обеспечения в репозитории.
В подразделе PACKAGE LIST (Список пакетов) можно искать пакеты по
имени или установить фильтр для просмотра всех доступных пакетов, или
только установленных, или только неустановленных, или требующих обновления. В центре рис. 1.7 можно видеть возможность изменения степени
модульности для просмотра всех пакетов либо только наборов или схем.
В нижней части окна показаны пакеты в соответствии с выбранным фильт­
ром с кратким описанием и с указанием номера версии. Здесь можно выбирать
пакеты. Затем нужно щелкнуть по кнопке Install marked (Установить помеченные), если требуется установить выбранные пакеты, или по кнопке Remove
marked (Удалить помеченные), для деинсталляции выбранных пакетов.
Более простой способ – щелкнуть по кнопке Update all (Обновить все).
Если доступна и кликабельна кнопка Update tlmgr (Обновить менеджер
tlmgr), то доступно обновление самой программы TeX Live Manager, и можно
щелкнуть по этой кнопке, чтобы обновить программу.
Ежегодные обновления
Процедура обновления доступна только для текущей установленной версии TeX Live.
Каждый год выходит новая версия TeX Live с указанием года как номера версии. При
ежегодном обновлении лучше всего полностью удалить (деинсталлировать) текущую
версию TeX Live, затем установить новую версию с нуля. На сайте https://tug.org/texlive/ можно посмотреть план ежегодных обновлений с ожидаемыми датами выхода
новых версий.

Установка и использование LaTeX  33

Теперь, когда мы подготовили прочную основу, начнем писать код документов LaTeX.

Создание первого документа
Мы только что установили TeX и редактор для него. Теперь сразу перейдем
к делу и напишем свой первый документ LaTeX, используя редактор TeXworks.
Для пользователей Mac
В приведенном ниже описании, если указана клавиша Ctrl, вы должны использовать
клавишу Cmd.

Наша первая цель – создание документа, содержащего (выводящего) только одно предложение. Используем его, чтобы понять основную структуру
документа LaTeX. Ниже описан пошаговый процесс создания простейшего
документа.
1. Запустить редактор TeXworks, щелкнув по соответствующему значку на
рабочем столе, или выбрать его в меню Пуск (Start). На рис. 1.8 можно
видеть окно редактора с меню, кнопками и панелью инструментов.

Рис. 1.8  Окно редактора TeXworks

2. Щелкнуть по кнопке New (Новый) (или нажать комбинацию клавиш
Ctrl+N) или в меню File (Файл) выбрать пункт New (Новый).
3. Ввести следующие строки текста1:
documentclass{article}
begin{document}
This is our first document.
end{document}

4. Щелкнуть по кнопке Save (Сохранить) (или нажать комбинацию клавиш Ctrl+S) для сохранения документа. Выбрать локацию, в которой
1

Для того чтобы можно было вводить текст не только на английском, но и на русском
языке, сразу после строки documentclass{article} вставьте строки usepackage[utf8]
{inputenc} и usepackage[english,russian]{babel}. Первая коман­да устанавливает внутреннюю кодировку документа (при желании можно выбрать кодировку
cp1251, koi8-r или какую-либо другую). Вторая коман­да позволит LaTeX правильно
обрабатывать буквы русского алфавита. – Прим. перев.

34  Начинаем работу с LaTeX
вы планируете сохранять документы LaTeX, лучше всего в отдельном
каталоге.
5. Проверить и убедиться в том, что в спускающемся поле в панели инструментов TeXworks выбран вариант pdfLaTeX (этот вариант должен
быть установлен по умолчанию) (см. рис. 1.8).
6. Щелкнуть по кнопке Typeset (Верстка) или нажать комбинацию клавиш Ctrl+T.
7. Автоматически открывается окно вывода, показанное на рис. 1.9.

Рис. 1.9  Вывод в формате PDF
в окне редактора TeXworks

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

Сравнение с более продвинутыми редакторами
LaTeX
У вас есть опыт работы со сложными программами? Нравится ли вам пользоваться мощным редактором с богатым набором функциональных возможностей? Если ответ положительный, то следует взглянуть на перечисленные
ниже редакторы LaTeX. Рекомендуется посетить их веб-сайты, посмотреть
снимки экрана и изучить их функциональные возможности.
  Texmaker – кросс-платформенный редактор, работающий в Windows,
Linux, Mac OS X и Unix-подобных системах: https://xm1math.net/texmaker/.
  TeXstudio – еще один кросс-платформенный редактор для Windows,
Linux, Mac OS X и Unix-подобных систем: https://texstudio.org.
  Kile – удобный для пользователей редактор для операционных систем
с поддержкой программной среды KDE, например Linux: https://kile.
sourceforge.io/.
  TeXShop – простой в использовании и весьма широко распространенный редактор для Mac OS X: https://pages.uoregon.edu/koch/texshop/.

Работа с LaTeX в режиме онлайн с использованием Overleaf  35

Эти редакторы представляют собой бесплатное программное обеспечение
с открытым исходным кодом. Дополнительную информацию о редакторах
можно найти здесь: https://latexguide.org/editors.
Онлайновые редакторы работают в любой операционной системе, имеющей выход в интернет. Давайте подробнее рассмотрим онлайновый редактор
и компилятор в следующем подразделе.

Работа с LaTeX в режиме онлайн
с использованием Overleaf
Локальная установка LaTeX на свой компьютер рекомендуется, но при этом
потребуется около 8 Гб на жестком диске и два часа для завершения установки.
А что вы думаете об использовании LaTeX в интернет-браузере? Здесь
появляется Overleaf. Это исключительно онлайновый сервис LaTeX, который математики, с огромным энтузиазмом относящиеся к TeX, запустили
в 2011 г. Overleaf доступен по следующей ссылке: https://www.overleaf.com.
В этом разделе, описывающем Overleaf, рассматриваются следующие темы:
  проверка требований к использованию Overleaf;
  обзор преимуществ Overleaf;
  оценка возможных сложностей;
  использование редактора Overleaf;
  попытка использования Writefull.
Теперь переходим в режим онлайн.

Что требует Overleaf, и что он предоставляет
Для использования Overleaf необходимы следующие компоненты:
  любой интернет-браузер, например Firefox, Chrome, Opera или Edge;
  но не требуется никакое другое локально установленное программное
обеспечение, как, допустим, компилятор, редактор LaTeX или программа просмотра формата PDF.
Overleaf бесплатен для простого (базового) варианта использования, а этот
вариант подразумевает очень многое. Предоставляется полноценная программная среда TeX Live с неограниченным числом проектов и редактором
с богатыми функциональными возможностями, поддержка совместной работы с другим пользователем с синхронизацией в реальном времени, а также
сотни шаблонов для начала работы. Даже при бесплатном использовании
Overleaf вы сможете с легкостью написать диссертацию или книгу.
Личная или профессиональная подписка на этот сервис с расширенными
возможностями является платной и предоставляет дополнительную функциональность:
  неограниченное количество участников проекта;

36  Начинаем работу с LaTeX
  ведение хронологии (истории) документа (возврат к более ранним
и переход к более поздним версиям документа);
  расширенное управление библиографией (с помощью Mendeley);
  интеграция с синхронизацией с Dropbox;
  интеграция с сервисом GitHub;
  поддержка личного приоритета.
Эти расширенные функциональные возможности выходят за рамки обычного программного обеспечения LaTeX. Можно проверить, имеете ли вы
право на их использование, поскольку многие университеты и организации
сотрудничают с Overleaf, предоставляя своему персоналу доступ к этому сервису в полном объеме.

Преимущества Overleaf
Рассмотрим, что можно получить при использовании Overleaf по сравнению
с локальным использованием стандартных редакторов на компьютере. Overleaf предоставляет следующие возможности:
  использование на любом устройстве, например на настольном компью­
тере, ноутбуке, планшете или смартфоне;
  использование на защищенном компьютере с блокировкой установки
любого программного обеспечения;
  доступ к вашим файлам с любого устройства (например, с личного,
офисного или библиотечного компьютера) после регистрации и входа
с собственным паролем;
  если вы приглашаете кого-либо для совместной работы, то оба можете
напрямую редактировать и просматривать изменения друг друга, что
упрощает сотрудничество;
  автоматический просмотр в реальном времени результата в формате
PDF прямо во время работы;
  доступ к хронологии (истории) проектов LaTeX для отслеживания внесенных изменений;
  сопровождение исходного кода LaTeX комментариями и возможность
отвечать на них;
  возможность работать с самым новым программным обеспечением
LaTeX без необходимости его обновления.
Но при работе с Overleaf существуют и некоторые трудности. Они перечислены в следующем подразделе.

Трудности при работе в режиме онлайн
Хочу пояснить, что при работе с Overleaf могут возникать некоторые затруднения:
  всегда необходимо доступное соединение с интернетом;
  поскольку документы хранятся в сети, вы вынуждены довериться системе защиты данных и авторских прав программного обеспечения
Overleaf. Подробнее см. здесь: https://www.overleaf.com/legal;

Работа с LaTeX в режиме онлайн с использованием Overleaf  37

  вы становитесь зависимым от функциональных возможностей Overleaf, так как используемая версия TeX может немного отставать от официальных обновлений TeX Live;
  скорость зависит от серверов, на которых размещено программное
обеспечение Overleaf, и от качества вашего сетевого соединения, а не
только от производительности вашего личного компьютера.
Рассмотрим подробнее, как работает Overleaf.

Создание первого документа в режиме онлайн
Необходимо создать собственное рабочее пространство в Overleaf, выполнив
два шага. Затем мы начнем работу над нашим первым проектом LaTeX.
1. Зарегистрируйтесь на сервисе Overleaf. На домашней странице Overleaf
щелкните по кнопке Register (Зарегистрироваться) или перейдите на
страницу регистрации https://www.overleaf.com/register. Введите адрес
вашей электронной почты и выберите (введите) личный пароль.
2. Выполните вход в Overleaf. На заглавной странице щелкните по кнопке Login (Войти) или перейдите на страницу https://www.overleaf.com/
login.
Почему необходима регистрация
Доступность по адресу электронной почты полностью соответствует закону о защите
данных. Если вы забыли свой пароль, то можете попросить Overleaf отправить ссылку
для отправки пароля на ваш адрес электронной почты. Как правило, используя свой
адрес электронной почты, вы можете подтвердить свою личность и право собственности на свои данные, если это вам когда-либо понадобится.

Рис. 1.10  Создание нового проекта

3. Щелкните по кнопке New Project (Новый проект). Появится спускающийся список, в котором можно выбрать пустой проект или проект на
основе шаблона, например шаблона книги, презентации, резюме (CV)
или диссертации. Сейчас мы выбираем просто Blank Project (Пустой
проект).

38  Начинаем работу с LaTeX
4. Overleaf предлагает ввести имя проекта. Введите любое имя. Вот и все.
Теперь мы получили новый проект, как показано на рис. 1.11.

Рис. 1.11  Новый проект

Но это не совсем пустой проект, он содержит небольшую панель кода, чтобы вы могли быстро начать работу. В этой панели вы сразу же можете начать
вводить свой текст.
При щелчке по кнопке Recompile (Рекомпиляция) или нажатии клавиш
Ctrl+Enter панель предварительного просмотра в правой части окна будет
обновлена. Можно разрешить автоматическое форматирование, если открыть меню Recompile (Рекомпиляция) и в спускающемся подменю выбрать пункт Auto Compile (Автоматическая компиляция), как показано на
рис. 1.12. После этого итоговый документ будет обновляться автоматически
и непрерывно прямо при вводе текста.

Рис. 1.12  Настройки режима компиляции

Работа с LaTeX в режиме онлайн с использованием Overleaf  39

Поскольку Overleaf отличается от обычных редакторов LaTeX, необходимо
рассмотреть его работу более подробно.

Изучение возможностей Overleaf
Чтобы как можно быстрее увидеть процесс создания более сложного документа в действии и понять, чего можно ожидать от Overleaf, откроем шаблон
магистерской/докторской диссертации Masters/Doctoral Thesis, расположенный здесь: https://www.latextemplates.com/template/masters-doctoral-thesis.
Пос­ле перехода по этому адресу просто щелкните по кнопке Open in Overleaf (Открыть в Overleaf). Overleaf немедленно создает новый проект по выбранному шаблону.

Рис. 1.13  Шаблон диссертации в редакторе Overleaf

На рис. 1.13 около левой границы окна можно видеть структуру папок
и файлы нового проекта. Рядом располагается исходный код LaTeX. Справа –
вывод в формате PDF для предварительного просмотра.
В этой простейшей форме вы вводите исходный код в левой панели, щелкаете по кнопке Recompile и наблюдаете результат в правой панели, как
и в предыдущем примере.
Во время работы Overleaf отслеживает историю документа. Можно помечать версии, чтобы в дальнейшем контролировать и проверять их. Щелчок
по кнопке History (История) в верхней части окна позволяет увидеть помеченные версии (рис. 1.14).
Щелкните по метке версии в правой панели, чтобы перейти к ней.
Чтобы не рассматривать слишком много снимков экрана, ниже приведено
краткое описание всех действий, которые можно выполнить, если щелкнуть
по кнопке Menu (Меню) в левом верхнем углу:
  позволить Overleaf подсчитывать слова в документе, исключая синтаксис кода, например коман­ды и среды;
  синхронизация с Dropbox или GitHub;
  выбор компилятора (pdfLaTeX, classic LaTeX, XeLaTeX, LuaLaTeX – для
более опытных пользователей);

Powered by TCPDF (www.tcpdf.org)

40  Начинаем работу с LaTeX
  установка версии TeX Live, если нужно скомпилировать старый файл,
созданный в более ранней версии TeX Live, или переключиться на более
новую версию;
  выбор основного документа .tex, если проект состоит из нескольких
документов;
  выбор темы визуального оформления редактора для подсветки исходного кода и фона. Можно изменять цветовые схемы, выбирая light
(светлая), pastel (пастельная), dark (темная) и другие;
  выбор начертания и размера шрифта редактора (например, Consolas
или Lucida);
  включение/отключение проверки правописания (орфографии), автодополнения, автоматического закрывания парных скобок и проверки
исходного кода.

Рис. 1.14  История документа в Overleaf

Встроенный механизм проверки правописания (орфографии) Overleaf помечает проб­
лемные слова, подчеркивая их
волнистой линией. Просто щелк­
ните правой кнопкой мыши по
такому слову, чтобы получить
предлагаемые варианты замены,
как показано на рис. 1.15.
Кстати, о проверке правописания – есть кое-что еще.
Рис. 1.15  Работа встроенного механизма
проверки правописания Overleaf

Работа с LaTeX в режиме онлайн с использованием Overleaf  41

Грамматика и языковая обратная связь с Writefull
Расширение Overleaf Writefull проверяет грамматику и предоставляет предполагаемые варианты слов и фраз (словосочетаний) для проверяемого
текста. Writefull предназначен для написания научных текстов и прошел
обучающую тренировку на миллионах статей в научных журналах. Этот инструмент может исправлять опечатки, грамматические ошибки, проблемные
слова, пунктуацию и многое другое.
Рассмотрим, как работает Writefull на предыдущем примере с использованием шаблона диссертации.

Рис. 1.16  Проверка грамматики с по­мощью Writefull

От механизма проверки правописания нет никаких замечаний, но хорошо
натренированный искусственный интеллект расширения Writefull показывает 129 потенциальных проблем и выводит свои предлагаемые варианты для
слов, подчеркнутых красной линией:
  слово though рекомендуется заменить на although;
  doesn’t рекомендуется заменить на does not, т. е. на более формальное
словосочетание.
После слова headers (на рис. 1.16) должна следовать оксфордская запятая
перечисления, т. е. запятая перед словом and в конце списка.
Вы можете не придавать этим замечаниям особого значения, как я в данной книге, где не требуется строгое соблюдение формальностей, но диссертация или статьи о научных исследованиях, да и вообще любые научные
работы могут стать лучше с учетом этих предлагаемых вариантов.
Расширение Writefull доступно в первую очередь для браузера Chrome.
Было объявлено и о поддержке других веб-браузеров, например Firefox, в будущем. Расширение Writefull бесплатно в базовой версии, но существует
и premium-версия, подробности о которой можно узнать на веб-сайте Writefull.

42  Начинаем работу с LaTeX

Рецензирование и комментирование
Вероятно, вы обратили внимание на фрагменты текста, выделенные желтым цветом, и символы типа «облачко текста» на рис. 1.16. Если щелкнуть
по кнопке Review (Рецензирование), то откроется панель рецензирования,
в которой показаны комментарии (см. рис. 1.17).

Рис. 1.17  Рецензирование и комментирование в Overleaf

Можно пометить фрагменты текста, щелкнуть по кнопке Add comment
(Добавить комментарий), написать, что вы думаете о выделенном фрагменте, а также ответить на комментарии других пользователей. Это удобно и полезно как при самостоятельной работе, так и при сотрудничестве с коллегами
или редактором.
Эта и ранее описанные функциональные возможности должны дать полное представление о существующих в настоящее время облачных сервисах
LaTeX.
Использование Overleaf в примерах этой книги
Полный комплект примеров исходного кода из «LaTeX: руководство для начинающих» можно одновременно открыть в Overleaf буквально одним щелчком мыши. Перейдите на страницу https://latexguide.org/code, чтобы скачать весь пакет, и создайте
собственный проект, включающий все примеры из этой книги, готовые к редактированию и компиляции.

В следующем разделе будет представлен способ доступа к дополнительной
сопровождающей документации и ссылкам, необходимым для работы с этой
книгой.

Резюме  43

Доступ к документации
В настоящее время доступны сотни классов и пакетов LaTeX. Ни одна книга
не может описать все их функциональные свойства и особенности. Но большинство из этих пакетов предлагают качественную документацию, которую
вы можете легко открыть и прочитать. Если вы внимательно поработаете
с этой книгой и дополните ее документацией по упомянутым пакетам, то
окажетесь на правильном пути, который позволит стать опытным пользователем LaTeX.
В следующих главах вы узнаете о многих пакетах LaTeX, которые предоставляют дополнительные функциональные возможности. Чтобы быть готовым к их изучению, вы должны просто знать, как получить доступ к документации пакета.
Открыть руководство по пакету можно прямо на своем компьютере сразу
после установки LaTeX:
  на компьютере с ОС Windows – в меню Пуск (Start) перейти в папку
TeX Live и щелкнуть по пункту TeX Live command-line. Или можно
открыть приложение Windows cmd;
  на компьютере с ОС Mac или Linux – запустить приложение Terminal
(Терминал).
Затем нужно просто ввести коман­ду texdoc имя_пакета и нажать клавишу
Ввод (Enter). В браузере откроется страница https://texdoc.org/pkg/имя_пакета. Здесь приведен только шаблон URL, поэтому если нужна документация по
пакету geometry, то необходимо ввести адрес https://texdoc.org/pkg/geometry.
Более подробно об этом см. главу 14 «Использование сетевых ресурсов».

Резюме
В этой главе мы узнали о преимуществах LaTeX, но скоро настанет время
использовать эти достоинства LaTeX для достижения наилучших возможных результатов. Кроме того, мы рассмотрели установку, редактирование
и использование LaTeX локально на вашем компьютере и в режиме онлайн
в облаке.
Теперь, когда у нас есть работающая и протестированная система LaTeX,
мы готовы писать собственные документы LaTeX. В следующей главе мы
подробно поговорим о форматировании текста.

Глава

2
Форматирование
текста и создание
макрокоманд

В предыдущей главе мы установили LaTeX и использовали локальный редактор TeXworks, а также онлайновый редактор Overleaf для создания первого
документа. Теперь мы подробно рассмотрим структуру текста и сосредоточим внимание на деталях его ввода и форматирования.
В этой главе будут рассматриваться следующие темы:
  работа с логическим форматированием;
  объяснение того, как LaTeX читает ввод пользователя;
  изменение текстовых шрифтов;
  создание собственных команд;
  использование боксов для ограничения ширины абзаца;
  разрыв строк и абзацев;
  отключение полного выравнивания;
  отображение цитат.
Работая с примерами и открывая новые функциональные возможности, вы
непременно изучите некоторые основополагающие концепции LaTeX. После
прочтения этой главы вам будут хорошо известны коман­ды и окружения. Вы
даже сможете определять собственные коман­ды.
Теперь, когда мы начали интенсивную работу, возможно, нам будут встречаться сообщения об ошибках при возникновении проблем в исходном коде
документа. В таких случаях вы можете заглянуть в главу 13 «Устранение проб­
лем», чтобы

ознакомиться с возможными решениями.

Технические требования
Необходима установленная программная среда LaTeX на локальном компью­
тере, или можно воспользоваться Overleaf в режиме онлайн. Вы также можете
редактировать и компилировать все примеры в режиме онлайн на соответствующей странице сайта книги: https://latexguide.org/chapter-02.

Работа с логическим форматированием  45

Кроме того, исходный код примеров доступен и в репозитории GitHub:
https://github.com/PacktPublishing/LaTeX-Beginner-s-Guide-Second-Edition/tree/
main/Chapter_02_-_Formatting_Text_and_Creating_Macros.
В этой главе будут использоваться следующие пакеты LaTeX: hyphenat, microtype, parskip, url и xspace. Если вы не работаете в режиме онлайн, то проверьте и убедитесь в том, что все эти пакеты установлены, или что у вас
установлен полный вариант LaTeX, как было рекомендовано в главе 1.

Работа с логическим форматированием
Внутри документа LaTeX мы не должны применять физическое форматирование, например выделять слова полужирным или курсивным шрифтом либо
с по­мощью изменения размера символов. Вместо этого необходимо использовать логическое форматирование (logical formatting), как, например, объявление названия и автора или определение заголовка раздела. Настоящее
форматирование, такое как вывод названия большими буквами и выделение
заголовка раздела полужирным шрифтом, выполняет сам LaTeX.
Физическое форматирование в этой книге
В некоторых примерах, приведенных ниже в этой главе, будет использоваться физическое форматирование, например выделение некоторых слов полужирным или
курсивным шрифтом. Но это сделано для наглядности при изучении практического
использования команд, управляющих шрифтами. Цель этой главы – определение собственных логических команд с по­мощью команд управления шрифтами.

В правильном документе LaTeX физическое форматирование используется только в определении команд логического форматирования. Если необходим некоторый стиль формата, например для ключевых слов, мы определим
соответствующую коман­ду логического форматирования в преамбуле документа. В теле текста документа мы должны использовать только коман­ды
логического форматирования. Это обеспечивает полностью согласованное
форматирование всего текста в целом, и при любом изменении нашего представления о подробностях форматирования можно изменить логические
коман­ды в преамбуле. В следующих разделах мы подробно рассмотрим эти
процедуры.
Но сначала для полного понимания обычной структуры документа начнем
с короткого демонстрационного примера.

Создание документа с названием и заголовком
раздела
Создадим пример короткого документа с простым форматированием. Документ должен включать название, имя автора, дату, заголовок (раздела)
и обычный текст.

46  Форматирование текста и создание макрокоманд
1. Введите приведенный ниже код в редакторе для начала создания небольшого документа1:
documentclass[a4paper,11pt]{article}

2. Определите заголовок, имя автора и дату:
title{Example 2}
author{My name}
date{May 5, 2021}

3. Определите начало документа:
begin{document}

4. Сообщите LaTeX о необходимости вывода полного названия документа, который включает имя автора и дату:
maketitle

5. Создайте заголовок раздела и добавьте некоторый текст:
section{What’s this?}
This is our second document. It contains a title and a
section with text.
end{document}

6. Сохраните документ, щелкнув по кнопке Save (Сохранить) (или нажмите клавиши Ctrl+S). Введите имя файла, например example2.tex.
7. Скомпилируйте документ, щелкнув по кнопке Typeset (Верстка) (или
нажмите клавиши Ctrl+T). Исходный код документа будет преобразован в PDF-файл.
8. Посмотрите, что выводится в результате (рис. 2.1).
Редактор TeXworks выводит в панели предварительного просмотра полученный в результате PDF-файл сразу после щелчка по кнопке Typeset. В данном случае файл называется example2.pdf и расположен в том же каталоге,
что и файл с исходным кодом example2.tex.
В главе 1 мы обсуждали логическое форматирование, а теперь посмотрите
на приведенный выше пример именно с этой точки зрения. Мы сообщили
LaTeX следующую информацию:
  наш документ имеет тип article (статья). Он будет выведен (напечатан) на бумаге формата A4 с использованием размера 11 пунктов для
основного шрифта;
1

Для того чтобы можно было вводить текст не только на английском, но и на русском
языке, сразу после строки documentclass[a4paper,11pt]{article} вставьте строки
usepackage[utf8]{inputenc} и usepackage[english,russian]{babel}. Первая коман­да
устанавливает внутреннюю кодировку документа (при желании можно выбрать
кодировку cp1251, koi8-r или какую-либо другую). Вторая коман­да позволит LaTeX
правильно обрабатывать буквы русского алфавита. Далее во всех примерах в книге,
если потребуется ввод текста на русском языке, необходимо добавлять в преамбулу
документа эти две коман­ды. – Прим. перев.

Работа с логическим форматированием  47

Example 2
My name
May 5, 2021

1

What’s this?

This is our second document. It contains a title and a section with text.

Рис. 2.1  Текст с заголовком

  название документа – Example 2;
  также выводится имя автора;
  документ был создан 5 мая 2021 г. (May 5, 2021).
С учетом содержимого документа мы можем утверждать следующее:
  документ начинается с полного названия;
  первый раздел включает заголовок «What’s this?»;
  после заголовка следует текст: «This is our second document. It contains
a title and a section with text.».
Обратите внимание: мы не выбирали размер шрифта для названия и заголовка и никак не указывали на то, что какие-либо фрагменты текста должны
быть выделены полужирным шрифтом или выровнены по центру. Все это
форматирование выполняет LaTeX, но в любом случае вам не запрещается
сообщать LaTeX, как в действительности должен выглядеть тот или иной
фрагмент.
Автоматическое сохранение
После сохранения документа нет необходимости еще раз щелкать по кнопке Save
(Сохранить). TeXworks автоматически сохраняет документ, когда мы щелкаем по кнопке Typeset (Верстка).

Изучение структуры документа
Рассмотрим подробнее только что созданный документ. Документ LaTeX
не является абсолютно автономным – обычно он основан на универсальном шаблоне. Такой основополагающий шаблон называется классом (class).
Он предоставляет настраиваемые функциональные возможности, обычно
созданные для конкретной цели. Существуют классы для книг, журнальных
статей, писем, презентаций, постеров и многих других публикаций. Сотни
надежных классов можно найти в архивах интернета, но, кроме того, прямо
на вашем компьютере сразу после установки TeX Live. В приведенном выше
примере мы выбрали article – стандартный класс LaTeX, подходящий для
небольших документов, таких как (журнальные) статьи.
Первая строка начинается с documentclass. В начале этого слова указан обратный слеш – такое слово называется коман­дой (command) или макрокоман­

48  Форматирование текста и создание макрокоманд
дой (macro). Мы уже использовали коман­ды ранее для определения класса
и для установления свойств документа в самом первом примере этой главы:
title, author и date. Эти коман­ды устанавливают и сохраняют свойства, но
ничего не выводят.
Эта первая часть документа называется его преамбулой (preamble) (или
менее формально «шапкой» (редко)). Именно здесь мы выбираем класс,
определяем свойства и в общем случае формируем определения для всего
документа в целом.
Команда begin{document} помечает конец преамбулы и начало настоящего
документа. Команда end{document} помечает конец документа. Все, что следует за этой коман­дой, LaTeX игнорирует. В общем случае фрагмент кода,
ограниченный коман­дами begin и end, называется окружением (environment).
В настоящем документе мы использовали коман­ду maketitle, которая выводит название статьи, автора и дату в превосходно отформатированном
стиле. С помощью коман­ды section мы создали заголовок (раздела), более
крупный и с более утолщенными буквами, чем обычный текст. Затем мы
просто ввели текст, следующий за заголовком. Все, что было введено после
преамбулы, т. е. в окружении документа, будет выведено (на экран или на
печать). Но преамбула сама по себе никогда ничего не выводит.
Теперь, когда мы увидели, как выглядят коман­ды LaTeX, рассмотрим по­
дробнее их синтаксис.

Описание команд LaTeX
Команды LaTeX начинаются с символа обратного слеша, за которым следуют
буквы в верхнем или нижнем регистре. Обычно имена команд описывают их
предназначение и/или действие. Но существуют и исключения: вы увидите,
что некоторые коман­ды состоят из обратного слеша и всего одного специального символа.
Команды могут иметь параметры, т. е. опции, определяющие, как именно коман­да выполняется. Значения, которые мы передаем в коман­ды, называются аргументами. Они записываются в фигурных скобках, как будет
показано ниже.
Вызов коман­ды может выглядеть следующим образом:
command

или так:
command{аргумент}

или даже так:
command[необязательный_аргумент]{аргумент}

Можно передавать несколько аргументов, каждый из которых заключается в фигурные или квадратные скобки. Аргументы в фигурных скобках

Работа с логическим форматированием  49

являются обязательными. Если коман­да определена с обязательным требованием аргумента, то аргумент непременно должен быть задан. Например, вызов коман­ды documentclass бесполезен, если для нее не задано имя
класса.
Аргументы в квадратных скобках не являются обязательными, они могут быть указаны, но это не строгое требование. Если необязательный аргумент не предоставлен, то коман­да использует значение по умолчанию.
Например, в главе 1 «Начинаем работу с LaTeX» мы написали коман­ду
documentclass{article}. Этот документ был отформатирован для вывода с основным размером шрифта 10 пунктов, потому что это значение по
умолчанию для класса статей. Во втором документе была написана коман­да
documentclass[a4paper,11pt]{article} – здесь мы заменили значения по умолчанию на конкретно заданные значения, так что в этом случае документ был
адаптирован для бумаги формата A4 с использованием основного шрифта
размером в 11 пунктов.
Команды, макрокоман­ды и объявления
Большинство команд LaTeX, включая определяемые нами (пользователями), состоят
из других команд. Именно поэтому коман­ды LaTeX также называют макрокоман­дами
(macros), а термины «макро» (macro) и «коман­да» (command) используются как взаи­
мозаменяемые. Команда или макро(коман­да), которая ничего не выводит, а просто
изменяет текущие настройки, например форму шрифта или стиль выравнивания текста, также называется объявлением (declaration).

А теперь рассмотрим синтаксис окружений.

Описание окружений LaTeX
Окружения (environments) LaTeX начинаются с коман­ды begin и заканчиваются коман­дой end. Для обеих команд требуется имя окружения в качестве
аргумента.
Простое окружение выглядит следующим образом:
begin{name}

end{name}

Такие окружения можно использовать для каждого объявления с названием name.
Как и коман­ды, окружения могут иметь аргументы. Точно так же, как
и в случае команд, обязательные аргументы записываются в фигурных скобках, а необязательные – в квадратных скобках. Поэтому вам будут встречаться окружения, похожие на приведенное ниже:
begin{name}{аргумент}

end{name}

50  Форматирование текста и создание макрокоманд
Можно встретить и такое окружение:
begin{name}[необязательный_аргумент]{аргумент}

end{name}

Окружения похожи на объявления с встроенной областью видимости
(scope). С помощью коман­ды begin окружение представляет изменение макета (размещения), шрифта или других свойств. Этой коман­де обязательно
должна соответствовать коман­да end в том месте, где заданное выше изменение отменяется. Действие окружения name ограничено фрагментом кода
между коман­дами begin{name} и end{name}.
Кроме того, действие всех локальных объявлений, используемых внутри
окружения, заканчивается вместе с включающим их окружением.
Теперь, когда нам известен синтаксис команд и окружений LaTeX, рассмот­
рим, как LaTeX интерпретирует то, что мы вводим.

Как LaTeX читает наш ввод
Прежде чем продолжить написание документов, разберемся, как LaTeX понимает то, что мы вводим:
  кроме простых алфавитных символов, можно непосредственно вводить с клавиатуры (или использовать операции копирования и вставки) символы с надстрочными знаками, такие как ä, ü и ö, а также символы из алфавитов других языков, например греческого или русского;
  пробел в исходном коде выглядит как пробел в выводимом документе.
Несколько смежных пробелов интерпретируются как один пробел;
  конец строки в исходном коде интерпретируется как пробел;
  пустая строка в исходном коде интерпретируется как конец (разрыв)
абзаца.
Существует несколько символов со специальным значением:
  обратный слеш – с него начинается каждая коман­да или макро-LaTeX;
  фигурные и квадратные скобки используются для аргументов команд;
  символ доллара $ начинает и заканчивает математический режим, который будет подробно рассматриваться в главе 9 «Создание математических формул»;
  символ процента % сообщает LaTeX о необходимости игнорирования
оставшейся части строки.
Последний пункт требует более точного объяснения: символ процента вводит комментарий. Все, что находится после символа процента до конца текущей строки, игнорируется LaTeX и никогда не выводится. Это позволяет вставлять в документ примечания. Комментарии часто используются в шаблонах
LaTeX, чтобы проинформировать пользователя о том, что делает данный шаб­
лон, или потребовать от пользователя выполнения определенного действия
в конкретном месте. Следует отметить, что конец строки, обычно интерпретируемый как пробел, также будет игнорироваться после символа процента.

Как LaTeX читает наш ввод  51
Простые эксперименты методом проб и ошибок
Если необходимо временно отключить какую-либо коман­ду, то, возможно, более
предпочтительно вставить перед ней символ процента, нежели удалить ее. При таком подходе вы можете с легкостью отменить внесенное изменение, просто удалив
символ процента.

Но если символ процента работает как признак комментария, то что нужно делать, если требуется ввести 100 % непосредственно в тексте? А если
необходимо вводить в тексте другие специальные символы? В следующем
подразделе мы рассмотрим, как решить эту проблему.

Вывод специальных символов
Обычный текст в основном содержит буквы верхнего и нижнего регистров,
цифры и знаки пунктуации, которые просто вводятся с клавиатуры в редакторе. Но некоторые символы зарезервированы в LaTeX для обозначения
команд, поэтому их невозможно ввести напрямую. Мы уже встречались с такими символами, например со знаком процента и фигурными скобками.
Для решения этой проблемы существуют коман­ды LaTeX для вывода специальных символов.
Мы напишем очень короткий пример вывода суммы в долларах и числа
процентов вместе с некоторыми другими символами.
1. Создайте новый документ и введите следующие строки:
documentclass{article}
begin{document}
Statement #1:
50% of $100 equals $50.
More special symbols are &, _, { and }.
end{document}

2. Щелкните по кнопке Typeset (Верстка) для компиляции документа.
3. Проверьте выведенный документ, показанный на рис. 2.2.
Statement #1: 50% of $100 equals $50.
More special symbols are &, , { and }.
Рис. 2.2  Вывод в тексте специальных символов

Помещая обратный слеш перед специальным символом, мы превращаем
его в коман­ду LaTeX. Единственной целью такой коман­ды является вывод
заданного символа.
Вывод символа обратного слеша
Возможно, у вас возник вопрос: а как вывести сам символ обратного слеша? Команда
для вывода символа обратного слеша: textbackslash. Если хотите узнать, для чего

52  Форматирование текста и создание макрокоманд
нужна пара символов \, то она используется для краткого обозначения разрыва
(конца) строки. Это может выглядеть несколько странным, но разрывы (концы) строк
встречаются часто, тогда как символ обратного слеша редко нужен в выводимом тексте, поэтому и было выбрано такое краткое обозначение.

Существует также множество символов, которые можно использовать для
записи математических формул, шахматных партий, знаков зодиака, музыкальных партитур и многого другого. Сейчас нет необходимости рассмат­
ривать все эти наборы символов, но мы вернемся к обсуждению данной темы
(частично) в главе 9 «Создание математических формул», где потребуются
символы для форматирования и вывода математических формул.
Теперь мы знаем, как вводить чистый текст, и рассмотрим, как можно его
форматировать.

Изменение шрифтов текста
LaTeX автоматически выполняет некоторое форматирование, например мы
уже видели, что заголовки разделов крупнее, чем обычный текст, и выделены
полужирным шрифтом. В этом разделе мы узнаем, как изменить внешний
вид текста.

Установка формы шрифта
В приведенном ниже примере мы выделим важное слово в тексте, а также
увидим, как выводить слова полужирным шрифтом, курсивом или наклонным шрифтом. Мы также рассмотрим, как выделять слова в конкретной части текста, которая уже была выделена ранее.
Выполните шаги, описанные ниже.
1. Создайте новый документ, содержащий следующий исходный код:
documentclass{article}
begin{document}
Text can be emph{emphasized}.
Besides from textit{italics}, words can be
textbf{bold}, textsl{slanted}, or typeset
in textsc {Small Caps}.
Such commands can be textit{textbf{nested}}.
emph{See how emph{emphasizing} looks when nested.}
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите выведенный
документ, показанный на рис. 2.3.
Сначала мы использовали коман­ду emph с передачей в нее одного слова
как аргумента. Этот аргумент выводится курсивом, потому что это способ
выделения текста по умолчанию в LaTeX.

Изменение шрифтов текста  53

Text can be emphasized.
Besides from italics, words can be bold, slanted, or typeset in Small Caps.
Such commands can be nested.
See how emphasizing looks when nested.
Рис. 2.3  Выделение слов и словосочетаний

Команды форматирования текста обычно выглядят следующим образом:
text**{аргумент}, где ** обозначают двухбуквенную аббревиатуру, например
bf для полужирного шрифта, it для курсива или sl для наклонного шрифта.
Затем аргумент форматируется соответствующим образом, как мы могли
наблюдать в приведенном выше примере. Следующий после коман­ды текст
продолжает выводиться так же, как перед коман­дой, – сразу после закрывающей фигурной скобки, обозначающей конец аргумента.
Мы вложили коман­ду textbf в коман­ду textit, что позволило объединить
эти стили, т. е. заданный текст выглядит как полужирный курсив.
Большинство команд управления шрифтами демонстрируют тот же эффект, если применяются дважды, например textbf{textbf{слова}}. Здесь
слова не будут выделены полужирным шрифтом.
Но коман­да emph ведет себя по-другому. Мы видели, что emph изменяет
шрифт на курсив, но если использовать emph на фрагменте текста, который
уже выделен курсивом, то эта коман­да изменит вид с курсива на прямой
шрифт. Предположим, что важная теорема полностью отформатирована курсивом, и вы хотели бы выделить некоторое слово в этой теореме, тогда это
слово не должно изображаться курсивом, его следует отформатировать снова
как прямой шрифт.
Изменяйте форму шрифта разумно
Объединение форм шрифта, такое как одновременное выделение полужирным
шрифтом и курсивом, возможно, должно относиться к вопросам выбора стиля. Изменяйте форму шрифта разумно и логически согласованно.

Выбор гарнитуры (семейства) шрифтов
По умолчанию в LaTeX используется шрифт с засечками – сериф (serif) (также
называемый шрифтом Roman). Это означает, что буквы снабжены маленькими черточками, которые называются засечками (serifs). При отсутствии
таких засечек шрифт называется sans-serif (без засечек) – сан-сериф.
Сравните две строки, показанные на рис. 2.4. Внимательно рассмотрите
первую букву T, которая наглядно демонстрирует различие между шрифтами
сериф и сан-сериф.
Эти различные типы шрифтов называются семействами шрифтов (font
families), или гарнитурами (начертаниями – typefaces).
Еще одна гарнитура называется моноширинной (monospaced) – все буквы
имеют одинаковую ширину. Моноширинные шрифты также называют машинописными (typewriter).

54  Форматирование текста и создание макрокоманд

This is serif
This is sans-serif
Рис. 2.4  Сравнение шрифтов с засечками (сериф)
и без засечек (сан-сериф)

Попробуем менять гарнитуры шрифтов в небольшом примере документа.
Начнем с полужирного шрифта, но полужирный шрифт с засечками выглядит
слишком тяжелым. Поэтому заменим его на полужирный шрифт без засечек.
Далее следует текст, содержащий адрес в интернете, и чтобы выделить его,
выберем машинописный (моноширинный) шрифт.
Выполните приведенные ниже инструкции.
1. Создайте документ LaTeX со следующим исходным кодом:
documentclass{article}
begin{document}
textsf{textbf{Get help on the Internet}}
texttt{https://latex.org} is a support forum for LaTeX.
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.5.
Get help on the Internet
https://latex.org is a support forum for LATEX.
Рис. 2.5  Текст с выделением URL моноширинным шрифтом

Здесь мы встречаем очередные коман­ды управления шрифтом – используя
textsf, мы выбрали шрифт сан-сериф в строке заголовка, а коман­да texttt
позволила применить машинописный шрифт для адреса интернета. Подобные коман­ды можно использовать точно так же, как коман­ды управления
шрифтами, описанные в предыдущем разделе.
Засечки, как маленькие декоративные детали на концах линий, изображающих буквы, повышают удобство чтения, как бы направляя глаза читателя вдоль
строки. По этой причине они широко используются в печатных книгах и газетах.
Заголовки часто оформляются без засечек. Шрифты без засечек (сан-сериф)
также представляют собой удачный выбор для вывода текста на экран благодаря их лучшей читабельности на экранах с небольшим разрешением или на
дисплеях мобильных устройств с малыми размерами шрифтов. Шрифты без
засечек часто предпочтительнее для вывода текста в электронных книгах
(e-books) и на страницах интернета.
Моноширинные или машинописные шрифты предпочтительны для написания исходного кода компьютерных программ как в печатном виде, так
и в текстовых редакторах. Как и в приведенном выше примере, в этой книге

Изменение шрифтов текста  55

моноширинный шрифт всегда используется для того, чтобы отличить исходный код от обычного текста.
Рассмотренные выше коман­ды применяют форматирование к тексту, заданному в аргументе в фигурных скобках. LaTeX также предоставляет коман­
ды без аргументов, которые работают как переключатели.
Используя описанные ниже инструкции, изменим предыдущий пример,
применяя коман­ды переключения гарнитур шрифтов.
1. Отредактируйте предыдущий пример, чтобы получить показанный
ниже исходный код:
documentclass{article}
begin{document}
sffamilybfseries Get help on the Internet
normalfontttfamily https://latex.orgnormalfont is
a support forum for LaTeX.
end{document}

2. Щелкните по кнопке Typeset для компиляции.
3. Сравните полученный вывод с выводом предыдущего примера – они
одинаковы.
С помощью коман­ды sffamily мы переключились на гарнитуру сан-сериф.
Команда bfseries включает полужирный шрифт. Мы воспользовались коман­
дой normalfont для возврата к шрифту, принятому по умолчанию в LaTeX,
затем применили коман­ду ttfamily для переключения на моноширинный
шрифт. После адреса интернета еще раз использовалась коман­да normalfont
для переключения на шрифт по умолчанию.
Эти коман­ды переключения сами по себе не создают никакого вывода, но
они воздействуют на текст, следующий за ними, поэтому являются объявлениями (declarations).
Подведем итог по всем рассмотренным выше коман­дам управления шрифтами вместе с соответствующими объявлениями и кратким описанием их
смысла (см. табл. 2.1).
Таблица 2.1. Команды управления шрифтами
Команда
textrm{…}
textsf{…}
texttt{…}
textbf{…}
textmd{…}
textit{…}
textsl{…}
textsc{…}
textup{…}
textnormal{…}

Объявление
rmfamily
sffamily
ttfamily
bfseries
mdseries
itshape
slshape
scshape
upshape
normalfont

Выделение
Команде emph соответствует объявление em.

Описание

Гарнитура Roman
Гарнитура Sans-serif
Гарнитура typewriter
Полужирный
Средний
Курсив
Наклонный
Малые прописные
Прямой
Шрифт по умолчанию

56  Форматирование текста и создание макрокоманд

Ограничение области действия команд
фигурными скобками
В предыдущем примере мы применили коман­ду normalfont для переключения на шрифт, определенный по умолчанию, но для этого существует и другой способ. Воспользуемся фигурными скобками, чтобы сообщить LaTeX, где
применяется коман­да и где ее действие прекращается.
1. Сократим и изменим пример с управлением формы шрифта, который
сгенерировал вывод, показанный на рис. 2.3, чтобы получить следующий исходный код:
documentclass{article}
begin{document}
Besides from {itshape italics}, words can be
{bfseries bold}, {slshape slanted}, or typeset
in {scshape Small Caps}.
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите полученный
вывод, показанный на рис. 2.6.
Besides from italics, words can be bold, slanted, or typeset in Small Caps.
Рис. 2.6  Использование объявлений
для изменения формы и степени жирности шрифта

При изменении шрифта с использованием объявления мы начинаем с открывающей фигурной скобки, за которой следует коман­да объявления шрифта. Действие этой коман­ды продолжается до соответствующей закрывающей
фигурной скобки, которая завершает выполнение коман­ды.
Открывающая фигурная скобка сообщает LaTeX о начале группы (group).
Показанные ниже коман­ды применимы к текстовой последовательности до
тех пор, пока закрывающая фигурная скобка не завершит группу. Группы
могут быть вложенными, как показано ниже:
Normal text, {sffamily sans serif text {bfseries and bold}}.

Область, в которой действует коман­да, называется ее областью видимости
(scope). Необходимо внимательно относиться к корректному завершению
каждой группы. Для каждой открывающей фигурной скобки непременно
должна существовать соответствующая закрывающая фигурная скобка.
Короче говоря, группы определяются фигурными скобками и ограничивают действие содержащихся в них локальных команд.

Изменение шрифтов текста  57

Исследование размеров шрифта
Теперь попробуем увидеть каждый размер шрифта, доступный в LaTeX с по­
мощью предопределенных по умолчанию команд управления размером
шрифта.
1. Создайте документ, содержащий следующий исходный код:
documentclass{article}
begin{document}
tiny We scriptsize start footnotesize very
smallsmall, normalsize get large big Large
and LARGE bigger, huge huge, Huge gigantic!
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите полученный
вывод, показанный на рис. 2.7.

We

start very

small, get

big and

bigger,

huge, gigantic!

Рис. 2.7  Размеры шрифта

Мы использовали 10 доступных объявлений размера шрифта, начиная
с самого маленького tiny и заканчивая действительно очень большим Huge.
Соответствующих команд, принимающих аргументы, не существует, поэтому необходимо использовать фигурные скобки, чтобы ограничить область
видимости этих объявлений, как мы узнали из предыдущего подраздела.
Реальные полученные в результате размеры шрифта масштабируются относительно основного размера. Если в документе задан основной шрифт
12 пт, то размер tiny, полученный в этом тексте, больше, чем при размере
основного шрифта 10 пт.
Используйте коман­ду footnotesize, если хотите получить размер шрифта, применяемый в LaTeX для сносок, или коман­ду scriptsize, если нужно
получить стиль с размером, соответствующим надстрочным и подстрочным
надписям в LaTeX. Классы документа предоставляют тщательно выбранные
и точно подогнанные варианты выбора размера шрифта, поэтому, как правило, нет необходимости в ручной установке конкретного физического размера. Эти и другие более продвинутые коман­ды тонкой настройки шрифта
описаны в главе 3 «Настройка шрифтов» в книге «LaTeX Cookbook» (издательство Packt Publishing).
Для практических примеров мы использовали много предварительно
определенных команд управления шрифтами в этом разделе. Следующий
уровень обучения – создание собственных команд логического форматирования для применения их вместо команд установки физических свойств
шрифта в тексте тела документа.

58  Форматирование текста и создание макрокоманд

Создание собственных команд
Если вы часто используете один и тот же элемент в своем документе, то его
многократный ввод с клавиатуры становится утомительным и даже раздражающим. Что, если вы в дальнейшем решаете изменить этот элемент или его
форматирование? Чтобы избежать процедуры поиска и замены элемента во
всем документе, LaTeX позволяет определять собственные коман­ды пользователя в преамбуле.
Напомню: коман­да, состоящая из других команд, называется макрокоман­
дой (macro) – именно ее мы сейчас определим. По существу, мы выбираем
имя новой макрокоман­ды и определяем последовательность текста и/или
команд, которые должны использоваться в ней. В дальнейшем при необходимости выполнения соответствующего действия мы просто используем имя
этой макрокоман­ды.
Начнем с простых макрокоманд, которые, в сущности, раскрывают аббревиатуры.

Использование макрокоманд для простого текста
Макрокоман­ды могут избавить пользователя от многократного ввода длинных слов или словосочетаний, а также могут работать как шаблоны, резервирующие определенное место в тексте. Мы можем изменить содержимое
макро для обновления всего документа в целом с другой версией словосочетания.
В приведенном ниже примере мы определяем короткую коман­ду, которая
выводит полное название TeX User Group (по аббревиатуре TUG).
1. Введите приведенный ниже исходный код в новый документ:
documentclass{article}
newcommand{TUG}{TeX Users Group}
begin{document}
section{The TUG}
The TUG is an organization for people who use
TeX or LaTeX.
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.8.

1

The TEX Users Group

The TEX Users Group is an organization for people who use TEX or LATEX.
Рис. 2.8  Использование нашей первой макрокоман­ды

Создание собственных команд  59

Инструкция newcommand в выделенной строке определяет нашу коман­ду. Ее
первый аргумент – имя, выбранное для новой макрокоман­ды, второй аргумент – текст, который должен быть выведен в итоговом документе.
После этого каждый раз, когда мы вводим TUG в документе, в результате
будет выводиться полное наименование. Если в дальнейшем мы решим изменить это название или его форматирование, то нужно внести соответствующее изменение только в строке newcommand. Далее это изменение будет
применено ко всему документу в целом.
Внутри определения своей коман­ды можно использовать коман­ды форматирования. Например, необходимо изменить форматирование всех вхождений этого названия так, чтобы оно выводилось малыми прописными буквами. Для этого измените определение следующим образом:
newcommand{TUG}{textsc{TeX Users Group}}

Кроме того, вы, вероятно, заметили, что в приведенном выше примере
использовалась коман­да TeX. Эта коман­да с аббревиатурой просто выводит
название системы набора и форматирования в том же стиле, что и ее логотип. Команда LaTeX работает точно так же.
Обратите внимание: после коман­ды TeX мы использовали символ обратного слеша. Размещенный за ним пробел должен просто отделить коман­ду
от следующего текста, но это не должно было бы создавать пробел при выводе результата. Здесь использование обратного слеша со следующим за
ним пробелом приводит к принудительному выводу пробела, который во
всех прочих случаях игнорируется. Это свойство применяется и в только что
созданной коман­де.
Далее мы рассмотрим, как избежать подобной ручной расстановки пробелов.

Правильное размещение пробелов после команд
О необходимости символа обратного слеша, следующего за коман­дой, легко
забыть. Можно ли так изменить коман­ду, чтобы она автоматически делала
это? Подобные задачи, которые не поддерживаются непосредственно системой LaTeX, можно решить, используя пакеты (packages), представляющие
собой наборы стилей и команд.
В нашем случае загрузим пакет xspace, единственной целью которого является регулирование размещения пробелов при выводе результата форматирования.
1. Вставьте приведенную ниже строку в преамбулу, т. е. перед строкой
begin{document}:
usepackage{xspace}

2. Добавьте коман­ду xspace в определение макрокоман­ды:
newcommand{TUG}{TeX Users Groupxspace}

Powered by TCPDF (www.tcpdf.org)

60  Форматирование текста и создание макрокоманд
Команда usepackage{xspace} сообщает LaTeX о необходимости загрузки пакета xspace и импортирования всех его определений. После этого мы можем
использовать все коман­ды, содержащиеся в этом пакете.
Пакет предоставляет коман­ду xspace, которая вставляет пробел в зависимости от последующего символа:
  если далее следует обычный символ, то после содержимого макрокоман­
ды будет выведен пробел;
  если далее следует точка, запятая, восклицательный или вопросительный знак, то пробел не вставляется.
Такая автоматизация является решающей причиной применения пакета
xspace.

Создание более универсальных команд
и использование аргументов
Предположим, что текст содержит огромное количество ключевых слов, которые необходимо вывести полужирным шрифтом. Если воспользоваться
коман­дой textbf, то что произойдет, если в дальнейшем вы решите вместо
полужирного использовать курсив или моноширинный шрифт? Вам придется изменять форматирование каждого ключевого слова. Но существует
более эффективный способ: определение собственной макрокоман­ды и использование textbf только внутри этого определения макро.

Создание макрокоман­ды с аргументами
В этом подразделе мы снова воспользуемся именем newcommand, но на этот
раз введем параметр, содержащий нужное ключевое слово. В примере будут
использоваться некоторые элементы, о которых вы узнали в этой главе.
Начнем с исходного кода.
1. Введите приведенный ниже исходный код в редакторе. Выделенная
полужирным шрифтом строка является нашим собственным определением макрокоман­ды, как показано ниже:
documentclass{article}
newcommand{keyword}[1]{textbf{#1}}
begin{document}
keyword{Grouping} by curly braces limits the
keyword{scope} of keyword{declarations}.
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите ключевые
слова в выводе результата, показанного на рис. 2.9.
Grouping by curly braces limits the scope of declarations.
Рис. 2.9  Форматирование ключевых слов

Создание собственных команд  61

Рассмотрим подробнее строку newcommand, выделенную в этом исходном
коде. Число 1 в квадратных скобках обозначает количество аргументов, которые необходимо использовать в этой коман­де. Элемент #1 будет заменен
на значение первого аргумента, элемент #2 – на значение второго аргумента
и т. д. Теперь, если потребуется изменить внешний вид всех ключевых слов
на курсив, то нужно лишь изменить определение keyword, и это изменение
будет глобальным.
При первом применении newcommand в разделе «Создание собственных команд» мы использовали эту макрокоман­ду с двумя аргументами: имя макро
и коман­ды макро. В приведенном выше примере существуют три аргумента, дополнительный аргумент помещен в квадратные скобки – именно так
помечаются необязательные аргументы (которые могут быть заданы или
опущены). Если аргумент не задан, то должно использоваться определенное
значение по умолчанию.
Ранее мы уже работали с коман­дой documentclass, но как мы можем самостоятельно определить коман­ду с необязательными аргументами?

Создание макрокоман­ды с необязательными аргументами
Еще раз воспользуемся именем newcommand, но на этот раз с необязательным
параметром форматирования и обязательным аргументом для ключевого
слова.
1. Измените исходный код предыдущего примера следующим образом:
documentclass{article}
newcommand{keyword}[2][bfseries]{{#1#2}}
begin{document}
keyword{Grouping} by curly braces limits the
keyword{scope} of keyword[itshape]{declarations}.
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.10.
Grouping by curly braces limits the scope of declarations.
Рис. 2.10  Использование необязательных аргументов

Рассмотрим подробнее строку newcommand, выделенную в этом исходном
коде. Используя [bfseries], мы вводим необязательный параметр со ссылкой
на него #1, а значением по умолчанию для него является bfseries. Поскольку
на этот раз применяется объявление, добавлена пара фигурных скобок для
полной уверенности в том, что это объявление будет действовать только на
ключевое слово. Ниже в документе мы передаем аргумент [itshape] в key­
word, изменяя заданный по умолчанию стиль форматирования на курсив.
Ниже приведено формализованное определение newcommand:
newcommand{command}[arguments][optional]{definition}

62  Форматирование текста и создание макрокоманд
Смысл параметров макрокоман­ды newcommand:
  command – имя новой коман­ды, начинающееся с символа обратного слеша, за которым следуют буквы нижнего и/или верхнего регистра, или
с символа обратного слеша, за которым следует один символ, не являющийся буквой. Имя не должно быть уже определенным ранее. Не
разрешается начинать имя с end;
  arguments – целое число от 1 до 9, представляющее количество аргументов этой новой коман­ды. Если число пропущено, то коман­да не имеет
аргументов;
  optional – если этот элемент присутствует, то первый из аргументов
должен быть необязательным со значением по умолчанию, заданным
здесь же. Иначе все аргументы являются обязательными;
  definition – каждое вхождение имени command будет заменено определением definition, и каждое вхождение в форме #n в определении будет
заменено на n-й аргумент.
Используйте newcommand для создания стилей форматирования для ключевых слов, фрагментов исходного кода, веб-адресов, имен, примечаний,
информационных блоков или текста с выделением, отличающимся от принятого по умолчанию. Как удалось создать согласованную логическую структуру этой книги? Главным образом с по­мощью определения стилей коман­дой
newcommand. Рекомендуется использовать коман­ды управления шрифтом
внутри собственных определений макро, а не в тексте тела документа.
Общепринятая правильная практическая методика
Часто имеется возможность создания собственных макрокоманд для получения логической структуры текста. За это вы будете вознаграждены логически согласованным форматированием и возможностью применения вносимых изменений сразу ко
всему документу в целом. Определяя и используя собственные коман­ды, вы сможете
обрести полную уверенность в том, что форматирование останется логически согласованным на протяжении всего документа.

Теперь мы знаем, как форматировать слова и словосочетания, а далее рассмотрим форматирование целых абзацев.

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

Использование боксов для ограничения ширины абзацев  63

Создание более узкого текстового бокса
Для следующего примера возьмем объяснение акронима TUG в текстовом
столбце шириной всего лишь 3 см. Для этого необходимо выполнить описанные ниже шаги.
1. Создайте новый документ, содержащий приведенные ниже строки исходного кода:
documentclass{article}
begin{document}
parbox{3cm}{TUG is an acronym. It means
TeX Users Group.}
end{document}

2. Щелкните по кнопке Typeset и критически рассмотрите результат со
слишком большими пробелами, показанный на рис. 2.11.

TUG
is
an
acronym.
It
means TEX Users
Group.
Рис. 2.11  Абзац,
выровненный по суженным границам

В выделенной строке кода мы использовали коман­ду parbox для создания
столбца. Первый аргумент коман­ды parbox устанавливает ширину 3 см, второй аргумент содержит текст.
Команда parbox принимает текстовый аргумент и форматирует вывод
в соответствии с заданной шириной. Мы видим, что текст полностью выровнен по ширине, но в этом примере наблюдается явная проблема: принудительное полное выравнивание может привести к нежелательным большим
промежуткам в тексте. Ниже описаны возможные решения этой проблемы:
  разрешить переносы слов. Слово acronym можно разделить и перенес­
ти без затруднений;
  улучшить полное выравнивание по ширине в общем смысле;
  отказаться от полного выравнивания по ширине. Узкий фрагмент текста может выглядеть лучше, если он выровнен только по левому краю.
Мы подробно рассмотрим все эти варианты в разделах «Разделение строк
и абзацев» и «Отмена полного выравнивания по ширине».
Но сначала рассмотрим, как работает коман­да parbox.

Создание общих боксов абзацев
Обычно нам нужен просто текстовый бокс с конкретной шириной. Иногда
возникает необходимость в некотором дополнительном выравнивании тек-

64  Форматирование текста и создание макрокоманд
ста в отдельном боксе. Полное формальное определение коман­ды parbox
приведено ниже:
parbox[alignment]{width}{text}

Смысл параметров этой коман­ды:
  alignment – это необязательный аргумент для выравнивания по вертикали. Значение t позволяет выровнять абзац по базовой линии самой
верхней строки в боксе. Значение b выравнивает по базовой линии
нижней строки. Поведение по умолчанию – размещение бокса так,
чтобы его центр находился на одном уровне с центром текущей строки
текста;
  width – ширина бокса. Она может быть задана в международных (ISO)
единицах, например 3 cm, 44 mm или 2 in;
  text – текст, который нужно разместить в создаваемом боксе. Это должен быть короткий фрагмент обычного текста. Для более сложного
или более длинного содержимого можно воспользоваться окружением
minipage, которое мы будем использовать в следующем подразделе.
Ниже демонстрируется эффект от воздействия параметров выравнивания:
documentclass{article}
begin{document}
Text line
quadparbox[b]{1.8cm}{this parbox is aligned
at its bottom line}
quadparbox{1.5cm}{center-aligned parbox}
quadparbox[t]{2cm}{another parbox aligned at its top line}
end{document}

Команда quad создает некоторое пустое пространство, мы используем ее
для отделения боксов друг от друга с небольшим промежутком. Вывод показан на рис. 2.12.

Text line

this parbox
is aligned at
its bottom
line

centeraligned
parbox

another parbox aligned
at its top line

Рис. 2.12  Боксы абзацев с индивидуальным выравниванием

Вывод на рис. 2.12 показывает, как работает выравнивание. Фрагмент
«Text line» – это базовая линия (строка), и со ссылками на эту базовую линию следующие боксы выравниваются по нижней, центральной (средней)
и верхней строкам соответственно.

Использование боксов для ограничения ширины абзацев  65

Изучение дополнительных функциональных
возможностей боксов абзацев
Команда parbox способна на большее. Если необходимо более точное позиционирование абзаца, то обратите внимание на полное определение коман­
ды parbox:
parbox[alignment][height][inner alignment]{width}{text}

Смысл параметров этой коман­ды:
  height – если этот необязательный аргумент не

задан, то бокс будет
иметь естественную высоту содержащегося в нем текста. Используйте
этот аргумент, если необходимо изменить высоту бокса, сделав его
более высоким или низким;
  inner alignment – если высота бокса отличается от естественной высоты содержащегося в нем текста, то может потребоваться более точное
регулирование положения текста. Здесь можно добавить следующие
значения:
c – центрирует текст по вертикали в боксе;
t – размещает текст в верхней части бокса;
b – размещает текст в нижней части бокса;
s – растягивает текст по вертикали (если возможно).
Если этот аргумент пропущен, то здесь будет использован первый аргумент alignment как значение по умолчанию.
Воспользуйтесь предыдущим демонстрационным примером и поэкспериментируйте с дополнительными необязательными аргументами, чтобы
наблюдать результаты их применения. Используйте коман­ду fbox, которая
поможет визуально представить результаты. Если написать коман­ду fbox{
parbox[…]{…}{text}}, то результат выполнения коман­ды parbox (полученный бокс) будет полностью вставлен в кадр (фрейм) и выведен.

Использование мини-страниц
Боксы абзацев хорошо подходят для размещения в них только небольших
фрагментов текста. Если бокс содержит большой объем текста, то легко забыть о необходимости закрывающей фигурной скобки или вообще упустить
из виду фигурные скобки. В таких случаях более удачным выбором становится окружение minipage.
В приведенном ниже примере мы используем окружение minipage вместо
коман­ды parbox для получения фрагмента текста шириной 3 см.
1. Измените исходный код примера с применением parbox, чтобы получить следующий код:
documentclass{article}
begin{document}
begin{minipage}{3cm}

66  Форматирование текста и создание макрокоманд
TUG is an acronym. It means TeX Users Group.
end{minipage}
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.13.

TUG
is
an
acronym.
It
means TEX Users
Group.
Рис. 2.13  Пример использования
мини-страницы (minipage)

Используя коман­ду begin{minipage}, мы начинаем «страницу в странице».
Здесь указано, что ширина 3 см является обязательным аргументом. Начиная с этого момента, строки текста будут иметь ширину 3 см, автоматически
переноситься и полностью выравниваться по ширине. Это ограничение отменяется с по­мощью коман­ды end{minipage}. Любой текст, введенный после
этой коман­ды, должен занимать полную ширину текста тела документа.
Предотвращение разрыва страницы
Внутри окружения minipage никогда не присутствует разрыв страницы, так что это
один из способов предотвращения разрыва страницы в некоторой области текста.
Если текст внутри окружения minipage не умещается на текущей странице, то он полностью переносится на следующую страницу.

Окружение minipage принимает все те же аргументы, что и коман­да parbox
с тем же смыслом.
Если текст упакован в бокс или просто находится в обычной строке, то, возможно, он будет успешно размещен автоматически. Но может потребоваться
ручное разделение строк и выравнивание. В следующем разделе описано,
как это делается.

Разделение строк и абзацев
В общем случае при вводе текста нет необходимости заботиться о переносах
строк. Просто вводите текст в редакторе, а LaTeX правильно разместит его
в строке и позаботится о выравнивании. Если необходимо начать новый абзац, просто вставьте пустую строку перед началом следующего абзаца текста.
В этом разделе мы узнаем, как управлять переносами строк. Сначала рассмотрим, как улучшить автоматические переносы слов, затем изучим коман­
ды для непосредственной вставки разрывов строк.

Разделение строк и абзацев  67

Улучшение автоматического переноса слов
Если вы посмотрите на более длинные документы, то обратите внимание на
то, как великолепно выровнен текст по ширине системой LaTeX, а пробелы
между словами равномерно распределены по строке. Если необходимо, LaTeX разделяет слова и помещает дефис в конце строки для наиболее эффективного разделения строк. LaTeX уже сейчас использует весьма качественные
алгоритмы переноса слов, но может случиться так, что он не сможет найти
приемлемый вариант разделения слова. В примере из предыдущего раздела
была отмечена эта проблема: разделение слова acronym улучшило бы вывод
результата, но LaTeX не знает, в каком месте можно разделить это слово. Мы
должны найти способ решения данной проблемы.
Вне зависимости от того, насколько хорошо организовано автоматическое
выравнивание, текст в очень узких столбцах чрезвычайно трудно выравнивать. Чтобы добиться полного выравнивания по ширине, LaTeX вставляет
большие промежутки между словами.
В приведенном ниже примере мы сообщим LaTeX о том, как можно разделять слова, чтобы придать LaTeX бóльшую гибкость при выравнивании
абзаца по ширине.
1. Вставьте приведенную ниже строку в преамбулу предыдущего примера:
hyphenation{acro-nym}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.14.

TUG is an acronym. It means TEX
Users Group.
Рис. 2.14  Абзац
с улучшенным переносом слов

Мы сообщили LaTeX о том, что в слове acronym может существовать точка
разделения между частями acro и nym. Это означает, что дефис можно поместить после части acro в конце текущей строки, а часть nym переместить
на следующую строку.
Команда hyphenation сообщает LaTeX, где могут располагаться точки разделения в слове. Ее аргумент может содержать несколько слов, разделенных
пробелами. Для каждого слова можно указать несколько точек разделения.
Например, можно было бы расширить аргумент бóльшим количеством точек
разделения и несколькими дополнительными вариантами того же слова, как
показано ниже:
hyphenation{ac-ro-nym ac-ro-nym-ic a-cro-nym-i-cal-ly}

68  Форматирование текста и создание макрокоманд
Также можно указывать точки разделения слова непосредственно в тексте
тела документа, вставляя символы обратного слеша, за которыми следуют
дефисы, например ac-ro-nym. Но при использовании коман­ды hyphenation
в преамбуле вы получаете возможность собрать воедино все правила здесь,
а в дальнейшем они будут согласованно применяться, поэтому используйте
эту коман­ду особенно в тех редких случаях, когда система автоматических
переносов LaTeX не работает.

Предотвращение переноса слов
Если необходимо полностью предотвратить (запретить) перенос конкретного слова, то для этого существуют два возможных способа:
  объявление в преамбуле с использованием этого слова в аргументе коман­ды hyphenation без указания точек разделения, например
hyphenation{indivisible};
  защита слова непосредственно в тексте с по­мощью коман­ды mbox: The
following word is mbox{indivisible}.
Загрузка пакета hyphenat предоставляет еще два варианта выбора:
  usepackage[none]{hyphenat} отменяет переносы слов во всем документе;
  usepackage[htt]{hyphenat} разрешает переносы текста с моноширинным (машинописным) шрифтом, иначе такие моноширинные слова
не будут переноситься по умолчанию.
Эти необязательные аргументы для коман­ды usepackage называются опциями (или параметрами) пакета (package options). Они конфигурируют поведение пакета. Упомянутые выше опции можно комбинировать с разделением их запятыми. Даже если вы не воспользовались опцией none, можно
запретить переносы слов в коротких фрагментах текста, применив коман­ду
nohyphens{text}. Попробуйте поэкспериментировать с этими свойствами,
если хотите в полной мере использовать их преимущества. В документации
пакета hyphenat описано множество других функциональных возможностей
и свойств, в которых иногда может возникать необходимость, как, например, перенос после специальных символов, таких как числительные и знаки
пунктуации.

Улучшение полного выравнивания по ширине
В настоящее время самым широко распространенным компилятором TeX
является pdfTeX, который напрямую генерирует вывод в формате PDF. Когда
Хан Тхе Тхань (Hàn Thе́ Thành) разрабатывал компилятор pdfTeX, он расширил TeX с по­мощью микротипографских функциональных возможностей.
Когда мы выполняем процедуру типографского набора напрямую в PDF, то
в действительности используем компилятор pdfTeX и можем получить все
преимущества его новых функциональных возможностей, воспользовавшись
пакетом microtype.
Улучшим предыдущий пример, загрузив пакет microtype.

Разделение строк и абзацев  69

1. Вставьте показанную ниже строку в преамбулу предыдущего примера:
usepackage{microtype}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.15.

TUG is an acronym.
It means TEX Users
Group.
Рис. 2.15  Абзац с улучшенным выравниванием
по ширине

Мы загрузили пакет microtype без каких-либо опций, полностью полагаясь
на его поведение по умолчанию. Он вводит расширение шрифта для тонкой
настройки выравнивания по ширине и использует знаки пунктуации, выносимые на поля страницы, для улучшения визуально воспринимаемого вида
полей. Это может снизить потребность в переносах и позволяет избежать
слишком больших промежутков между словами при выполнении выравнивания по ширине. Мы видим, как действует этот пакет в узком столбце, но
представьте, насколько улучшится вид текста обычной ширины – запомните
это и применяйте пакет в дальнейшем.
Несмотря на то что пакет microtype предоставляет мощные функциональные возможности и опции для усовершенствованного типографского набора, обычно от нас не требуется никаких дополнительных усилий – нужно просто загрузить пакет и воспользоваться его преимуществами. Но если
вы пожелаете глубже изучить возможности пакета microtype, то обратитесь
к его подробнейшей документации. Пакет microtype превосходно выполняет
работу по тонкой настройке, но не является универсальной панацеей. При
необходимости нам все же придется уделить особое внимание настройке
правильных переносов слов.

Разделение строк вручную
Можно выбирать конец строки вручную, заменяя решение, принятое автоматически. В этом подразделе мы узнаем о нескольких коман­дах с различным
воздействием на конец строки.
Введем текст начала знаменитой поэмы Эдгара Аллана По (Edgar Allan
Poe). Поскольку поэт точно определил, где должна заканчиваться стихотворная строка, мы должны вставить разрывы строк именно в этих местах.
Введем в редакторе начало поэмы.
1. Создайте документ, содержащий приведенные ниже строки:
documentclass{article}
begin{document}

70  Форматирование текста и создание макрокоманд
noindentemph{Annabel Lee}\
It was many and many a year ago,\
In a kingdom by the sea,\
That a maiden there lived whom you may know\
By the name of Annabel Lee
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.16.

Annabel Lee
It was many and many a year ago,
In a kingdom by the sea,
That a maiden there lived whom you may know
By the name of Annabel Lee
Рис. 2.16  Разрывы строк, расставленные вручную

Очень короткая коман­да \ завершила строку, а следующий за ней текст
был перенесен на строку ниже. Это отличается от разделения абзацев, так как
здесь мы продолжаем использовать тот же абзац. Команда newline действует
точно так же.
Команда noindent отменяет выравнивание абзаца. При ее отсутствии
первая строка абзаца была бы выровнена с отступом по умолчанию. Выравнивание с отступом в действительности предназначено для визуального
разделения абзацев. Мы отменяем выравнивание с отступом, потому что
здесь нет заголовка раздела. После заголовков по умолчанию выравнивание
с отступом не выполняется. Обычно коман­да noindent не нужна. Для общего удаления выравнивания с отступом в абзацах и замены его на разгонку
(spacing) абзацев по вертикали загрузите пакет parskip. Его действие можно
увидеть на рис. 2.22 и в соответствующем исходном коде.
Обратите внимание: несмотря на то что мы вставили концы строк, текст
все же остается одним абзацем. Поэтому разрыв строки не приводит к выравниванию с отступом абзаца, поскольку логически он остается все тем же
абзацем.

Изучение параметров разделения строк
Команда \ понимает дополнительные необязательные аргументы с описанным ниже синтаксисом:
  \[value] – вставляет дополнительный пробел (пространство) по вертикали в зависимости от заданного значения value, например \[3mm];
  \*[value] – вариант предыдущего аргумента, но с запрещением разрыва страницы перед следующей строкой текста.
Есть еще одна коман­да с именем linebreak, которая сообщает LaTeX о конце строки, но с сохранением полного выравнивания по ширине, т. е. про-

Отключение выравнивания по ширине  71

белы между словами растягиваются, чтобы довести конец строки до правой
границы. Это может создавать нежелательные промежутки между словами,
поэтому такая коман­да используется редко.
Команда linebreak[number] может применяться для тонкой настройки разрыва строк. Если число number равно 0, то разрыв строки разрешен, 1 означает
его предпочтительность, 2 и 3 обозначают более настоятельные рекомендации разрыва, 4 – разрыв строки обязателен. Последний вариант является
поведением по умолчанию, если число не задано.
Вы можете поэкспериментировать с этими числовыми значениями, например измените название поэмы в предыдущем примере следующим образом:
emph{Annabel Lee}\[3mm]

При этом вставляется дополнительное пространство размером 3 мм между
заголовком и фрагментом текста поэмы. Продолжайте эксперименты с параметрами и наблюдайте их воздействие на текст.

Запрещение разрывов строк
Для коман­ды linebreak существует ее полная противоположность – коман­
да nolinebreak. Эта коман­да запрещает разрыв строки в текущей позиции.
Как и противоположная коман­да, nolinebreak принимает необязательный
аргумент. Если вы пишете nolinebreak[0], то рекомендуете не разрывать
строку в этом месте. Указание значений 1, 2 или даже 3 усиливает строгость
рекомендации, а коман­да nolinebreak[4] полностью запрещает разрыв строки. Последний вариант будет выбран по умолчанию, если аргумент не задан.
Ранее упоминаемая коман­да mbox{text} не только отменяет перенос слов,
но также запрещает разрыв строк во всем фрагменте text.
LaTeX разделяет строки по пробелам между словами, если это имеет смысл.
Символ ~ (тильда) обозначает пробел между словами, по которому разрыв
строки запрещен. Если ввести Dr.~Watson, то титул Dr. никогда не останется
одиноким в конце строки.
По умолчанию текст всегда выравнивается полностью. Это означает, что
строки растягиваются до правой границы, если это необходимо. В результате
могут появляться нежелательные промежутки между словами в такой растянутой строке. В следующем разделе рассматривается, как можно отменить
растягивание строк.

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

72  Форматирование текста и создание макрокоманд
по левому краю. Мы увидим, как это применяется на практике, а кроме того,
рассмотрим варианты с выравниванием текста по правому краю и по центру.

Создание текста с рваным правым краем
Помните первый противоречивый пример, в котором применялось полное
выравнивание по ширине (выключка по ширине или по формату), но при
этом интервалы между словами становились слишком большими? В приведенном ниже примере мы откажемся от полного выравнивания по ширине
до правой границы, чтобы избежать появления больших интервалов.
1. Создайте новый документ, содержащий приведенные ниже строки исходного кода:
documentclass{article}
begin{document}
parbox{3cm}{raggedright
TUG is an acronym. It means TeX Users Group.}
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.17.

TUG is an
acronym. It means
TEX Users Group.
Рис. 2.17  Текст,
выровненный по левому краю

Здесь мы вставили объявление raggedright. С этой позиции и далее текст
будет иметь рваный правый край. Другими словами, текст будет смещен к левому краю – это называется выключка влево. Перенос слов не выполняется.
Поскольку мы используем это объявление внутри бокса, оно действует
только в этом боксе, как в границах окружений. После бокса текст снова будет
выравниваться по ширине.
Если требуется, чтобы весь документ был отформатирован с рваным правым краем, то нужно просто использовать объявление raggedright в преамбуле.

Создание текста с рваным левым краем
Встречаются ситуации, в которых требуется получить противоположный эффект: выравнивание текста по правой границе – выключка вправо. Это можно выполнить аналогичным образом, вставив объявление raggedleft. Управлять конкретными местами разрывов строк вы можете, вставляя коман­ды \.

Отключение выравнивания по ширине  73

Текст, выровненный по центру
Текст также можно выровнять по центру по горизонтали так, чтобы он находился в середине страницы. Мы попробуем выполнить центрирование
с по­мощью всего лишь нескольких строк исходного кода в приведенном ниже
примере.
Мы вручную создадим превосходно выглядящий общий заголовок для документа. Заголовок должен содержать название, автора и дату – все это будет
выровнено по центру.
1. Создать документ, содержащий следующий исходный код:
documentclass{article}
pagestyle{empty}
begin{document}
{centering
hugebfseries Centered text \
Largenormalfont written by me \
normalsizetoday
}
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.18.

Centered text
written by me
August 31, 2021

Рис. 2.18  Текст, выровненный по центру

Поскольку только общий заголовок документа должен быть отцентрирован, мы открыли группу, чтобы ограничить область действия выравнивания
по центру. С помощью объявления centering весь следующий текст в этой
группе выравнивается по центру по горизонтали. Мы также вставили разрыв абзаца с по­мощью пустой строки – такая вставка рекомендуется перед
концом группы, чтобы выравнивание по центру применялось ко всему абзацу, содержащемуся в группе. Применив закрывающую фигурную скобку,
мы завершаем группу. Если добавить какой-либо текст после закрывающей
фигурной скобки, то он будет отформатирован обычным образом, а не выровнен по центру.
Команда centering часто используется при вставке иллюстраций или таб­
лиц, реже на титульных страницах, иногда для локальных заголовков, но не
как часть определений команд логического форматирования.

74  Форматирование текста и создание макрокоманд

Использование окружений для выравнивания
Существует предварительно определенное окружение center, позволяющее
выравнивать текст по центру и одновременно вставлять его в выводимый
абзац.
Протестируем это окружение. Снова воспользуемся фрагментом поэмы
Эдгара Аллана По. Но на этот раз отцентрируем все стихотворные строки.
1. Создайте новый документ:
documentclass{article}

2. Теперь загрузите пакет url, чтобы также можно было разместить гиперссылку в конце документа:
usepackage{url}

3. В начале документа введите некоторый текст:
begin{document}
noindent This is the beginning of a poem
by Edgar Allan Poe:

4. Теперь введите текст в окружении center:
begin{center}
emph{Annabel Lee}
end{center}

5. И снова введите основной текст самой поэмы:
begin{center}
It was many and many a year ago,\
In a kingdom by the sea,\
That a maiden there lived whom you may know\
By the name of Annabel Lee
end{center}

6. Добавьте некоторый текст, включающий URL, который указывает на
место расположения этой поэмы в интернете, потом завершите документ:
The complete poem can be read on
url{http://www.online-literature.com/poe/576/}.
end{document}

7. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.19.
В рассматриваемом здесь примере мы опять начали с объявления noindent, чтобы запретить выравнивание абзаца. Команда begin{center} инициа­
лизирует окружение center, начинающееся с нового абзаца и оставляющее
некоторое пространство для предыдущего текста. Команда end{center} завершает это окружение. Далее мы используем окружение center во второй

Вывод цитат  75

раз и в нем вставляем коман­ды \ для обозначения концов стихотворных
строк. После завершения окружения center вставляется некоторое свободное
пространство, потом начинается следующий абзац, выровненный по левому
краю.
This is the beginning of a poem by Edgar Allan Poe:
Annabel Lee
It was many and many a year ago,
In a kingdom by the sea,
That a maiden there lived whom you may know
By the name of Annabel Lee
The complete poem can be read on http://www.online-literature.com/
poe/576/.

Рис. 2.19  Выровненные по центру строки поэмы
внутри основного текста документа

Существуют окружения не только для выравнивания по центру. Соответствующее окружение для текста с рваным правым краем называется flushleft, т. е. все в этом окружении смещается влево, а справа текст остается
рваным. Аналогично для создания текста с рваным левым краем существует
окружение flushright.
Выравнивание по центру, как было показано выше, является одним из
способов выделения некоторого текста. Другой способ – выравнивание с небольшим сдвигом и добавлением небольшого пространства по вертикали до
и после текста. Это общепринятый способ вывода цитаты. Рассмотрим, как
это делается.

Вывод цитат
Предположим, что текст, с которым вы работаете, содержит цитирование
другого автора. Цитату трудно отыскать, если она просто включена в основной текст. Общепринятым способом улучшения читабельности является
особое выделение текста с по­мощью выравнивания со сдвигом обеих его
границ. Для выполнения такого выделения процитируем высказывания двух
знаменитых физиков в рассматриваемом ниже примере.
1. Создайте новый документ, в начале которого расположен некоторый
вводный текст:
documentclass{article}
begin{document}
noindent Niels Bohr said: «An expert is a person
who has made all the mistakes that can be made in
a very narrow field.»
Albert Einstein said:

76  Форматирование текста и создание макрокоманд
2. Выделите цитату:
begin{quote}
Anyone who has never made a mistake has never
tried anything new.
end{quote}

3. Добавьте некоторый основной текст и завершите документ:
Errors are inevitable. So, let’s be brave
trying something new.
end{document}

4. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.20.

Niels Bohr said: “An expert is a person who has made all the mistakes that can
be made in a very narrow field.” Albert Einstein said:
Anyone who has never made a mistake has never tried anything new.
Errors are inevitable. So, let’s be brave trying something new.

Рис. 2.20  Текст с выделенной цитатой

Сначала мы вставили цитату прямо в строку, т. е. в поток текста в абзаце.
Одиночная обратная кавычка ` генерирует символ левой (открывающей)
кавычки для цитаты, также называемый обратным апострофом (обратной
галочкой; backtick). Прямая одиночная кавычка ‘ генерирует символ правой
(закрывающей) кавычки для цитаты. Чтобы получить двойные кавычки, мы
просто ввели два соответствующих символа. Это называется цитированием
в строке (inline quoting).
Далее используется окружение quote для вывода цитаты, отделенной от
окружающего ее текста. При этом мы не начинаем новый абзац, потому что
цитата уже немного смещена от своего абзаца. Это называется выделенной
цитатой (displayed quoting).

Цитирование более длинного текста
При создании коротких цитат окружение quote выглядит очень хорошо. Но
если необходимо процитировать текст, содержащий несколько абзацев, то,
возможно, потребуется такое же выравнивание абзацев, как и в окружающем основном тексте. Окружение quotation выполнит такое выравнивание
автоматически.
Процитируем некоторые из преимуществ TeX и LaTeX, перечисленных на
веб-странице CTAN.
1. Создайте новый документ и добавьте в него приведенный ниже текст:

Вывод цитат  77
documentclass{article}
usepackage{url}
begin{document}
The authors of the CTAN team listed ten good reasons
for using TeX. Among them are:
begin{quotation}
TeX has the best output. What you end with,
the symbols on the page, is as useable, and beautiful,
as a non-professional can produce.
TeX knows typesetting. As those plain text samples
show, TeX’s has more sophisticated typographical
algorithms such as those for making paragraphs
and for hyphenating.
TeX is fast. On today’s machines TeX is very fast.
It is easy on memory and disk space, too.
TeX is stable. It is in wide use, with a long
history. It has been tested by millions of users,
on demanding input.
It will never eat your document. Never.
end{quotation}
The original text can be found on
url{https://www.ctan.org/what_is_tex.html}.
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.21.

The authors of the CTAN team listed ten good reasons for using TEX.
Among them are:
TEX has the best output. What you end with, the symbols on the
page, is as useable, and beautiful, as a non-professional can produce.
TEX knows typesetting. As those plain text samples show, TeX’s
has more sophisticated typographical algorithms such as those for
making paragraphs and for hyphenating.
TEX is fast. On today’s machines TEX is very fast. It is easy on
memory and disk space, too.
TEX is stable. It is in wide use, with a long history. It has been
tested by millions of users, on demanding input. It will never eat
your document. Never.
The original text can be found on https://www.ctan.org/what_is_tex.html.

Рис. 2.21  Длинный фрагмент цитируемого текста

В этот раз мы воспользовались окружением quotation для выделения нескольких абзацев. Как и в обычном тексте, пустые строки разделяют абзацы.
Абзацы имеют отступ в начальной строке, аналогичный абзацному отступу
в теле основного текста.

78  Форматирование текста и создание макрокоманд
Но что, если нам не нужен такой стиль форматирования абзаца? Попробуем найти альтернативное решение.
В приведенном ниже примере мы намерены отменить абзацные отступы,
а вместо них разделять абзацы небольшим вертикальным интервалом (разгонка абзацев). В качестве содержимого используем несколько предложений
из предыдущего примера о цитировании.
1. Создайте небольшой документ, содержащий приведенный ниже исходный код (убедитесь, что в него включена строка, выделенная полужирным шрифтом):
documentclass{article}
usepackage{parskip}
usepackage{url}
begin{document}
The authors of the CTAN team listed ten good reasons
for using TeX. Among them are:
TeX has the best output. What you end with,
the symbols on the page, is as useable, and beautiful,
as a non-professional can produceldots
The original text can be found on
url{https://www.ctan.org/what_is_tex.html}.
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 2.22.

The authors of the CTAN team listed ten good reasons for using TEX. Among
them are:
TEX has the best output. What you end with, the symbols on the page, is as
useable, and beautiful, as a non-professional can produce. . .
The original text can be found on https://www.ctan.org/what_is_tex.html.

Рис. 2.22  Вертикальные интервалы между абзацами
(разгонка абзацев)

В рассматриваемом здесь примере мы загрузили пакет parskip, единственной задачей которого является полное удаление абзацных отступов. Одновременно этот пакет создает вертикальные интервалы между абзацами. Но
этот пакет не воздействует на определение окружения quotation, поэтому мы
вынуждены продолжать использование окружения quote.
Визуализация разрывов абзацев
Для того чтобы отличать абзацы друг от друга, существуют два общеизвестных способа. Первый – абзацный отступ в начальной строке абзаца – это стиль, принятый по
умолчанию в LaTeX. Второй способ – вставка вертикальных интервалов между абзацами с отменой абзацных отступов. Этот способ хорошо подходит для узких столбцов,
где абзацный отступ занимает слишком много места.

Резюме  79

Резюме
В этой главе мы изучили основы редактирования, организации и форматирования текста. В частности, рассмотрели изменение шрифтов и стилей текста,
использование команд и объявлений с обязательными и необязательными
аргументами, а также определение собственных команд. Мы также узнали,
как отформатировать абзац – включая выравнивание по левому и правому
краю или полное выравнивание по ширине, а кроме того, узнали о цитировании.
Следует помнить: даже несмотря на то, что мы применяли коман­ды форматирования непосредственно в тексте при их изучении, все же лучше использовать их внутри определений команд в преамбуле, чтобы можно было
легко вносить изменения в будущем. По мере чтения книги вы познакомитесь с другими полезными коман­дами и пакетами, которые могут улучшить
ранее написанные вами коман­ды.
Теперь, когда мы узнали все подробности о форматировании текста, мы
готовы перейти к следующей главе, в которой рассматривается форматирование и создание макета целых страниц, включая размеры полей, верхние
и нижние колонтитулы.

Powered by TCPDF (www.tcpdf.org)

Глава

3
Дизайн страниц

После чтения предыдущей главы форматирование текста должно стать для
нас простой задачей. Теперь перейдем к страницам в целом.
В этой главе мы узнаем, как структурировать документ по главам и разделам, а также как изменить общий внешний вид документа, например поля,
ориентацию страниц, верхние и нижние колонтитулы. Эти знания позволят
вам управлять дизайном всего документа в целом.
Темы, рассматриваемые в этой главе:
  создание книги с главами;
  определение полей;
  использование опций (параметров) класса;
  дизайн верхних и нижних колонтитулов;
  использование сносок;
  разделение страниц;
  укрупнение страницы;
  изменение межстрочного интервала (интерлиньяж);
  создание оглавления.
Изучая эти темы, мы должны глубже понять классы и пакеты.
Начнем с примера документа, занимающего несколько страниц. Это будет
наш тестовый объект для дальнейших изменений.

Технические требования
Потребуется система LaTeX, установленная на вашем компьютере, но можно воспользоваться сервисом Overleaf. Все примеры можно редактировать
и компилировать в режиме онлайн на веб-странице этой книги: https://latexguide.org/chapter-03.
Исходный код примеров доступен также в репозитории GitHub: https://
github.com/PacktPublishing/LaTeX-Beginner-s-Guide-2nd-Edition-/tree/main/Chapter_03_-_Designing_Pages.
В этой главе будут использоваться следующие пакеты LaTeX: babel, blindtext, fancyhdr, geometry и setspace. Если вы не работаете в режиме онлайн, то
проверьте, установлены ли у вас перечисленные пакеты, если вы не устанавливали систему LaTeX в полном объеме. Мы также будем обсуждать пакеты
bigfoot, endnotes, footmisc, lipsum, manyfoot, multicol, safefnmark и scrlayer-scrpage, использование которых не является обязательным требованием.

Создание книги с главами  81

Информацию о пакетах можно найти на сайте CTAN: https://ctan.org/
pkg/, а документацию по ним здесь: https://texdoc.org/pkg/.

Создание книги с главами
Начинаем писать книгу. Сначала необходимо выбрать класс и использовать
некоторый заполняющий текст для работы с макетом страницы. Рассмотрим
подробнее, как это делается.
1. Создайте новый документ и введите в него показанные ниже строки
преамбулы:
documentclass[a4paper,12pt]{book}
usepackage[english]{babel}
usepackage{blindtext}

2. Продолжайте ввод тела документа, содержащего название главы, заголовков раздела и подраздела, а также некоторый заполняющий текст:
begin{document}
chapter{Exploring the page layout}
In this chapter we will study the layout of pages.
section{Some filler text}
blindtext
section{A lot more filler text}
More dummy text will follow.
subsection{Plenty of filler text}
blindtext[10]
end{document}

3. Скомпилируйте документ, щелкнув по кнопке Typeset. Внимательно
рассмотрите первую страницу, показанную на рис. 3.1.
Для этого документа мы выбрали класс book. Как понятно по имени, этот
класс подходит для документов, похожих по структуре на книгу. Обычно книги содержат страницы с размещением текста на обеих сторонах и состоят из
глав. По умолчанию, что является в высшей степени общепринятым, главы
начинаются с правосторонних страниц с нечетными номерами. Если необходимо соблюдать это условие, то LaTeX вставляет пустую левостороннюю
страницу с четным номером, чтобы очередную главу можно было начать со
следующей правосторонней страницы.
Кроме того, книги могут иметь титульные элементы, состоящие из обложки и одной или нескольких титульных страниц, а также данные в конце
книги, содержащие библиографию, предметный указатель и т. п. Класс book
поддерживает все эти компоненты книги.
В примере использовался параметр a4paper, поэтому документ должен
быть отформатирован в соответствии с форматом листа бумаги A4. Для использования размера бумажного листа, принятого в США, US letter, необходимо использовать параметр letterpaper.

82  Дизайн страниц

Chapter 1
Exploring the page layout
In this chapter we will study the layout of pages.

1.1

Some filler text

Hello, here is some text without a meaning. This text should show what a
printed text will look like at this place. If you read this text, you will get no
information. Really? Is there no information? Is there a difference between
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A
blind text like this gives you information about the selected font, how the
letters are written and an impression of the look. This text should contain
all letters of the alphabet and it should be written in of the original language.
There is no need for special content, but the length of words should match
the language.

1.2

A lot more filler text

More dummy text will follow.

1.2.1

Plenty of filler text

Hello, here is some text without a meaning. This text should show what
a printed text will look like at this place. If you read this text, you will
get no information. Really? Is there no information? Is there a difference
between this text and some nonsense like “Huardest gefburn”? Kjift – not
at all! A blind text like this gives you information about the selected font,
how the letters are written and an impression of the look. This text should
contain all letters of the alphabet and it should be written in of the original
1

Рис. 3.1  Пример готовой страницы

Параметр класса документа 12pt сообщает LaTeX о необходимости использования базового размера шрифта 12 пт.
Мы загрузили пакет babel. Этот пакет предоставляет поддержку типографских инструментальных средств для многочисленных (естественных) языков, таких как правила корректного переноса слов для выбранного языка
и переводы неясных (неоднозначных) слов и выражений. Например, мы использовали параметр english при загрузке пакета babel и получили название
главы Chapter 1. Если вместо english указать параметр french, то название
главы было бы таким: Chapitre 1.
По умолчанию принят американский вариант английского языка. Для
установки британского варианта нужно использовать параметр british при
загрузке пакета babel. Эти два варианта английского языка отличаются весьма незначительно. Например, в британском варианте некоторые слова пишутся немного по-другому и правила переноса слов слегка различны.
Мы загрузили пакет blindtext, который был разработан для генерации заполняющего текста. Он использует babel для определения языка документа,

Определение размеров полей  83

а мы указали english при загрузке пакета babel, что в действительности означает американский вариант английского языка. Без babel пакет blindtext по
умолчанию использовал бы заполняющий текст на латинском языке.
Команда blindtext выводит некоторый фиктивный текст просто для заполнения пространства страницы.
Команда chapter генерирует крупный заголовок главы, которая всегда начинается на новой странице.
Команду section мы уже встречали раньше. Это второй уровень структурирования, на котором генерируется заголовок меньшего размера по сравнению с chapter. Нумерация заголовков этого уровня автоматически обновляется LaTeX.
Наконец, мы улучшили структурирование с по­мощью коман­ды subsection,
за которой следует еще один фрагмент фиктивного текста для заполнения
пространства страницы.
Заполняющий текст Lorem Ipsum
Существует еще один широко известный пакет для генерации фиктивного текста. Он
называется lipsum и генерирует знаменитый текст Lorem Ipsum1, который в течение
многих лет представлял фиктивный текст для типографских наборных машин.

Теперь рассмотрим, как можно изменить размеры полей, принятые по
умолчанию.

Определение размеров полей
Издатель или руководитель проекта может потребовать от вас соблюдения
его собственных спецификаций, принятых для оформления документов.
Помимо размера шрифта, межстрочных интервалов и других требований
к стилю, могут существовать спецификации для полей. В этом случае, возможно, потребуется замена рекомендованных параметров LaTeX и точное
определение собственных характеристик полей.
Существует пакет geometry, который выполняет все эти требования. Мы
загрузим этот пакет и определим точные значения ширины и высоты всех
полей в документе.
1. Дополните преамбулу предыдущего примера документа в этой главе
приведенной ниже коман­дой:
usepackage[a4paper, inner=1.5cm, outer=3cm, top=2cm, bottom=3cm,
bindingoffset=0.5cm]{geometry}

2. Щелкните по кнопке Typeset для компиляции кода и внимательно рассмотрите измененные поля.
Пакет geometry берет на себя все обязанности по формированию макета,
связанные с размером листа бумаги, полей и прочими размерами. Мы выбрали формат листа A4, ширину внешнего поля 3 см, внутреннего – 1.5 см.
1

https://ru.wikipedia.org/wiki/Lorem_ipsum.

84  Дизайн страниц
Внутренние и внешние поля
Когда обычная книга с двусторонним размещением текста на страницах лежит в открытом виде перед нами, то два внутренних поля воспринимаются как одно объединенное пустое пространство. Когда мы намерены создать поля равного размера –
левое, среднее и правое, то можем выбрать такой вариант, чтобы внутреннее поле
было вполовину меньше размера внешнего поля. Вот почему внешние поля шире
внутренних. Может существовать некая причина для того, чтобы сделать внутреннее
поле немного шире, – возможна потеря пространства поля в дальнейшем в процессе
брошюровки (переплета), например склеивания или скрепления. Но это зависит от
типа брошюровки, и такая операция может быть предусмотрена с по­мощью дополнительного параметра bindingoffset.

Размер верхнего поля определен равным 2 см, нижнего поля – 3 см. Самым
последним задано значение 0.5 см для корректировки при брошюровке.
В первое время после появления LaTeX общепринятой практикой было
ручное управление размерами макета. Эта методика имела некоторые недостатки. Существовала высокая вероятность совершения ошибок при вычислении размеров, например левое поле плюс правое поле плюс ширина
текста могло не совпадать с шириной листа бумаги.
Именно здесь на помощь приходит пакет geometry, предоставляющий
удобный интерфейс для определения параметров макета. Боле того, этот
пакет предоставляет автодополнение, вычисляет отсутствующие значения
для обес­печения соответствия размеру листа бумаги и даже добавляет пропущенные размеры, используя эвристический метод для получения правильного макета.
Пакет geometry воспринимает параметры в форме ключ=значение, разделенные запятыми. Если вы загружаете geometry без аргументов, то эти аргументы можно использовать в альтернативной форме, вызвав geometry{список_
аргументов}.
Теперь подробнее рассмотрим параметры пакета geometry для управления
всеми свойствами и характеристиками макета страницы.

Выбор размера страницы
Пакет geometry предоставляет несколько параметров для установки размера
и ориентации страницы (листа бумаги):
  paper=name определяет имя формата (бумажной) страницы, например
paper=a4paper. Пакет поддерживает множество размеров и форматов,
таких как letterpaper, executivepaper, legalpaper, a0paper, a6paper, b0paper,
b6paper и многие другие;
  paperwidth и paperheight позволяют свободно выбирать размеры страницы, например paperwidth=7in и paperheight=10in;
  papersize={ширина,высота} устанавливает ширину и высоту страницы,
например papersize={7in,10in}. Это пример аргумента, состоящего из
двух значений;
  portrait переключает ориентацию страницы в книжный режим (это
вариант по умолчанию), тогда как landscape изменяет ориентацию на
альбомную.

Определение размеров полей  85

Если вы уже определили имя формата страницы для класса документа, то
geometry примет (унаследует) это имя. Это работает как общее правило: все
параметры класса документа передаются в пакеты, которые распознают эти
параметры.

Определение области текста
Область текста можно настроить с по­мощью следующих параметров:
  textwidth устанавливает ширину области текста, например text­w idth
=140mm;
  textheight устанавливает высоту области текста, например textheight
=180mm;
  lines предоставляет другой способ определения высоты области текста
с по­мощью количества строк, например lines=25;
  includehead предписывает включить верхний колонтитул страницы
в область тела текста (по умолчанию для этого параметра задано значение false);
  includefoot предписывает включить нижний колонтитул страницы
в область тела текста (по умолчанию для этого параметра задано значение false).

Настройка полей
Размер видимых полей можно определить с по­мощью следующих парамет­
ров:
  left и right устанавливают ширину левого и правого полей, например
left=2cm. Используйте эти параметры для документов с односторонними страницами;
  inner и outer устанавливают ширину внутреннего и внешнего полей,
например inner=2cm. Используйте эти параметры для документов с двусторонними страницами;
  top и bottom устанавливают высоту верхнего и нижнего полей, например top=25mm;
  twoside позволяет переключиться в режим с двусторонними страницами. Это означает, что левое и правое поля поменяются местами на
левосторонних страницах, которые также называются оборотными
(четными, или просто левыми) страницами (verso pages);
  если книга печатается на бумаге, затем брошюруется (склеивается,
прошивается) или переплетается каким-либо другим способом, то брошюровка может скрыть часть внутреннего поля. Можно установить
значение параметра bindingoffset для резервирования ширины, компенсирующей ту часть внутреннего поля, которая скрыта в процессе
брошюровки, чтобы видимое внутреннее поле имело ту ширину, которую вы запланировали.
Здесь перечислена лишь малая часть часто используемых параметров, на
самом деле их гораздо больше. Вы могли бы выбирать и устанавливать не-

86  Дизайн страниц
которые из параметров интуитивно, например usepackage[margin=3cm]{geometry} создает поле размером 3 см на каждой стороне страницы, а размер
страницы берется из соответствующего параметра класса документа.
Автоматическое вычисление полных размеров страницы работает следую­
щим образом:
  paperwidth = left + width + right, где width=textwidth по умолчанию;
  paperheight = top + height + bottom, где height=textheight по умолчанию.
Если вы решаете включить примечания (сноски) на полях в основное тело
текста при вычислении полных размеров макета страницы, то ширина может
оказаться больше, чем значение textwidth. Если заданы два размера с правой
стороны каждой формулы, то будет вычислен отсутствующий размер. Именно поэтому может оказаться вполне достаточным определение параметров
left и right, а также top и bottom соответственно. Даже если задан размер всего
лишь одного поля, другие размеры будут определены с использованием соотношений размеров полей, принятых по умолчанию:
  top : bottom = 2 : 3;
  left : right = 1 : 1 для документов с односторонними страницами;
  inner : outer = 2 : 3 для документов с двусторонними страницами.
Выглядит сложновато? Именно так geometry помогает вам получить размеры аккуратно выглядящих страниц, даже если некоторые значения не заданы.
К пакету geometry прилагается обширное справочное руководство. Пусть
вас не смущает большой объем документации, руководство позволяет вам
постепенно узнавать подробности о разнообразных функциональных возможностях и свойствах.
Как мы уже видели в главе 1 «Начинаем работу с LaTeX», руководство можно открыть, если ввести в командной строке (т. е. в окне терминала) texdoc
geometry или в браузере перейти на веб-страницу https://texdoc.org/pkg/geometry.
Теперь, когда мы знаем, как настроить геометрические параметры основной страницы, рассмотрим опции для изменения расположения (макета) самого текста, такие как переключение на альбомную ориентацию и создание
нескольких столбцов.

Использование параметров

класса
Нам уже известно, что класс является основой любого документа. Класс
предоставляет коман­ды и окружения, расширяющие стандартные функциональные возможности LaTeX. Хотя класс предлагает стиль по умолчанию, его
можно перенастроить с по­мощью параметров класса документа.
В приведенном ниже примере мы изменим ориентацию документа из
предыдущего примера на альбомную. Кроме того, мы разделим текст на два
столбца.
1. Добавьте параметры landscape и twocolumn в инструкцию documentclass
из предыдущего примера, как показано ниже:
documentclass[a4paper,12pt,landscape,twocolumn]{book}

Использование параметров класса  87

2. Загрузите пакет geometry:
usepackage{geometry}

3. Щелкните по кнопке Typeset и внимательно рассмотрите, как изменилось размещение текста на странице (см. рис. 3.2).

Chapter 1
Exploring the page layout
1.2

In this chapter we will study the layout of pages.

A lot more filler text

More dummy text will follow.

1.1

Some filler text

1.2.1

Hello, here is some text without a meaning. This text
should show what a printed text will look like at this
place. If you read this text, you will get no information.
Really? Is there no information? Is there a difference
between this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A blind text like this gives you
information about the selected font, how the letters are
written and an impression of the look. This text should
contain all letters of the alphabet and it should be written
in of the original language. There is no need for special
content, but the length of words should match the language.

Plenty of filler text

Hello, here is some text without a meaning. This text
should show what a printed text will look like at this
place. If you read this text, you will get no information.
Really? Is there no information? Is there a difference
between this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A blind text like this gives you
information about the selected font, how the letters are
written and an impression of the look. This text should
contain all letters of the alphabet and it should be written in of the original language. There is no need for special content, but the length of words should match the
language. Hello, here is some text without a meaning.
1

Рис. 3.2  Страница с альбомной ориентацией и двумя столбцами текста

Воспользовавшись параметром landscape, мы изменили ориентацию страницы с книжной (portrait) на альбомную (landscape). С помощью параметра
twocolumn мы разделили основное тело текста на два столбца.
Мы загрузили пакет geometry, чтобы получить правильный размер страницы в формате PDF с альбомной ориентацией. Без этого пакета PDF-страница
осталась бы с книжной ориентацией.
Команда twocolumn[opening text] начинает страницу с двумя столбцами
и с необязательным открывающим (предваряющим) текстом opening text,
размещенным по всей ширине страницы. Команда onecolumn начинает страницу с одним столбцом. Если необходимо сбалансировать столбцы на последней странице или требуется более двух столбцов, то следует использовать пакет multicols.
Базовыми классами LaTeX являются article, book, report, slides и letter.
По названию можно понять, что последний класс можно использовать для
написания писем, хотя для этого существуют более подходящие классы, например scrlttr2.

88  Дизайн страниц
Класс slides можно применять для создания презентаций, но в настоящее
время существуют более мощные и богатые функциональными возможностями классы, такие как beamer и powerdot.
Ниже приводится краткий итоговый обзор параметров для базовых
классов:
  a4paper, a5paper, b5paper, letterpaper, legalpaper или executivepaper – вывод
будет отформатирован в соответствии с одним из этих размеров страницы, например страница A4 форматируется с размерами 210×297 мм.
По умолчанию принят размер letterpaper (8.5×11 дюймов). Загрузка
пакета geometry позволяет использовать больше вариантов размеров;
  10pt, 11pt или 12pt – размер обычного текста в документе. По умолчанию принят размер 10 пт (10pt). Размер текста заголовков, сносок,
предметных указателей и т. п. определяется на основе размера основного текста;
  landscape – переключает в альбомный формат, при этом ширина и высота выводимой страницы меняются местами;
  onecolumn или twocolumn – определяют, будет ли страница содержать
один столбец (по умолчанию) или два столбца. Этот параметр не поддерживается классом letter;
  oneside или twoside – форматирование для печати на одной или двух
сторонах страницы (листа) соответственно. По умолчанию установлен
режим односторонней печати oneside, за исключением класса book. Режим двусторонней печати неприменим для классов slide и letter;
  openright или openany – первый параметр определяет, что главы обязательно должны начинаться на правосторонней странице (по умолчанию для класса book). Второй параметр позволяет начинать главы
с любой страницы (по умолчанию для класса report). Эти параметры
поддерживаются только классами book и report, поскольку в других
классах главы не создаются;
  titlepage или notitlepage – первый параметр определяет наличие отдельной титульной страницы при использовании maketitle и установлен по умолчанию, за исключением класса article. По умолчанию
для класса article установлен параметр notitlepage, означающий, что
обычный текст может следовать непосредственно за заголовком статьи
на той же странице;
  final или draft – если установлен параметр draft, то LaTeX помечает
переполненные строки черным боксом, что удобно при рецензировании и улучшении выводимого текста. Некоторые пакеты также поддерживают эти параметры, но с другим поведением, например временно
исключают встраивание графики и листингов кода, если выбран режим
draft. По умолчанию установлен параметр final;
  openbib – если установлен этот параметр, то библиографический список
форматируется в обычном разреженном стиле вместо сжатого;
  fleqn – формулы выводятся с выравниванием по левому краю;
  leqno – для пронумерованных выводимых формул их нумерация располагается слева. По умолчанию нумерация формул располагается
справа.

Создание верхних и нижних колонтитулов  89

Эти параметры, а также многие другие, поддерживаются и во множестве
иных классов. Для нестандартных базовых размеров шрифтов классы extarticle, extbook, extreport и extletter предоставляют базовые размеры шрифтов от 8 до 20 пт. Классы KOMA-Script позволяют применять произвольные
базовые размеры шрифтов. Они понимают настолько большое количество
параметров, что дополнительно поддерживают интерфейс ключ=значение, который мы видели в пакете geometry.
KOMA-Script
Классы KOMA-Script могут использоваться как базовые: для каждого базового класса
существует соответствующий класс KOMA. Они существенно расширяют возможности
базовых классов, предоставляя большой набор команд и параметров для пользовательской настройки. Руководство по классам KOMA-Script можно открыть на вебстранице https://texdoc.org/pkg/koma-script.

Поскольку в этом разделе были упомянуты колонтитулы, теперь рассмот­
рим и эти элементы текста.

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

CHAPTER 1. EXPLORING THE PAGE LAYOUT

language. There is no need for special content, but the length of words should
match the language. Hello, here is some text without a meaning. This text
should show what a printed text will look like at this place. If you read this
text, you will get no information. Really? Is there no information? Is there
a difference between this text and some nonsense like “Huardest gefburn”?
Kjift – not at all! A blind text like this gives you information about the
selected font, how the letters are written and an impression of the look. This
Рис. all
3.3letters
 Колонтитул
2 written in of
text should contain
of the alphabetна
andстранице
it should be
the original language. There is no need for special content, but the length of
words should match the language. Hello, here is some text without a meaning.
А на рис. 3.4
показано,
какwhat
выглядит
колонтитул
на place.
правосторонней
страThis
text should show
a printed text
will look like at this
If you
нице 3, где номер
страницы
расположен
внешнем
поле, т. е. с правой
read this
text, you willтакже
get no information.
Really? во
Is there
no information?
Is there a difference between this text and some nonsense like “Huardest
стороны.
gefburn”? Kjift – not at all! A blind text like this gives you information
В одностороннем
нетhow
такого
различия
размещении
about the макете
selected font,
the letters
are written вand
an impression of колонтитулов.
the look.
This text should contain
all lettersточно
of the alphabet
it как
shouldпоказанный на
Все колонтитулы
в одностороннем
макете
такиеand
же,
be written in of the original language. There is no need for special content,
рис. 3.4. По умолчанию
текст
колонтитула
расположен
слева,
а номер страbut the length of words should match the language. Hello, here is some text
ницы – справа.
without a meaning. This text should show what a printed text will look like
at this place.
If you read this сами
text, you
get no
information.
Really? но все же мы
Эти стандартные
колонтитулы
поwillсебе
весьма
полезны,
Is there no information? Is there a difference between this text and some
рассмотрим, как
можно
их
перенастроить
для
соответствия
индивидуальным
nonsense like “Huardest gefburn”? Kjift – not at all! A blind text like this
требованиям.gives you information about the selected font, how the letters are written
and an impression of the look. This text should contain all letters of the
alphabet and it should be written in of the original language. There is no
need for special content, but the length of words should match the language.
Hello, here is some text without a meaning. This text should show what a

90  Дизайн страниц
1.2. A LOT MORE FILLER TEXT

3

language. There is no need for special content, but the length of words should
match the language. Hello, here is some text without a meaning. This text
should show what a printed text will look like at this place. If you read this
text, you will get no information. Really? Is there no information? Is there
a difference between this text and some nonsense like “Huardest gefburn”?
Kjift – not at all! A blind text like this gives you information about the
selected font, how the letters are written and an impression of the look. This
Рис. all
3.4letters
 Колонтитул
3 written in of
text should contain
of the alphabetна
andстранице
it should be
the original language. There is no need for special content, but the length of
words should match the language. Hello, here is some text without a meaning.
По умолчанию
шрифт
колонтитула
страницы
форму.
This text
should show
what a printed text
will look like atимеет
this place.наклонную
If you
read this
text, you will
get no information.
Really? Is there no information?
Кроме того, текст
написан
заглавными
(прописными)
буквами. Вместо этого
Is there a difference between this text and some nonsense like “Huardest
мы будем использовать
полужирное начертание и применим малые проgefburn”? Kjift – not at all! A blind text like this gives you information
писные буквыabout
дляtheотображения
главы.
этого ofзагрузим пакет
selected font, how заголовка
the letters are written
andДля
an impression
the look. This textего
should
containдall
letters of the alphabet and it should
fancyhdr и воспользуемся
коман­
ами.
be written in of the original language. There is no need for special content,
1. Загрузите
первый
этой
главы.Hello, here is some text
but the
length of пример
words shouldиз
match
the language.
a meaning. This
text should show what
a printed text
will look like
2. Вставьтеwithout
выделенные
полужирным
шрифтом
строки,
чтобы получить
at this place. If you read this text, you will get no information. Really?
следующий
исходный код:
Is there no information? Is there a difference between this text and some
nonsense like “Huardest gefburn”? Kjift – not at all! A blind text like this
documentclass[a4paper,12pt]{book}
gives you information about the selected font, how the letters are written
usepackage[english]{babel}
and an impression of the look. This text should contain all letters of the
alphabet and it should be written in of the original language. There is no
usepackage{blindtext}
need for special content, but the length of words should match the language.
usepackage{fancyhdr}
Hello, here is some text without a meaning. This text should show what a
fancyhf{}printed text will look like at this place. If you read this text, you will get no
information. Really? Is there no information? Is there a difference between
fancyhead[LE]{scshapenouppercase{leftmark}}
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A
fancyhead[RO]{nouppercase{rightmark}}
blind text like this gives you information about the selected font, how the
fancyfoot[LE,RO]{thepage}
letters are written and an impression of the look. This text should contain
pagestyle{fancy}
all letters of the alphabet and it should be written in of the original language.
There is no need for special content, but the length of words should match
begin{document}
the language.

chapter{Exploring the page layout}
In this chapter we will study the layout of pages.
section{Some filler text}
blindtext
section{A lot more filler text}
More dummy text will follow.
subsection{Plenty of filler text}
blindtext[10]
end{document}

3. Скомпилируйте этот код. Нижние колонтитулы будут содержать номер
страницы с внешней стороны.
Верхний колонтитул правосторонней страницы теперь выглядит, как показано на рис. 3.5.
Верхний колонтитул левосторонней страницы теперь выглядит, как показано на рис. 3.6.
Мы загрузили пакет fancyhdr, который предоставляет коман­ды для пользовательской настройки верхних и нижних колонтитулов. Имена команд этого
пакета начинаются с префикса fancy. Нашим первым действием был вызов
fancy{} – эта коман­да очищает существующие верхние и нижние колонтитулы. Кроме того, мы использовали следующие коман­ды:

Создание верхних и нижних колонтитулов  91

  leftmark – используется классом book для хранения названия главы
вместе с ее номером. По умолчанию применяются заглавные буквы;
  rightmark – используется классом book для хранения заголовка раздела
вместе с его номером. По умолчанию также применяются заглавные
буквы;
  nouppercase – отменяет (принятые по умолчанию) буквы верхнего регистра в своем аргументе;
  scshape – позволяет переключиться на шрифт с малыми прописными
буквами.
Chapter 1. Exploring the page layout
language. There is no need for special content, but the length of words should
match the language. Hello, here is some text without a meaning. This text
should show what a printed text will look like at this place. If you read this
text, you will get no information. Really? Is there no information? Is there
a difference between this text and some nonsense like “Huardest gefburn”?
Kjift – not at all! A blind text like this gives you information about the
selected font, how the letters are written and an impression of the look. This
Рис. 3.5
 allНовый
верхний
колонтитул
страницы
text should
contain
letters of
the alphabet
and it should
be written2in of
the original language. There is no need for special content, but the length of
words should match the language. Hello, here is some text without a meaning.
This text should show what a printed text will look
likeAatlot
this
place.
you
1.2.
more
fillerIf text
read this text, you will get no information. Really? Is there no information?
Is there a difference between this text and some nonsense like “Huardest
language. There is no need for special content, but the length of words should
gefburn”? Kjift – not at all! A blind text like this gives you information
match the language. Hello, here is some text without a meaning. This text
about the selected font, how the letters are written and an impression of
should show what a printed text will look like at this place. If you read this
the look. This text should contain all letters of the alphabet and it should
text, you will get no information. Really? Is there no information? Is there
be written in of the original language. There is no need for special content,
a difference between this text and some nonsense like “Huardest gefburn”?
but the length of words should match the language. Hello, here is some text
Kjift – not at all! A blind text like this gives you information about the
without a meaning. This text should show what a printed text will look like
selected font, how the letters are written and an impression of the look. This
at thisРис.
place.
youНовый
read thisверхний
text, you колонтитул
will get no information.
3.6If 
страницыReally?
3
text should contain all letters of the alphabet and it should be written in of
Is there no information? Is there a difference between this text and some
the original language. There is no need for special content, but the length of
nonsense like “Huardest gefburn”? Kjift – not at all! A blind text like this
words should match the language. Hello, here is some text without a meaning.
gives you information
the selected font,
how the letters are writtenаргументом LE
Мы использовали
коман­дabout
у fancyhead
с необязательным
This text should show what a printed text will look like at this place. If you
and an impression of the look. This text should contain all letters of the
для размещения
названия
в верхнем
колонтитуле.
Аргумент LE – это
read this
text, you willглавы
get no information.
Really?
Is there no information?
alphabet and it should be written in of the original language. There is no
Is left-even,
there a difference
between означает,
this text and some
nonsense
like “Huardest
сокращение от
которое
что
этоmatch
название
главы будет разneed
for special content,
but the length of words
should
the language.
gefburn”? Kjift – not at all! A blind text like this gives you information
Hello,
here
is some text without
a meaning. Thisс text
should show
what a
мещаться слева
в
колонтитуле
на
страницах
четными
номерами.
about the selected font, how the letters are written and an impression of
text will look like at this place. If you read this text, you will get no
Мы еще разprinted
коман­
у fancyhead,
но alphabet
на этот
с аргументом RO
theвызвали
look. This text
shouldдcontain
all letters of the
and раз
it should
information. Really? Is there no information? Is there a difference between
be written
in of the original
language.
There is noколонтитуле.
need for special content,
RO – это
для размещения
заголовка
раздела
в
верхнем
Аргумент
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A
but the length of words should match the language. Hello, here is some text
blind
text like thisкоторое
gives you information
aboutчто
the selected
font, how the раздела долсокращение от
right-odd,
означает,
этот
заголовок
without a meaning. This text should show what a printed text will look like
letters are written and an impression of the look. This text should contain
at this
place. Ifвyou
read this text, you
will
get no information.
Really?
жен выводиться
справа
колонтитуле
наwritten
страницах
с нечетными
номерами.
all letters
of the alphabet
and it should be
in of the original
language.
Is there no information? Is there aдdifference
between this
text вывода
and some
Далее мы воспользовались
ой
для
There is no need for specialкоман­
content, but
thefancyfoot
length of words should
match the номера страnonsense like “Huardest gefburn”? Kjift – not at all! A blind text like this
language.
Hello, here is some
text without
a meaning. This text should
show
ницы в нижнем
Здесь
мы использовали
аргумента
LE и RO,
givesколонтитуле.
you information about
the selected
font, how the letters оба
are written
what a printed text will look like at this place. If you read this text, you will
andномера
an impression
ofчетных
the look. This
text should contain
all letters ofвсегда
the
чтобы вывести
на
и
нечетных
страницах
с
внешней
get no information. Really? Is there no information? Is there a difference
alphabet and it should be written in of the original language. There is no
between
this text
some nonsense
like “Huardest
gefburn”? Kjift
– not текущей страстороны. Затем
коман­
да and
thepage
выводит
собственно
номер
need for special content, but the length of words should match the language.
at
all! A blind text like this gives you information about the selected font,
ницы.
Hello, here is some text without a meaning. This text should show what a
how the letters are written and an impression of the look. This text should
printed text will
look likeкоман­
at this place.
you read this text, you will get
no
Все перечисленные
выше
дыitIfиспользуются
изменения
стиля
contain all letters
of the alphabet and
should be written in of для
the original
information. Really? Is there no information? Is there a difference between
страницы, предоставляемого
пакетом
fancyhdr.
Этот
стиль
так
и
называетthis text and some nonsense like “Huardest gefburn”? Kjift – not at all! A
ся – fancy. Мы 2blind
должны
сообщить
LaTeX
необходимости
text likeбыли
this gives
you information
aboutоthe
selected font, how theиспользования
are writtenэто
and an
impression
of the
look. This
should contain
данного стиляletters
и сделали
с по­
мощью
коман­
дыtext
pagestyle{fancy}.
all letters of the alphabet and it should be written in of the original language.
Выделение There
с по­isмno
ощью
преобразования
букв
заглавные,
как это деneed for
special content, but the всех
length of
wordsвshould
match
the language.
умолчанию, называется все прописные (all caps). По общему
лает fancyhdr по

92  Дизайн страниц
мнению, этот стиль считается слишком сомнительным. Именно поэтому мы
заменили его на малые прописные.
Существуют разнообразные стили верхних и нижних колонтитулов. Их
сочетание называется стилем страницы (page style). Рассмотрим подробнее
доступные стили страниц.

Описание стилей страниц
LaTeX и его базовые классы предоставляют четыре стиля страниц:
  empty – верхние и нижние колонтитулы не отображаются;
  plain – верхний колонтитул отсутствует. Номер страницы выводится
в центре нижнего колонтитула;
  headings – верхний колонтитул содержит названия глав, разделов и/
или подразделов в зависимости от класса, а также номер страницы.
Нижний колонтитул остается пустым;
  myheadings – верхний колонтитул содержит текст, определенный пользователем, и номер страницы. Нижний колонтитул остается пустым.
Пакет fancyhdr добавляет один стиль страницы под названием fancy, позволяющий пользователю настраивать верхние и нижние колонтитулы.
Две коман­ды можно использовать для выбора стиля страницы:
  pagestyle{name} – позволяет переключиться на стиль страницы name,
начиная с текущей позиции и далее по тексту;
  thispagestyle{name} – выбирает стиль страницы name только для текущей страницы; на всех последующих страницах продолжается применение стиля, который использовался ранее.
Вы уже видели, что в начале главы стиль страницы отличается от всех
прочих страниц. На таких страницах будет применяться простой стиль
plain. Если вы считали, что все страницы должны использовать одинаковый стиль, то загляните в несколько книг: практически везде применяется
общепринятое правило о том, что начало главы всегда отличается по стилю.
На начальных страницах глав обычно используется пустой верхний колонтитул. Чтобы заменить такой стиль, можно воспользоваться коман­дой
thispagestyle.
Содержимое и место его расположения в верхних и нижних колонтитулах
можно изменять, как мы увидим в следующем подразделе.

Пользовательская настройка верхних и нижних
колонтитулов
Разделим верхний и нижний колонтитулы на шесть частей: левую (l), цент­
ральную (c) и правую (r) в каждом колонтитуле. Команды для изменения этих
частей приведены ниже:
  для верхнего колонтитула: lhead, chead, rhead;
  для нижнего колонтитула: lfoot, cfoot, rfoot.

Создание верхних и нижних колонтитулов  93

Для каждой из перечисленных выше команд требуется обязательный аргумент, например chead{User’s guide} или cfoot{thepage}. Этот аргумент
будет размещен в соответствующей области страницы.
Другой вариант: можно использовать следующие более универсальные
коман­ды:
  для верхнего колонтитула: fancyhead[code]{text};
  для нижнего колонтитула: fancyfoot[code]{text}.
В этом случае код code может состоять из одной или нескольких следующих
букв:
  L – слева;
  C – по центру;
  R – справа;
  E – четная страница;
  O – нечетная страница.
Не имеет значения регистр этих букв – можно вводить коман­ды в верхнем
и нижнем регистрах. В рассматриваемом здесь примере мы уже использовали некоторые комбинации этих команд.
Еще одним аспектом пользовательской настройки является изменение
разделительной линии между текстом и колонтитулами.

Использование декоративных линий в верхних
и нижних колонтитулах
Мы можем вводить или удалять линии между основным телом текста и колонтитулами с по­мощью следующих двух команд, соответственно, для верхнего и нижнего колонтитулов:
  renewcommand{headrulewidth}{width};
  renewcommand{footrulewidth}{width}.
Здесь width может быть значением, например 1pt, 0.5mm и т. п. По умолчанию определено значение 0.4pt для линии верхнего колонтитула и 0pt для
линии нижнего колонтитула. Значение 0pt означает, что такая линия невидима.
Команда newcommand определяет новую коман­ду, а renewcommand пере­
определяет существующую коман­ду. Между прочим, только что мы узнали
о новой концепции: большинство команд LaTeX можно переопределить показанным выше способом. Это может быть простым изменением значения,
как в рассматриваемом здесь случае, или переопределением исходного кода
существующей коман­ды.

Изменение меток верхнего колонтитула LaTeX
Как нам уже известно, классы и пакеты LaTeX сохраняют нумерацию разделов и колонтитулы в макрокоман­дах leftmark и rightmark автоматически.
Это выполняется, когда мы вызываем коман­ды chapter, section или sub-

94  Дизайн страниц
section. Поэтому можно было бы просто использовать leftmark и rightmark
в аргументах команд пакета fancyhdr.
Иногда необходимо изменить эти элементы вручную, даже если мы полагаемся на это средство автоматизации. Например, дополнение символом
звездочка команд разбиения на разделы, таких как chapter* и section*, не
будет генерировать запись в колонтитул, как было показано выше. В этом
случае нам помогут две следующие коман­ды:
  markright{right head} устанавливает запись заголовков справа;
  markboth{left head}{right head} устанавливает запись заголовков слева
и справа.
Принятый по умолчанию стиль headings легок в применении и дает неплохие результаты. Стиль myheadings можно использовать вместе с markright и
markboth. Но наиболее универсальный способ обеспечивается пакетом fancyhdr в сочетании с markright и markboth.
Весьма удачной альтернативой fancyhdr является пакет под названием
scrpage-scrlayer. Он принадлежит к классам KOMA-Script, но scrpage-scrlayer
работает и с другими классами. Он обеспечивает аналогичную функциональность, но предлагает даже бóльшие функциональные возможности.
Нижний колонтитул – подходящее место для добавления примечаний
и сносок. В следующем разделе мы узнаем, как это делается.

Использование сносок
Как было кратко упомянуто в главе 2 «Форматирование текста и создание
мак­рокоманд», LaTeX предоставляет коман­ды для создания и форматирования сносок. Рассмотрим, как работают эти коман­ды.
Вернемся к самому первому примеру в этой главе. Мы вставим одну сноску
в теле основного текста, а другую – в заголовке раздела.
1. Изменить исходный пример: вставить сноску, как показано в выделенной строке исходного кода:
documentclass[a4paper,12pt]{book}
usepackage[english]{babel}
usepackage{blindtext}
begin{document}
chapter{Exploring the page layout}
In this chapter we will study the layout of pages.
section{Some filler text}
blindtext
section{A lot more filler text}
More dummy textfootnote{serving as a placeholder}
will follow.
subsection{Plenty of filler text}
blindtext[10]
end{document}

2. Скомпилировать этот исходный код, чтобы посмотреть, как выглядит
сноска в итоговом выводе (см. рис. 3.7).

information. Really? Is there no information? Is there a difference between
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A
blind text like this gives you information about the selected font, how the
letters are written and an impression of the look. This text should contain
all letters of the alphabet and it should be written in of the original language.
Использование
There is no need for special content, but the length of words
should match
the language.

1.2

сносок  95

A lot more filler text

More dummy text1 will follow.

1.2.1

Plenty of filler text

Hello, here is some text without a meaning. This text should show what
a printed text will look like at this place. If you read this text, you will
get no information. Really? Is there no information? Is there a difference
between this text and some nonsense like “Huardest gefburn”? Kjift – not
at all! A blind text like this gives you information about the selected font,
1

serving as a placeholder

Рис. 3.7  Текст со сноской

Команда footnote{text} вставляет число в надстрочном формате в текущей позиции.
Кроме того, она выводит свой аргумент text в нижней части страницы,
помеченной тем же самым номером. Как мы уже видели ранее, такие примечания отделяются от основного текста горизонтальной линией.
Команда footnote[number]{text} создает сноску, помеченную заданным
необязательным целым числом. Если такое необязательное число не задано,
то будет использоваться внутренний счетчик, постоянно увеличивающийся
на единицу. Это делается автоматически, поэтому нет необходимости беспокоиться об инкрементировании счетчика.
Существуют две дополнительные коман­ды, которые помогают выборочно
разместить только метку сноски или текст:
  footnotemark[number] создает надстрочное число в тексте как метку
сноски. Если необязательный аргумент не задан, то также используется
внутренний счетчик сносок, который автоматически увеличивается на
единицу. Текст сноски не создается;
  footnotetext[number]{text} создает текст сноски без размещения ее
метки в тексте и не увеличивает внутренний счетчик сносок автоматически.
Записывайте коман­ду создания сноски сразу после связываемого с ней
текста. Не оставляйте между ними пробел, иначе между текстом и меткой
сноски останется интервал.
На рис. 3.7 мы видели линию, отделяющую сноски от основного текста.
В следующем подразделе мы узнаем, как изменить эту линию.

Изменение линии, отделяющей сноску от текста
Линия, отделяющая сноски от основного текста, создается коман­дой footnoterule. Если нужно пропустить или изменить эту линию, то необходимо
ее переопределить. Ранее мы уже встречались с коман­дой renewcommand, поэтому воспользуемся ею снова.
Применим renewcommand для перезаписи принятой по умолчанию коман­ды
footnoterule.

Exploring the page layout
In this chapter we will study the layout of pages.

96  Дизайн страниц

1.1

Some filler text

1. Используйте исходный код предыдущего примера и добавьте в преhere is some строки:
text without a meaning. This text should show what a
амбулуHello,
следующие
printed text will look like at this place. If you read this text, you will get no
information. Really? Is there no information? Is there a difference between
renewcommand{footnoterule}
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A
{noindentsmash{rule[3pt]{textwidth}{0.4pt}}}
blind text like this gives you information about the selected font, how the

letters are written and an impression of the look. This text should contain
2. Щелкните
по кнопке Typeset, чтобы скомпилировать исходный код,
all letters of the alphabet and it should be written in of the original language.
и посмотрите,
как for
изменилась
сноски
(см.should
рис.match
3.8).
There is no need
special content,линия
but the length
of words
the language.

1.2

A lot more filler text

More dummy text1 will follow.

1.2.1

Plenty of filler text

Hello, here is some text without a meaning. This text should show what
a printed text will look like at this place. If you read this text, you will
get no information. Really? Is there no information? Is there a difference
between this text and some nonsense like “Huardest gefburn”? Kjift – not
at all! A blind text like this gives you information about the selected font,
1

serving as a placeholder

1

Рис. 3.8  Измененная линия, отделяющая сноску от основного текста

Существующая коман­да footnoterule будет заменена новым определением, которое записано во второй строке шага 1. Команда rule[raising]{width}
{height} рисует линию толщиной 0.4 пт, а ее длина равна ширине текста.
Линия приподнята над сноской на 3 пт. С помощью коман­ды smash мы позволяем этой линии имитировать нулевую высоту и глубину, поэтому она
вообще не занимает какое-либо вертикальное пространство. Таким образом,
баланс всей страницы в целом не нарушается. Нам уже известна коман­да
noindent, которая отключает выравнивание абзаца по ширине.
Если нужно полностью убрать линию, отделяющую сноску от основного
текста, то необходимо написать следующую коман­ду:
renewcommand{footnoterule}{}

Теперь эта переопределенная коман­да ничего не делает, поэтому при выводе мы не увидим разделительную линию.

Использование пакетов для расширения стилей
сносок
Существуют различные практические приемы для настройки сносок. Некоторые стили требуют отдельной нумерации сносок на каждой странице, сноски
могут быть размещены в конце документа в виде так называемых концевых
сносок (примечаний) (endnote), или вместо номеров могут использоваться
разнообразные символы. Существуют и другие дополнительные требования,

Разрыв страниц  97

и для их выполнения было разработано несколько специализированных пакетов. Некоторые такие пакеты кратко описаны ниже:
  endnotes – размещает сноски в конце документа;
  manyfoot – позволяет использовать вложенные сноски;
  bigfoot – заменяет и расширяет пакет manyfoot и улучшает обработку
разрывов страниц со сносками;
  savefnmark – полезен, если необходимо использовать сноски несколько
раз;
  footmisc – универсальный комплексный пакет. Обеспечивает возможность отдельной нумерации сносок на каждой странице, позволяет
сэкономить пространство при использовании множества коротких
сносок, предлагает символы как замену номерам меток для сносок,
поддерживает обратный (висячий) отступ и прочие стили.
Чтобы узнать больше об этих пакетах, посмотрите соответствующую документацию с по­мощью коман­ды texdoc, описанной в главе 1 «Начинаем
работу с LaTeX», или на сайте https://texdoc.org.

Разрыв страниц
Как вы уже видели в рассматриваемом здесь примере, LaTeX сам заботится
о разрывах страниц. Но могут возникать ситуации, в которых необходимо
вставить разрыв страницы вручную до того, как LaTeX сделает это. Для выполнения данной операции LaTeX предлагает несколько команд с поддержкой баланса по вертикали или без него.
Вернемся к самой первой версии рассматриваемого в этой главе примера
и вручную вставим разрыв страницы прямо перед подразделом 1.2.1.
1. Вставьте в исходный код примера выделенную полужирным шрифтом
строку, содержащую коман­ду pagebreak:
documentclass[a4paper,12pt]{book}
usepackage[english]{babel}
usepackage{blindtext}
begin{document}
chapter{Exploring the page layout}
In this chapter we will study the layout of pages.
section{Some filler text}
blindtext
section{A lot more filler text}
More dummy text will follow.
pagebreak
subsection{Plenty of filler text}
blindtext[10]
end{document}

2. Щелкните по кнопке Typeset для компиляции кода и внимательно рассмотрите расположение страниц, показанное на рис. 3.9.
3. Замените pagebreak на коман­ду newpage.

98  Дизайн страниц

Chapter 1
Exploring the page layout
In this chapter we will study the layout of pages.

1.1

Some filler text

Hello, here is some text without a meaning. This text should show what a
printed text will look like at this place. If you read this text, you will get no
information. Really? Is there no information? Is there a difference between
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A
blind text like this gives you information about the selected font, how the
letters are written and an impression of the look. This text should contain
all letters of the alphabet and it should be written in of the original language.
There is no need for special content, but the length of words should match
the language.

1.2

A lot more filler text

More dummy text will follow.
1

Рис. 3.9  Растянутая (по вертикали) страница

4. Еще раз скомпилируйте исходный код и сравните внешний вид страниц (см. рис. 3.10).
Сначала мы вставили коман­ду pagebreak, по имени которой можно понять,
что она вставляет разрыв страницы. Кроме того, она растягивает текст по
вертикали для заполнения пространства до нижней границы страницы. Это
может соответствовать требованию, согласно которому текст должен иметь
одинаковую высоту на всех страницах.
После этого из-за явно нежелательного пустого пространства между абзацами и заголовками мы заменили pagebreak на коман­ду newpage. Эта коман­
да также разделяет страницы, но не растягивает текст по вертикали: пространство в нижней части страницы остается пустым.
Таким образом, коман­д а pagebreak ведет себя подобно linebreak,
а коман­да newpage работает как newline (если проводить аналогию между
коман­дами для страниц и для строк). Существует даже коман­да nopagebreak, аналогичная коман­де nolinebreak, запрещающая разрыв страницы.
Команда pagebreak не разрывает строку, а коман­да nopagebreak не должна

Разрыв страниц  99

ссылаться на середину строки – обе коман­ды применяются к концу текущей
строки. Разумеется, они действуют немедленно, если используются между
абзацами.

Chapter 1
Exploring the page layout
In this chapter we will study the layout of pages.

1.1

Some filler text

Hello, here is some text without a meaning. This text should show what a
printed text will look like at this place. If you read this text, you will get no
information. Really? Is there no information? Is there a difference between
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A
blind text like this gives you information about the selected font, how the
letters are written and an impression of the look. This text should contain
all letters of the alphabet and it should be written in of the original language.
There is no need for special content, but the length of words should match
the language.

1.2

A lot more filler text

More dummy text will follow.

1

Рис. 3.10  Страница без растягивания по вертикали

Если используется формат с двумя столбцами, то обе коман­ды pagebreak
и newpage начинают новый столбец, а не новую страницу.
Существуют два следующих варианта: clearpage работает как newpage,
за исключением того, что всегда начинает новую страницу даже в режиме
с двумя столбцами. Команда cleardoublepage делает то же самое, но всегда
размещает начало последующего текста на правосторонней странице, вставляя перед ней пустую страницу, если это необходимо. Такая операция весьма
полезна при работе с двусторонними документами.
Что более важно, обе коман­ды немедленно выводят на печать все иллюст­
рации и таблицы, которые LaTeX хранит во внутренней памяти.
Команды pagebreak и nopagebreak могут принимать необязательный аргумент, запрашивающий определенный тип разрыва страницы, описанный

Powered by TCPDF (www.tcpdf.org)

100  Дизайн страниц
ниже. Аргументом является целое число от 0 до 4. Число 0 означает, что разрыв страницы разрешен, 1 – что разрыв желателен, 2 и 3 обозначают более
строгие требования, поэтому LaTeX пытается с бóльшим упорством растянуть текст по вертикали до нижней границы страницы, а 4 устанавливает
обязательный разрыв страницы. Команды pagebreak и nopagebreak очень
похожи на пару команд linebreak и nolinebreak, которые мы рассматривали
в главе 2 «Форматирование текста и создание макрокоманд».
Такие устанавливаемые вручную разрывы страниц сокращают объем текста, размещаемого на странице. Теперь рассмотрим противоположную операцию: размещение большего объема текста на странице.

Увеличение страницы
Возможны ситуации, в которых необходимо разместить немного больше
текста на какой-либо странице, даже если этот текст будет немного сжат или
увеличится высота области текста. Сделать это поможет коман­да enlargethispage.
Изменим рассматриваемый здесь пример еще немного. На этот раз попытаемся избежать появления почти пустой страницы, сжимая текст на предыдущей странице.
1. Удалите коман­ду newpage из исходного кода примера и переключитесь
на базовый размер шрифта 11pt. На этот раз в подразделе используется
меньше заполняющего текста:
documentclass[a4paper,11pt]{book}
usepackage[english]{babel}
usepackage{blindtext}
usepackage[a4paper, inner=1.5cm, outer=3cm, top=2cm,
bottom=3cm, bindingoffset=1cm]{geometry}
begin{document}
chapter{Exploring the page layout}
In this chapter we will study the layout of pages.
section{Some filler text}
blindtext
section{A lot more filler text}
More dummy text will follow.
subsection{Plenty of filler text}
blindtext[3]
end{document}

2. Скомпилируйте исходный код и убедитесь в том, что результат состоит
из двух страниц. Первая страница представлен на рис. 3.11.
Текст второй страницы показан на рис. 3.12.
3. Вставьте показанную ниже коман­ду непосредственно после строки
subsection:
enlargethispage{baselineskip}

Увеличение страницы  101

Chapter 1

Exploring the page layout
In this chapter we will study the layout of pages.

1.1

Some filler text

Hello, here is some text without a meaning. This text should show what a printed text will
look like at this place. If you read this text, you will get no information. Really? Is there
no information? Is there a difference between this text and some nonsense like “Huardest
gefburn”? Kjift – not at all! A blind text like this gives you information about the selected
font, how the letters are written and an impression of the look. This text should contain all
letters of the alphabet and it should be written in of the original language. There is no need
for special content, but the length of words should match the language.

1.2

A lot more filler text

More dummy text will follow.

1.2.1

Plenty of filler text

Hello, here is some text without a meaning. This text should show what a printed text will
look like at this place. If you read this text, you will get no information. Really? Is there
no information? Is there a difference between this text and some nonsense like “Huardest
gefburn”? Kjift – not at all! A blind text like this gives you information about the selected
font, how the letters are written and an impression of the look. This text should contain all
letters of the alphabet and it should be written in of the original language. There is no need
for special content, but the length of words should match the language. Hello, here is some
text without a meaning. This text should show what a printed text will look like at this
place. If you read this text, you will get no information. Really? Is there no information? Is
there a difference between this text and some nonsense like “Huardest gefburn”? Kjift – not
at all! A blind text like this gives you information about the selected font, how the letters
are written and an impression of the look. This text should contain all letters of the alphabet
and it should be written in of the original language. There is no need for special content, but
the length of words should match the language. Hello, here is some text without a meaning.
This text should show what a printed text will look like at this place. If you read this text,
you will get no information. Really? Is there no information? Is there a difference between
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A blind text like this
gives you information about the selected font, how the letters are written and an impression
of the look. This text should contain all letters of the alphabet and it should be written in
1

Рис. 3.11  Полностью заполненная страница

2

CHAPTER 1. EXPLORING THE PAGE LAYOUT

of the original language. There is no need for special content, but the length of words should
match the language.

Рис. 3.12  Оставшийся текст на второй странице

4. Еще раз скомпилируйте исходный код. Теперь документ полностью
размещен на одной странице, как показано на рис. 3.13.
Мы воспользовались коман­дой enlargethispage для сжатия текста с целью
его размещения на одной странице. Эта коман­да принимает дополнительно
затребованную высоту как аргумент. Команда baselineskip возвращает высоту строки текста, которую мы используем как аргумент. Поэтому LaTeX
удалось разместить еще одну дополнительную строку на первой странице
и даже подогнать к ней оставшуюся (короткую) строку за счет сжатия некоторого пустого пространства.

102  Дизайн страниц

Chapter 1

Exploring the page layout
In this chapter we will study the layout of pages.

1.1

Some filler text

Hello, here is some text without a meaning. This text should show what a printed text will
look like at this place. If you read this text, you will get no information. Really? Is there
no information? Is there a difference between this text and some nonsense like “Huardest
gefburn”? Kjift – not at all! A blind text like this gives you information about the selected
font, how the letters are written and an impression of the look. This text should contain all
letters of the alphabet and it should be written in of the original language. There is no need
for special content, but the length of words should match the language.

1.2

A lot more filler text

More dummy text will follow.

1.2.1

Plenty of filler text

Hello, here is some text without a meaning. This text should show what a printed text will
look like at this place. If you read this text, you will get no information. Really? Is there
no information? Is there a difference between this text and some nonsense like “Huardest
gefburn”? Kjift – not at all! A blind text like this gives you information about the selected
font, how the letters are written and an impression of the look. This text should contain all
letters of the alphabet and it should be written in of the original language. There is no need
for special content, but the length of words should match the language. Hello, here is some
text without a meaning. This text should show what a printed text will look like at this
place. If you read this text, you will get no information. Really? Is there no information? Is
there a difference between this text and some nonsense like “Huardest gefburn”? Kjift – not
at all! A blind text like this gives you information about the selected font, how the letters
are written and an impression of the look. This text should contain all letters of the alphabet
and it should be written in of the original language. There is no need for special content, but
the length of words should match the language. Hello, here is some text without a meaning.
This text should show what a printed text will look like at this place. If you read this text,
you will get no information. Really? Is there no information? Is there a difference between
this text and some nonsense like “Huardest gefburn”? Kjift – not at all! A blind text like this
gives you information about the selected font, how the letters are written and an impression
of the look. This text should contain all letters of the alphabet and it should be written in
of the original language. There is no need for special content, but the length of words should
match the language.
1

Рис. 3.13  Весь текст размещен на одной странице

Можно было бы использовать коэффициенты (множители): написать
коман­ду enlargethispage{2baselineskip} для получения большего количест­
ва строк на странице. Коэффициент может быть и нецелым числом. Как
всегда, при определении длины можно использовать различные единицы
измерения, например 10pt, 0.5in, 1cm или 5mm и даже отрицательные зна­
чения.
Команда enlargethispage воздействует только на текущую страницу. Есть
версия со звездочкой: коман­да enlargethispage* должна сжать все вертикальные пробелы на странице до минимума.
Тем не менее коман­да enlargethispage должна рассматриваться только
как средство для возможной упрощенной корректировки, когда необходимо
быстро разместить больший объем текста на одной странице. В общем случае
можно регулировать объем текста на странице, изменяя поля, как вам уже
известно, или корректируя межстрочный интервал (интерлиньяж). Это тема
следующего раздела.

Изменение межстрочного интервала  103

Изменение межстрочного интервала
Без некоторого вертикального пространства между строками читать текст было
бы очень неудобно. Добавление такого пространства способствует плавному
движению глаз вдоль строки. Несмотря на то что LaTeX сам заботится об удобстве чтения, выбирая осмысленный интервал между строками (интерлинь­
яж – line spacing), издатели могут требовать другой межстрочный интервал.
Мы изменим самую первую версию рассматриваемого в этой главе примера, добавив половину высоты строки в межстрочный интервал.
1. Добавьте в преамбулу рассматриваемого здесь примера следующую
коман­ду:
usepackage[onehalfspacing]{setspace}

2. Скомпилируйте исходный код и посмотрите, как он изменился (см.
рис. 3.14).

Chapter 1

Exploring the page layout
In this chapter we will study the layout of pages.

1.1

Some filler text

Hello, here is some text without a meaning. This text should show what a printed text will
look like at this place. If you read this text, you will get no information. Really? Is there
no information? Is there a difference between this text and some nonsense like “Huardest
gefburn”? Kjift – not at all! A blind text like this gives you information about the selected
font, how the letters are written and an impression of the look. This text should contain all
letters of the alphabet and it should be written in of the original language. There is no need
for special content, but the length of words should match the language.

1.2

A lot more filler text

More dummy text will follow.

1.2.1

Plenty of filler text

Hello, here is some text without a meaning. This text should show what a printed text will
look like at this place. If you read this text, you will get no information. Really? Is there
no information? Is there a difference between this text and some nonsense like “Huardest
gefburn”? Kjift – not at all! A blind text like this gives you information about the selected
font, how the letters are written and an impression of the look. This text should contain all
letters of the alphabet and it should be written in of the original language. There is no need
for special content, but the length of words should match the language. Hello, here is some
text without a meaning. This text should show what a printed text will look like at this
place. If you read this text, you will get no information. Really? Is there no information? Is
there a difference between this text and some nonsense like “Huardest gefburn”? Kjift – not
at all! A blind text like this gives you information about

the selected font, how the letters
are written and an impression of the look. This text should contain all letters of the alphabet
and it should be written in of the original language. There is no need for special content, but
the length of words should match the language. Hello, here is some text without a meaning.
1

Рис. 3.14  Дополнительный межстрочный интервал

104  Дизайн страниц
Мы загрузили пакет setspace для регулирования межстрочного интервала.
Мы определили параметр onehalfspacing, который увеличивает межстрочный
интервал на половину высоты строки во всем документе.
Пакет setspace понимает три параметра:
  singlespacing – задан по умолчанию. Дополнительное пространство не
вставляется. Текст будет отформатирован и выведен с принятым по
умолчанию в LaTeX межстрочным интервалом, который равен приблизительно 20 % высоты строки;
  onehalfspacing – означает полуторный межстрочный интервал, как
можно было видеть в рассматриваемом здесь примере;
  doublespacing – можно использовать для дополнительного увеличения
межстрочного интервала. Расстояние между базовыми (опорными)
линиями следующих друг за другом строк равно удвоенной высоте
строки.
На жаргоне работников типографий расстояние между базовыми (опорными) линиями следующих друг за другом строк называется интерлиньяжем,
или просветом (leading).
Итак, мы окончательно завершили все работы по дизайну документа в целом и теперь добавим в него оглавление.

Создание оглавления
Обычно книга начинается с оглавления, поэтому создадим его на основе
пронумерованных названий глав и заголовков разделов.
1. В ранее созданном примере документа удалите параметры landscape
и twocolumn.
2. Удалите пакет setspace, т. е. следующую строку:
usepackage[onehalfspacing]{setspace}

3. Добавьте коман­ду tableofcontents сразу после строки begin{document}.
Теперь исходный код должен выглядеть следующим образом:
documentclass[a4paper,12pt]{book}
usepackage[english]{babel}
usepackage{blindtext}
usepackage[a4paper, inner=1.5cm, outer=3cm, top=2cm,
bottom=3cm, bindingoffset=1cm]{geometry}
begin{document}
tableofcontents
chapter{Exploring the page layout}
In this chapter we will study the layout of pages.
section{Some filler text}
blindtext
section{A lot more filler text}
More dummy text will follow.
subsection{Plenty of filler text}
blindtext[10]
end{document}

Создание оглавления  105

4. Скомпилируйте исходный код дважды. После этого на первой странице
выведенного результата будет размещено оглавление документа, как
показано на рис. 3.15.

Contents
1 Exploring the page layout
1.1 Some filler text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 A lot more filler text . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Plenty of filler text . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
3
3

Рис. 3.15  Оглавление документа

Команда tableofcontents сообщает LaTeX о необходимости создания и вывода оглавления. Во время процесса форматирования LaTeX записывает заголовки в отдельный вспомогательный файл с расширением .toc. Далее коман­
да tableofcontents считывает .toc-файл для вывода оглавления.
Процесс форматирования LaTeX линейный, т. е. выполняется последовательно от начала до конца исходного кода. Команда tableofcontents находится в начале кода документа, а заголовки расположены дальше по тексту.
Поэтому требуется двукратная компиляция.
1. При первом проходе коман­да tableofcontents ничего не знает о заголовках, поэтому оглавление остается пустым. В процессе форматирования LaTeX записывает заголовки в .toc-файл.
2. При втором проходе коман­да tableofcontents находит и считывает
.toc-файл для вывода оглавления.
В дальнейшем следует постоянно помнить об этой особенности: когда вы
изменяете заголовок и компилируете документ, то можете увидеть внесенное изменение только в тексте. Но это изменение будет отображено в оглавлении лишь после следующей компиляции.
Пункты оглавления создаются коман­дами создания разделов и подразделов. При работе с документом мы использовали коман­ды chapter, section
и subsection, поэтому получили соответствующие пункты оглавления.
Заголовки могут оказаться слишком длинными и занимать две или даже
больше строк. В этом случае может потребоваться сокращение длины соответствующих пунктов оглавления. Рассмотрим, как это делается.
Можно воспользоваться необязательными аргументами команд создания
разделов и подразделов, чтобы получить более короткие записи, отличающиеся от настоящих заголовков. Отредактируем пример, показанный на
рис. 3.15, вставив укороченные названия разделов в квадратных скобках:
chapter[Page layout]{Exploring the page layout}
section[Filler text]{Some filler text}
section[More]{A lot more filler text}
subsection[Plenty]{Plenty of filler text}

106  Дизайн страниц
Скомпилируйте исходный код примера два раза. Вы увидите, что в тексте
заголовки остались такими же, как раньше, но оглавление изменилось, как
показано на рис. 3.16.

Contents
1 Page layout
1.1 Filler text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 More . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Plenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
3
3

Рис. 3.16  Укороченные пункты оглавления

Кроме обязательного аргумента, определяющего текст заголовка, каждая
коман­да создания раздела распознает необязательный аргумент. Если необязательный аргумент задан, то он будет использоваться вместо обязательного
заголовка в соответствующем пункте оглавления.
В главе 8 «Формирование оглавления и списков ссылок» мы более подроб­
но рассмотрим эту тему и узнаем, как дополнительно настроить свойства
оглавления. А теперь снова обратимся к коман­дам создания разделов для
book, report и article. В этих базовых классах существует семь уровней разделов и подразделов:
  part – для разделения документа на основные крупные части. Нумерация других элементов разделения не зависит от part. Заголовок
части использует всю страницу целиком в документах классов book
и report;
  chapter – создает крупный заголовок (название главы), который начинается с новой страницы. Команда доступна в классах book и report;
  section, subsection и subsubsection – создают выделенные полужирным шрифтом заголовки, доступные во всех трех классах;
  paragraph и subparagraph – также доступны во всех трех классах. Создают заголовки вставок, примечаний и т. п. Это означает, что заголовки
находятся прямо в тексте, т. е. нет разрывов строк между заголовком
и следующим за ним текстом. Они также являются коман­дами секционирования, которые не следует путать с обычными текстовыми
абзацами.
За исключением part, все коман­ды создания разделов переустанавливают
(сбрасывают) счетчик раздела, находящийся на один уровень ниже в этой
иерархии. Например, коман­да chapter сбрасывает счетчик разделов (устанавливает для него начальное значение). Таким образом, разделы будут нумероваться по главам отдельно.
Подведем промежуточные итоги – рассмотренными коман­дами создания
разделов и подразделов легко пользоваться, и они выполняют множество
операций:
  part и chapter вставляют разрыв страницы перед заголовком;

Резюме  107

  все коман­ды генерируют номер и его визуальное представление, некоторые зависят от счетчиков более высокого уровня (например, для
раздела 1 главы 2 должен быть сгенерирован номер 2.1);
  за исключением part, все коман­ды сбрасывает счетчик разделов (устанавливает для него начальное значение) нижележащего уровня, так что
нумерация раздела нижележащего уровня начинается с 1;
  все коман­ды создают пункты оглавления;
  все коман­ды форматируют заголовки, обычно выделяя их полужирным
шрифтом и увеличивая размер шрифта тем больше, чем выше заголовок находится в иерархии;
  все коман­ды сохраняют заголовки во внутренней памяти для использования в колонтитуле страницы.
Для всех команд создания разделов существуют формы со звездочкой, как
показано ниже:
section*{title}

При использовании этой формы нумерация отключается и не используется в пункте оглавления или в заголовке. Посмотрите на заголовок Contents
в рассматриваемом здесь примере – в действительности это результат форматирования коман­дой chapter* внутри макрокоман­ды tableofcontents.

Резюме
В этой главе мы освоили проектирование общего макета документа в целом.
В частности, рассмотрели процедуры выбора размеров, полей и ориентации страницы. Мы узнали, как переключиться на макет с двумя столбцами
и как отрегулировать межстрочный интервал (интерлиньяж). Кроме того,
теперь мы умеем настраивать верхние и нижние колонтитулы, добавлять
сноски и оглавление в свой документ.
Мы также рассмотрели некоторые более общие темы, такие как изменение
свойств документа с по­мощью выбора параметров класса документа и параметров пакетов и переопределения существующих команд.
Наступило время познакомиться более подробно с различными текстовыми структурами. В следующей главе мы узнаем, как создавать списки для
представления текста в виде, более удобном для чтения.

Глава

4
Создание списков

Размещение текста в форме списка может оказаться весьма удобным для
читателя. Можно представить несколько самых важных мыслей в четко организованной структуре, которую легко просматривать. В общем случае используются три типа списков:
  маркированные списки для выделения нескольких пунктов из основного текста;
  нумерованные списки для представления пунктов в определенном порядке;
  списки определений для описания нескольких пунктов (понятий)
в структурированном стиле.
В этой главе мы узнаем, как создавать такие списки. Здесь рассматриваются следующие темы:
  создание списков;
  пользовательская настройка списков.
Сначала мы научимся создавать эти списки, затем в остальной части главы
рассмотрим, как можно их настраивать в соответствии со своими требованиями.

Технические требования
Необходима установленная система LaTeX на локальном компьютере, или
можно использовать Overleaf. Также можно выполнять все примеры на вебстранице книги: https://latexguide.org/chapter-04.
Исходный код примеров доступен в репозитории GitHub: https://github.com/
PacktPublishing/LaTeX-Beginner-s-Guide-2nd-Edition-/tree/main/Chapter_04_-_Creating_Lists.
В этой главе используются следующие пакеты LaTeX: enumitem, layouts
и paralist.

Создание списков
Начнем с неупорядоченных списков, пункты которых помечены одинаковыми символами. Далее в этом разделе мы рассмотрим упорядоченные списки,

Создание списков  109

пронумерованные числами или буквами, затем продолжим работу со списками описаний ключевых слов и фактов.

Создание маркированного списка
Начнем с самого простого типа списка. Он содержит только элементы без номеров. Каждый элемент маркирован некоторым символом. Таким образом,
можно организовать список самых важных положений документа намного
более удобным для чтения способом по сравнению с длинным предложением
в обычном текстовом абзаце.
Создадим список пакетов, о которых мы узнали в предыдущей главе. Выполните описанные ниже шаги для создания маркированного списка.
1. Создайте новый документ, содержащий некоторый вводный текст:
documentclass{article}
begin{document}
section*{Useful packages}
LaTeX provides several packages for designing the
layout:

2. Теперь напишите список, используя окружение itemize и коман­ды
item:
begin{itemize}
item geometry
item typearea
item fancyhdr
item scrpage-scrlayer
item setspace
end{itemize}

3. Это было совсем просто. Теперь можно завершить документ:
end{document}

4. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 4.1.
Мы начали с заголовка, за которым следует некоторый текст. Для настоящего списка использовалось окружение itemize. Как нам уже известно
из главы 2 «Форматирование текста и создание макрокоманд», коман­да
begin{itemize} начинает, а коман­д а end{itemize} завершает окружение.
Команда item сообщает LaTeX, что мы добавляем новый пункт в список.
Команда item работает только внутри списка. Каждый пункт может содержать текст любой длины и даже разрывы абзацев. Так что все это делается
достаточно просто.
Когда список становится длиннее, можно разделить его, чтобы он стал
более удобным для чтения. Можно создавать списки в списке. Рекомендуется использовать разные символы-метки, чтобы проще различать уровни
списка. LaTeX делает это автоматически.

110  Создание списков

Useful packages
LaTeX provides several packages for designing the layout:
• geometry
• typearea
• fancyhdr
• scrpage-scrlayer
• setspace
Рис. 4.1  Маркированный список

Улучшим список пакетов из предыдущего примера – введем названия их
категорий. Чтобы сделать это, выполните описанные ниже шаги.
1. Улучшите вышеупомянутое выделенное окружение itemize в рассмат­
риваемом здесь примере следующим образом: создайте список itemize
для каждого названия категории пакетов и сделайте его частью пункта
item. Исходный код списка из шага 2 предыдущего примера теперь
должен выглядеть так:
begin{itemize}
item Page layout
begin{itemize}
item geometry
item typearea
end{itemize}
item Headers and footers
begin{itemize}
item fancyhdr
item scrpage-scrlayer
end{itemize}
item Line spacing
begin{itemize}
item setspace
end{itemize}
end{itemize}

Обратите внимание: каждое окружение обязательно должно быть завершено.
2. Скомпилируйте документ и внимательно рассмотрите новый список,
показанный на рис. 4.2.
Мы использовали списки как часть пункта item внутри другого списка. Таким образом, мы создали вложенные списки или список с вложениями. Разрешено создавать до четырех уровней списка, иначе LaTeX останавливается
и выводит сообщение об ошибке: ! LaTeX Error: Too deeply nested (! Ошибка
LaTeX: слишком глубокое вложение). На рис. 4.2 можно видеть, что первый

Создание списков  111

уровень маркирован жирной точкой (черным кружком), а второй – широким тире. Третий уровень списка должен начинаться с символа звездочки *.
Четвертый и последний уровень маркируется центрированной точкой (интерпунктом).
• Page layout
– geometry
– typearea
• Headers and footers
– fancyhdr
– scrpage-scrlayer
• Line spacing
– setspace
Рис. 4.2  Маркированный список
с двумя уровнями

Списки с глубоким вложением используются редко, поскольку такие сложные структуры могут оказаться слишком неудобными для чтения. В подобных случаях приемлемым решением может стать изменение структуры текс­
та или, по крайней мере, разделение списка.
В исходном коде рассматриваемого здесь примера мы сдвигали вправо
каждую строку внутри окружения itemize. А если существует другое окружение itemize внутри вложенного окружения itemize, то строки item сдвигаются еще правее. Таким образом, всегда можно видеть, на каком уровне
вложенных окружений мы находимся. Это делать не обязательно, но соответствующий сдвиг вправо внутри окружений помогает поддерживать корректную структуру кода, поскольку сразу видно, где начинается и заканчивается окружение. Вообще говоря, сдвиг вправо строк исходного кода внутри
окружения – весьма полезный практический прием, который должен стать
привычкой. Также можно сдвигать вправо строки кода, чтобы напомнить
себе, что они относятся к некоторой родительской строке, как это было сделано в рассматриваемом здесь примере для пунктов item, которые занимали
несколько строк.
Создавайте структуру исходного кода с по­мощью сдвигов вправо
Сдвиг вправо строк исходного кода с по­мощью пробелов или символов табуляции
существенно повышает удобство его чтения. Это никак не влияет на выводимый результат, поскольку LaTeX интерпретирует несколько пробельных символов в строке
кода как один пробельный символ.

В следующем подразделе мы рассмотрим, как составить список важных
пунктов в определенном порядке и пронумеровать их.

112  Создание списков

Создание нумерованного списка
Маркированные списки удобны, если порядок их элементов не имеет значения. Но если порядок важен, то можно организовать элементы, присваивая им номера и создавая отсортированный список. Это позволит читателю
с легкостью проследить ход мысли автора.
Подготовим небольшое пошаговое руководство для проектирования макета страницы, используя для этого нумерованный список. Выполните описанные ниже шаги.
1. Откройте новый документ и введите показанный ниже исходный код:
documentclass{article}
begin{document}
begin{enumerate}
item State the paper size by an option to the
document class
item Determine the margin dimensions using one
of these packages:
begin{itemize}
item geometry
item typearea
end{itemize}
item Customize header and footer by one
of these packages:
begin{itemize}
item fancyhdr
item scrpage-scrlayer
end{itemize}
item Adjust the line spacing for the whole document
begin{itemize}
item by using the setspace package
item or by the command
verb|linespread{factor}|
end{itemize}
end{enumerate}
end{document}

2. Щелкните по кнопке Typeset, чтобы сгенерировать пошаговые инструкции, как показано на рис. 4.3.
Здесь мы использовали окружение enumerate в выделенных строках исходного кода. Если не брать в расчет название, то мы работали с ним точно так
же, как и с окружением itemize: каждый пункт списка создается коман­дой
item. Различие заключается в том, что каждая строка item в окружении enumerate получает порядковый номер вместо символа-метки в начале. И в этом
случае мы создали вложенные списки, но теперь это списки разных типов.
Смешанные вложенные списки могут иметь более четырех уровней, но не
более четырех для каждого типа списка и не более шести в сумме для смешанных списков.
Принятая по умолчанию схема нумерации для окружения enumerate описана ниже:

Создание списков  113






первый уровень: 1., 2., 3., 4., …;
второй уровень: (a), (b), (c), (d), …;
третий уровень: i, ii, iii, iv, …;
четвертый уровень: A., B., C., D., …

1. State the paper size by an option to the document class
2. Determine the margin dimensions using one of these packages:
• geometry
• typearea
3. Customize header and footer by one of these packages:
• fancyhdr
• scrpage-scrlayer
4. Adjust the line spacing for the whole document
• by using the setspace package
• or by the command linespread{factor}
Рис. 4.3  Нумерованный список с вложенными маркированными списками

В коман­ду item можно передать необязательный аргумент. Если написать
item[text], то LaTeX выведет text вместо номера или символа-метки. Таким
образом, мы получаем возможность использовать любое обозначение нумерации и любой символ для маркировки списка.
Теперь, когда мы узнали, как создаются списки с маркировкой и нумерацией, рассмотрим другой тип списка, который можно использовать для
представления описаний нескольких элементов.

Создание списка определений
Рассмотрим третий тип списка – список определений (definition list), который также называют списком описаний (description list). В этом случае
каждый пункт списка состоит из слова (термина) или словосочетания, за
которым следует его описание.
Для примера потребуется несколько словосочетаний, с которыми мы будем работать. Как и в первом примере этой главы, создадим список пакетов.
Но на этот раз мы добавим описание к каждому пакету. Выберем несколько
пакетов здесь: https://ctan.org/topic/list – набор пакетов, предназначенных
для работы со списками. Это также является подготовительным этапом для
следующего раздела «Списки, настраиваемые пользователем», в котором
мы будем работать с пакетами, выбранными для рассматриваемого здесь
примера.

114  Создание списков
Напишем короткий обзор функциональных возможностей для каждого
пакета. Для этого выполните описанные ниже шаги.
1. Здесь используется окружение description. Создайте документ, содержащий следующий исходный код:
documentclass{article}
begin{document}
begin{description}
item[paralist] provides compact lists and list
versions that can be used within paragraphs,
helps to customize labels and layout.
item[enumitem] gives control over labels
and lengths in all kind of lists.
item[mdwlist] is useful to customize description
lists, it even allows multi-line labels.
It features compact lists and the capability
to suspend and resume.
item[desclist] offers more flexibility in
definition list.
item[multenum] produces vertical enumeration in
multiple columns.
end{description}
end{document}

2. Щелкните по кнопке Typeset, чтобы получить список определений,
показанный на рис. 4.4.
paralist provides compact lists and list versions that can be used within paragraphs, helps to customize labels and layout.
enumitem gives control over labels and lenghts in all kind of lists.
mdwlist is useful to customize description lists, it even allows multi-line labels.
It features compact lists and the capability to suspend and resume.
desclist offers more flexibility in definition list.
multenum produces vertical enumeration in multiple columns.
Рис. 4.4  Список определений

Мы использовали окружение description так же, как окружения для других типов списков, с одним различием: здесь в коман­ду item передается
необязательный аргумент в квадратных скобках. В окружении description
item определяется так, что этот необязательный параметр приводит к форматированию вывода ключевых слов с по­мощью полужирного шрифта. Если
сравнить эту особенность с маркированным списком, то можно считать, что
символы-метки заменяются на ключевые слова, выделенные полужирным
шрифтом. Также можно изменить интервалы в списке, тип символов-меток
и стиль нумерации. Все это будет рассматриваться в следующем разделе.

Списки, настраиваемые пользователем  115

Списки, настраиваемые пользователем
Выбранный по умолчанию внешний вид списков является разумным в отношении интервалов, выравнивания и символов-меток. Тем не менее может
потребоваться другая схема нумерации, другие символы-метки или изменение межстрочного интервала либо выравнивания строк. Некоторые пакеты
помогают сэкономить пространство, а также настроить символы-метки. Начнем с межстрочных интервалов.

Создание компактных списков
Часто возникает вопрос: как уменьшить межстрочные интервалы в списках?
Списки LaTeX нередко считают слишком разреженными. Сейчас мы увидим,
как сделать списки более компактными.
Будем уплотнять список пакетов для нашего небольшого руководства. Удалим пустое пространство около отдельных пунктов, а также до и после всего
списка. Для этого выполните описанные ниже шаги.
1. В примере с нумерованным списком, который показан на рис. 4.3, добавьте пакет paralist и замените enumerate на compactenum, а itemize на
compactitem:
documentclass{article}
usepackage{paralist}
begin{document}
begin{compactenum}
item State the paper size by an option to
the document class
item Determine the margin dimensions using one
of these packages:
begin{compactitem}
item geometry
item typearea
end{compactitem}
item Customize header and footer by one
of these packages:
begin{compactitem}
item fancyhdr
item scrpage-scrlayer
end{compactitem}
item Adjust the line spacing for the whole document
begin{compactitem}
item by using the setspace package
item or by the command verb|linespread{factor}|
end{compactitem}
end{compactenum}
end{document}

2. Скомпилируйте этот исходный код и сравните межстрочные интервалы, показанные на рис. 4.5.

116  Создание списков
1. State the paper size by an option to the document class
2. Determine the margin dimensions using one of these packages:
• geometry
• typearea
3. Customize header and footer by one of these packages:
• fancyhdr
• scrpage-scrlayer
4. Adjust the line spacing for the whole document
• by using the setspace package
• or by the command linespread{factor}
Рис. 4.5  Компактный список

3. Теперь дополните выделенный полужирным шрифтом пункт списка
для пакета setspace, как показано ниже:
item by using the setspace package and one
of its options:
begin{inparaenum}
item singlespacing
item onehalfspacing
item double spacing
end{inparaenum}

4. Скомпилируйте дополненный исходный код и внимательно рассмот­
рите изменения в межстрочном интервале, показанные на рис. 4.6.
1. State the paper size by an option to the document class
2. Determine the margin dimensions using one of these packages:
• geometry
• typearea
3. Customize header and footer by one of these packages:
• fancyhdr
• scrpage-scrlayer
4. Adjust the line spacing for the whole document
• by using the setspace package and one of its options: (a) singlespacing
(b) onehalfspacing (c) double spacing
• or by the command linespread{factor}
Рис. 4.6  Список внутри абзаца

Пакет paralist, который мы использовали, предоставляет несколько новых
окружений для форматирования списков внутри абзацев или для вывода
списков в весьма компактном виде. Мы загрузили этот пакет и заменили
стандартные окружения на их компактные аналоги, т. е. enumerate на compactenum и itemize на compactitem. Хотя в остальном синтаксис не изменился,
новые окружения не создают дополнительное вертикальное пространство

Списки, настраиваемые пользователем  117

перед списком и после него. Более того, они не добавляют вертикальное пространство вокруг пунктов списка. Списки и пункты используются с тем же
межстрочным интервалом, что и обычный текст. В итоге список выглядит более компактным и позволяет сэкономить пространство страницы. На шаге 3
использовано новое окружение inparaenum, в котором пункты нумеруются, но
остаются внутри текущего абзаца.
Для каждого стандартного окружения пакет paralist добавляет по три соответствующих окружения.
Для маркированных списков:
  compactitem – компактная версия окружения itemize без дополнительного вертикального пространства до и после списка и его пунктов;
  inparaitem – вывод маркированного списка внутри абзаца, редко встречающийся в итоговых документах;
  asparaitem – каждый пункт списка форматируется как отдельный обычный абзац LaTeX, но с символом-меткой в начале.
Для нумерованных списков:
  compactenum – компактная версия окружения enumerate без дополнительного вертикального пространства до и после списка и его пунктов;
  inparaenum – вывод нумерованного списка внутри абзаца;
  asparaenum – каждый пункт списка форматируется как отдельный обычный абзац LaTeX, но с соответствующим номером.
Для списков определений (описаний):
  compactdesc – компактная версия окружения description, т. е. без дополнительного вертикального пространства до и после списка и его
пунктов;
  inparadesc – вывод списка определений (описаний) внутри абзаца;
  asparadesc – каждый пункт списка форматируется как отдельный обычный абзац LaTeX с выделением ключевого слова полужирным шрифтом, как в окружении списка description, как вводный текст для абзаца.
После настройки межстрочных интервалов в списке переходим к символам-меткам и нумерации.

Выбор символов-меток и формата нумерации
Для соответствия традиционным особенностям того или иного языка либо
для выполнения конкретных требований, возможно, потребуется нумерация
списков с использованием римских цифр или букв алфавита, кроме того,
могут потребоваться круглые скобки или точки. Кто-то предпочитает тире
вместо жирных точек. Пакет enumitem предоставляет весьма разнообразные
и изощренные функциональные возможности для реализации подобных
требований.
Изменим схему нумерации. Будем нумеровать список алфавитными символами, используя буквы в кружках. Кроме того, заменим жирные точки на
тире. Для этого выполните описанные ниже шаги.
1. Теперь мы используем пакет enumitem вместо paralist. Откажемся от
«компактных» окружений и вернемся к стандартному представлению

118  Создание списков
списка. Но нам по-прежнему необходимы компактные списки, поэтому
добавим параметр nosep:
documentclass{article}
usepackage{enumitem}
setlist{nosep}
setitemize[1]{label=—}
setenumerate[1]{label=textcircled{scriptsizeAlph*},
font=sffamily}
begin{document}
begin{enumerate}
item State the paper size by an option to the
document class
item Determine the margin dimensions using one of
these packages:
begin{itemize}
item geometry
item typearea
end{itemize}
item Customize header and footer by one of these
packages:
begin{itemize}
item fancyhdr
item scrpage-scrheader
end{itemize}
item Adjust the line spacing for the whole document
begin{itemize}
item by using the setspace package
item or by the command verb|linespread{factor}|
end{itemize}
end{enumerate}
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 4.7.
A State the paper size by an option to the document class

B Determine the margin dimensions using one of these packages:

— geometry
— typearea
C Customize header and footer by one of these packages:

— fancyhdr
— scrpage-scrheader
D Adjust the line spacing for the whole document

— by using the setspace package
— or by the command linespread{factor}

Рис. 4.7  Настроенный пользователем нумерованный список

Списки, настраиваемые пользователем  119

3. Прямо перед строкой кода, выделенной полужирным шрифтом, вставьте следующие строки:
end{enumerate}
noindenttextbf{Tweaking the line spacing:}
begin{enumerate}[resume*]

4. Щелкните по кнопке Typeset и внимательно рассмотрите результат
внесенного изменения, показанный на рис. 4.8.
A State the paper size by an option to the document class

B Determine the margin dimensions using one of these packages:

— geometry
— typearea
C Customize header and footer by one of these packages:

— fancyhdr
— scrpage-scrheader
Tweaking the line spacing:
D Adjust the line spacing for the whole document

— by using the setspace package
— or by the command linespread{factor}

Рис. 4.8  Список с продолжением нумерации после строки обычного текста

Здесь мы использовали коман­ды пакета enumitem для определения свойств
списка. Рассмотрим их подробнее:
  setlist{nosep} – коман­да setlist устанавливает свойства, допустимые
для всех типов списков. Здесь определено свойство nosep для получения весьма компактных списков, аналогичных спискам из окружения
paralist. Этот параметр исключает все дополнительные вертикальные
пустые пространства;
  setitemize[1]{label=–—} – коман­да setitemize изменяет свойства маркированных списков. Здесь выбрано расширенное тире как символметка для получения начального широкого тире;
  setenumerate[1]{label=textcircled{scriptsize Alph*},font=sffamily} – коман­да setenumerate устанавливает свойства, допустимые для
всех нумерованных списков. Мы использовали ее для настройки метки
и шрифта для нее. Команда Alph* означает нумерацию заглавными
буквами латинского алфавита.
Все эти параметры можно использовать локально, как это было сделано
с параметром resume*. Другие примеры приведены ниже:
  begin{itemize}[noitemsep] – для компактного маркированного списка
без какого-либо дополнительного пространства между пунктами и абзацами;
  begin{enumerate}[label=Roman*.,start=3] – нумерация римскими цифрами, начиная с III., IV. и т. д.;

Powered by TCPDF (www.tcpdf.org)

120  Создание списков
  begin{enumerate}[label=alph*)],nolistsep] – для весьма компактного
списка с нумерацией a), b), c) и т. д.
Команды меток определяют стиль нумерации, как показано ниже:
  arabic*: 1, 2, 3, 4, …;
  alph*: a, b, c, d, …;
  Alph*: A, B, C, D, …;
  roman*: i, ii, iii, iv, …;
  Roman*: I, II, III, IV, …
Символ * означает использование текущего значения счетчика пунктов
списка. При необходимости можно применять круглые скобки и знаки пунк­
туации. Далее в книге вы узнаете о правильном выборе из тысяч возможных
вариантов символов для меток и номеров.
Существует даже сокращенная форма этих команд: если вы загрузили пакет enumitem с параметром shortlabels, то можно использовать сокращенный
синтаксис, например begin{enumerate}[(i)], begin{enumerate}[(1)], где 1, a,
A, i и I обозначают arabic*, alph*, Alph*, roman* и Roman* соответственно.
Это позволяет выполнять настройку быстро и легко. Но для сохранения логической целостности настройки форматирования все же лучше использовать
полные версии команд с глобальной областью видимости.
При использовании нумерованного списка может потребоваться его приостановка, запись некоторого текста и возобновление нумерованного спис­
ка. Рассмотрим, как это делается.

Приостановка и возобновление списков
На шаге 3 в примере, результат выполнения которого показан на рис. 4.8,
мы прервали список. Далее была продолжена запись обычного текста до тех
пор, пока мы не возобновили список, используя коман­ду begin{enumerate}
[resume*]. Параметр resume сообщает пакету enumitem о необходимости продолжения списка со следующего номера пункта. Вариант со звездочкой resume* определяет форматирование, которое применялось до прерывания.
Списки LaTeX имеют разумно подобранную схему форматирования. Но
могут возникать ситуации, когда необходимо скорректировать эту схему,
например изменить поля или величину сдвига пунктов вправо. Все размеры
схемы форматирования определяются макрокоман­дами LaTeX, так называемыми длинами (lengths).
Существует пакет, который обеспечивает великолепную визуализацию
схем форматирования (макетов), в которой представлены эти макрокоман­ды
длин. Пакет называется layouts. Воспользуемся этим пакетом для исследования размеров списков LaTeX. Будем работать со следующим небольшим
документом:
documentclass[12pt]{article}
usepackage{layouts}
begin{document}
listdiagram
end{document}

Списки, настраиваемые пользователем  121

Просто скомпилируйте этот исходный код и выведите результат, чтобы
получить графическую схему, показанную на рис. 4.9.

Preceding Text
topsep + parskip [+ partopsep]
labelwidth

labelsep

Label

itemindent

Item 1

listparindent
parsep

leftmargin

rightmargin

Item 1, Paragraph 2

itemsep + parsep

Label

Item 2
topsep + parskip [+ partopsep]

Following Text
Рис. 4.9  Схема форматирования (макет) списков

Разве это не чудо? Пакет layout способен даже на большее, о чем можно
узнать из его документации по адресу https://texdoc.org/pkg/layouts или выполнив коман­ду texdoc layouts в командной строке. Но сейчас нас интересуют
только списки.
Используйте коман­д у LaTeX setlength для специализированной настройки этих размеров, например setlength{labelwidth}{2cm}. Применение коман­д ы настройки для отдельных списков и конкретных уровней
вложенных списков является трудной задачей. Если необходимо изменить
схему форматирования (макет) списка, то полезным снова оказывается
пакет enumitem. Можно использовать его коман­д ы, такие как setlist, и интерфейс key=value для точной настройки длин, как можно видеть на схеме
на рис. 4.9.

122  Создание списков
Например, если необходимо удалить пространство между пунктами спис­
ка в окружении description и уменьшить левое поле, то можно загрузить
пакет enumitem и написать следующую коман­ду:
setdescription{itemsep=0cm,parsep=0cm,leftmargin=0.5cm}

Обратите внимание: мы не использовали обратный слеш для ключей. Точно так же коман­ды setitemize, setenumerate и setlist можно применять
для тонкой настройки. Попробуйте самостоятельно присваивать различные
значения и проверяйте их воздействие на примерах этой главы. Если хотите узнать больше, то обратитесь к документации пакета enumitem по адресу
https://texdoc.org/pkg/enumitem или выполните коман­ду texdoc enumitem в командной строке.

Резюме
В этой главе вы узнали о новом способе структурирования текста – с по­
мощью списков. В частности, мы рассмотрели, как создавать маркированные, нумерованные списки и списки определений. Кроме того, мы работали
с компактными и специально настроенными версиями таких списков, в том
числе с использованием возможности регулирования межстрочных интервалов, а также прерывания и возобновления нумерации списков.
Эти типы списков можно считать дополнительной возможностью структурирования текста. Используйте данную возможность для более четкого
и понятного изложения своих мыслей.
В следующей главе мы рассмотрим структурирование текста с применением специализированного выравнивания, а также работу с таблицами.

Глава

5
Включение
изображений в текст

Документы состоят не только из текста. Может потребоваться включение
в текст документа иллюстраций, графических схем или рисунков, созданных другими программами. В этой главе мы узнаем, как вставляются в текст
такие изображения с оптимальным качеством и удачным расположением.
Здесь рассматриваются следующие темы:
  включение изображения в текст;
  управление плавающими изображениями.
После чтения этой главы мы будем знать, как размещать изображения
в тексте в точном соответствии с нашими требованиями.

Технические требования
Необходима установленная система LaTeX на локальном компьютере, или
можно использовать Overleaf. Также можно редактировать и компилировать
все примеры на веб-странице книги: https://latexguide.org/chapter-05.
Исходный код примеров доступен в репозитории GitHub: https://github.com/
PacktPublishing/LaTeX-Beginner-s-Guide-2nd-Edition-/tree/main/Chapter_05_-_Including_Images.
В этой главе используются следующие пакеты LaTeX: babel, blindtext, captof, float, graphicx, pdfpages и wrapfig.
Кроме того, будут кратко описаны такие пакеты: afterpage, caption, epstopdf, eso-pic, microtype, placeins, rotating, subcaption, subfig, subfigure и textpos.

Включение изображения в текст
Для включения изображений в текст предназначен стандартный пакет graphicx. Буква x в имени означает, что этот пакет является расширением исходного, но уже устаревшего пакета graphics.

124  Включение изображений в текст
Мы создадим короткий документ, в котором между двумя текстовыми
абзацами необходимо вставить иллюстрацию. Это можно сделать, выполнив
описанные ниже шаги.
1. Создайте новый документ и загрузите пакеты babel и blindtext для вывода некоторого заполняющего текста, как показано ниже:
documentclass[a5paper]{article}
usepackage[english]{babel}
usepackage{blindtext}
usepackage{graphicx}
pagestyle{empty}
begin{document}
section{Including a picture}
blindtext

2. Откройте окружение figure и введите объявление centering, как показано ниже:
begin{figure}
centering

3. Используйте коман­ду includegraphics с именем файла в качестве аргумента. Мы будем использовать имя файла example-image, так как это
пример изображения, включенный в дистрибутивный комплект TeX
Live. Соответствующий исходный код показан ниже:
includegraphics[width=4cm]{example-image}

4. Создайте подпись к изображению, закройте окружение figure и завершите документ заполняющим текстом, как показано в следующем
фрагменте исходного кода:
caption{Test figure}
end{figure}
blindtext
end{document}

5. Щелкните по кнопке Typeset, чтобы скомпилировать этот документ,
и внимательно рассмотрите результат, показанный на рис. 5.1.
Здесь самой важной коман­дой является includegraphics, в которой задано
имя файла. LaTeX загружает файл, если он существует, иначе выводится сообщение об ошибке. LaTeX поддерживает следующие форматы (типы) файлов:
  PNG, JPG и PDF, если вы компилируете документ напрямую в формат PDF
(pdfLaTeX);
  EPS, если вы компилируете документ в DVI, затем выполняете преобразование в PS и PDF (обычный процесс для LaTeX).
Здесь PS означает PostScript, EPS – Encapsulated PostScript, DVI – Device
Independent File Format (независимый от устройства формат файла). DVI был
первым форматом вывода, поддерживаемым TeX и LaTeX. Несомненно, вам
известно, что такое PDF (Portable Document Format – формат переносимого

Включение изображения в текст  125

документа) и широко распространенные форматы изображений PNG и JPG,
часто используемые для снимков экрана и фотографий.

Image
Figure 1: Test figure

1

Including a picture

Hello, here is some text without a meaning. This text should
show what a printed text will look like at this place. If you
read this text, you will get no information. Really? Is there no
information? Is there a difference between this text and some
nonsense like “Huardest gefburn”? Kjift – not at all! A blind
text like this gives you information about the selected font, how
the letters are written and an impression of the look. This text
should contain all letters of the alphabet and it should be written
in of the original language. There is no need for special content,
but the length of words should match the language. Hello, here
is some text without a meaning. This text should show what a
printed text will look like at this place. If you read this text,
you will get no information. Really? Is there no information?
Is there a difference between this text and some nonsense like
“Huardest gefburn”? Kjift – not at all! A blind text like this
gives you information about the selected font, how the letters
Рис. 5.1  Изображение в документе

Указывать расширение имени файла не обязательно, так как LaTeX добавляет его автоматически. Поместите нужный файл в тот же каталог, где
находится документ, или укажите полный либо относительный путь к этому
файлу, как показано ниже:
includegraphics{appendix/figure1}

В пути файла обязательно используйте символы прямого слеша (/), а не
обратного (), так как с обратного слеша начинаются коман­ды LaTeX.
Продолжим и скопируем файл изображения по вашему выбору в каталог,
где находится документ. Передайте в коман­ду includegraphics имя этого
файла и скомпилируйте документ. LaTeX вставит это изображение с сохранением его исходного размера.

126  Включение изображений в текст
В следующих разделах мы узнаем, как выбрать тип файла изображения
и добавить изображение заданного размера, включая целую PDF-страницу,
или разместить изображение позади текста.

Выбор оптимального типа файла
Если у вас уже имеется окончательный вариант изображения в формате JPG,
PNG или PDF, то можно использовать этот формат и включить изображение
в документ. Изменение формата изображения не улучшает его качество. Тем
не менее при включении изображения в текст вам предоставлена свобода
выбора формата файла. Рассмотрим, как принимается решение о выборе
формата файла изображения.
EPS и PDF – форматы векторной графики. Они хорошо масштабируются
и выглядят превосходно в высоком разрешении или при увеличении. Поэтому, если есть такая возможность, PDF (или EPS) должен быть наиболее предпочтительным форматом, например при экспорте иллюстраций или схем из
других программ. Для такой графики векторные форматы являются общепринятыми.
PNG и JPG – точечные (или матричные) форматы, которые также называются растровой графикой. Они широко используются для фотографий. При
увеличении таких изображений вы заметите значительную потерю качества.
Формат PNG использует алгоритм сжатия без потерь, тогда как изображения
в формате JPG могут терять качество при их сохранении. Поэтому для снимков экрана используйте формат PNG или убедитесь, что потери качества при
сжатии не будет, если выбираете формат JPG. Для фотографий рекомендуется
применять формат JPG, чтобы избежать огромных размеров PDF-файлов.
Кроме поддержки векторной графики, файлы EPS и PDF могут содержать
и растровую графику. Поэтому они также называются контейнерными форматами.
Существует множество инструментальных средств для преобразований
графических форматов. Наиболее предпочтительными являются перечисленные ниже три программы, поэтому они включены в комплекты TeX Live
и MiKTeX:
  dvips выполняет преобразование файлов DVI в формат PostScript;
  ps2pdf выполняет преобразование файлов PostScript в формат PDF;
  epstopdf выполняет преобразование файлов EPS в формат PDF. Существует пакет LaTeX с таким же именем. epstopdf выполняет преобразование
в динамическом режиме («на лету»), если вы загрузили его коман­дой
usepackage.
Это инструментальные средства командной строки. Некоторые редакторы
LaTeX используют их для обеспечения процедуры компиляции одним щелчком мыши из файлов .tex в .dvi, в .ps, затем в .pdf.
Программа (или пакет) epstopdf особенно полезна, если необходимо включать в текст изображения в формате PostScript и желательно воспользоваться
функциональными возможностями pdfLaTeX, такими как расширение шрифта
и смещение отдельных символов, доступными с по­мощью пакета microtype.

Включение изображения в текст  127

Inkscape, ImageMagick и GIMP – бесплатные программы с открытым исходным кодом с богатыми функциональными возможностями для дальнейшей
работы с графикой.

Масштабирование изображения
При добавлении изображения можно выбрать для него другой размер. Для
выполнения этого действия рассмотрим подробнее определение коман­ды
includegraphics, показанное ниже:
includegraphics[key=value list]{file name}

В документации пакета graphicx перечислены все ключи key и возможные значения value. Ниже перечислены наиболее часто применяемые ключи
и значения с кратким описанием их действия в коман­де includegraphics:
  width – изменяет ширину до заданного значения. Пример: width=0.9
textwidth;
  height – изменяет высоту до заданного значения. Пример: height=3cm;
  scale – масштабирует изображение с заданным коэффициентом. Пример: scale=0.5;
  angle – поворачивает изображение на заданный угол. Пример: angle=90.
Существуют также параметры для выполнения отсечения части изображения, но проще сделать это, предварительно обработав изображение в любой
программе редактирования графики.
Вместо поворота изображения на 90 градусов можно было бы воспользоваться окружением sidewaysfigure из пакета rotating (см. https://texdoc.org/
pkg/rotating).

Включение в текст целых страниц
Как вставить изображения, которые шире или выше, чем область текста?
Коман­да includegraphics может это сделать, но LaTeX может выдать преду­
преж­дающее сообщение о превышении ширины или общего размера и, возможно, переместит изображение на следующую страницу.
Используя пакет pdfpages, можно включать в текст большие изображения
и даже целые страницы. Пакет pdfpages предоставляет коман­ду includepdf,
которая позволяет включать в текст полную страницу или даже многостраничный PDF-документ в одно действие. Несмотря на название, пакет может
включать в текст не только PDF, но и файлы в форматах PNG и JPG

(почему-то
в документации https://texdoc.org/pkg/pdfpages нет упоминания об этом).
Пример простейшего использования этого пакета может выглядеть следующим образом:
usepackage{pdfpages}

includepdf[pages=-]{contract}% Включение всего документа contract.pdf.
includepdf[pages=2-4]{spec}% Включение страниц 2–4 из документа spec.pdf.

128  Включение изображений в текст
Пакет часто применяется для объединения нескольких PDF-файлов в один
PDF-файл. Кроме того, можно использовать pdfpages для изменения размера
нескольких PDF-страниц и компоновки их в единый лист (страницу).

Размещение изображений позади текста
Вам нужны водяные знаки? Фоновые изображения? Отдельные текстовые
блоки в произвольных местах страницы, которые не должны пересекаться
с другим текстом? Пакет eso-pic сделает это для вас.
В книге «LaTeX Cookbook» вы можете изучить пошаговый пример выполнения такой процедуры в разделе «Absolute positioning of text» главы 2 «Tuning
the Text».
Пакет textpos предлагает другой подход. Он разработан для размещения
боксов с текстом или графикой в абсолютных позициях на странице. Документацию см. здесь: https://texdoc.org/pkg/textpos.
А теперь рассмотрим динамическое позиционирование изображений.

Управление плавающими изображениями
Когда встречается разрыв страницы, обычный текст можно разделить для
продолжения на следующей странице. Но механизм автоматической вставки
разрывов страниц не может разделять изображения. Именно поэтому LaTeX
предоставляет плавающее окружение figure. Такие плавающие окружения
также называют плавающими объектами (floats). LaTeX может перемещать
их содержимое, включая заголовки и подписи, в позицию, обеспечивающую
сохранение целостности макета страницы и разрыва страниц.
Рассмотрим, как это делается.
Окружение figure принимает необязательный аргумент, влияющий на
окончательное размещение иллюстрации. Проверим его воздействие в примере с использованием графики, который рассматривается в этой главе.
1. Вернитесь к предыдущему примеру, результат которого показан на
рис. 5.1. На этот раз добавьте параметры h и t в выделенной полужирным шрифтом строке исходного кода (h обозначает here (здесь), а t –
top (верхняя граница)), как показано ниже:
begin{figure}[ht]
centering
includegraphics{example-image}
caption{Test figure}
end{figure}

2. Скомпилируйте документ и внимательно рассмотрите полученный результат, показанный на рис. 5.2.

Управление плавающими изображениями  129

1

Including a picture

Hello, here is some text without a meaning. This text should
show what a printed text will look like at this place. If you
read this text, you will get no information. Really? Is there no
information? Is there a difference between this text and some
nonsense like “Huardest gefburn”? Kjift – not at all! A blind
text like this gives you information about the selected font, how
the letters are written and an impression of the look. This text
should contain all letters of the alphabet and it should be written
in of the original language. There is no need for special content,
but the length of words should match the language. Hello, here

Image
Figure 1: Test figure
is some text without a meaning. This text should show what a
printed text will look like at this place. If you read this text,
you will get no information. Really? Is there no information?
Is there a difference between this text and some nonsense like
“Huardest gefburn”? Kjift – not at all! A blind text like this
gives you information about the selected font, how the letters
Рис. 5.2  Изображение в тексте

3. В выделенной полужирным шрифтом строке исходного кода измените
параметры на !b (b обозначает bottom (нижняя граница)), как показано
ниже:
begin{figure}[!b]

4. Еще раз скомпилируйте документ. Теперь иллюстрация принудительно
перемещена к нижней границе, как показано на рис. 5.3.
Добавляя различные символы, обозначающие параметры размещения, мы
можем принудительно перемещать иллюстрацию в нужное место.
Распределение иллюстраций по текстовым столбцам
Существует форма со звездочкой figure* в макете с двумя столбцами, которая помещает изображение в один столбец. В режиме с одним столбцом нет различий между
формами со звездочкой и без нее.

130  Включение изображений в текст

1

Including a picture

Hello, here is some text without a meaning. This text should
show what a printed text will look like at this place. If you
read this text, you will get no information. Really? Is there no
information? Is there a difference between this text and some
nonsense like “Huardest gefburn”? Kjift – not at all! A blind
text like this gives you information about the selected font, how
the letters are written and an impression of the look. This text
should contain all letters of the alphabet and it should be written
in of the original language. There is no need for special content,
but the length of words should match the language. Hello, here
is some text without a meaning. This text should show what a
printed text will look like at this place. If you read this text,
you will get no information. Really? Is there no information?
Is there a difference between this text and some nonsense like
“Huardest gefburn”? Kjift – not at all! A blind text like this
gives you information about the selected font, how the letters

Image
Figure 1: Test figure

Рис. 5.3  Изображение у нижней границы страницы

Теперь рассмотрим более подробно позиционирование изображений. Мы
узнаем, как можно установить степень предпочтения места, в котором будет
размещаться изображение, например около верхней или нижней границы
страниц, как принудительно выполнить немедленный вывод или, по крайней
мере, ограничить плавание объекта, а также как разместить изображения
рядом друг с другом или внутри потока текста.

Описание параметров размещения
Необязательный аргумент окружения figure сообщает LaTeX, где разрешено
разместить изображение. Четыре буквы обозначают возможные места:
  h – here (здесь) – изображение может размещаться там, где оно указано
в исходном коде;
  t – top (верхняя граница) – разрешено размещение изображения
у верхней границы страницы;
  b – bottom (нижняя граница) – изображение может размещаться у нижней границы страницы;

Управление плавающими изображениями  131

  p – page (страница) – изображение можно разместить на отдельной
странице, где могут располагаться только плавающие объекты, но не
обычный текст.
Может оказаться полезным и пятый параметр:
  ! – сообщает LaTeX о необходимости попытки строже относиться к игнорированию некоторых ограничений, что упрощает размещение.
Если не задан ни один из этих параметров, то LaTeX может разместить
изобра­жение очень далеко. Новые пользователи LaTeX, возможно, будут
удивлены этим фактом. Определение большего количества параметров способствует ближайшему возможному размещению изображения при выводе.
Самый гибкий способ – использовать параметры размещения [!htbp], позволяющие перемещать изображение в любое место. При этом сохраняется возможность удаления любого спецификатора размещения, если он не нужен.

Принудительный вывод изображений
Если потребуется запретить LaTeX вывод плавающих объектов, то такой способ существует – коман­да clearpage завершает текущую страницу и заставляет выводить все уже определенные изображения. Также можно использовать коман­ду cleardoublepage, которая делает то же самое в двустороннем
макете. Команда гарантирует, что следующая страница без плавающих объектов обязательно будет правосторонней. При необходимости вставляется
пустая страница.
Немедленное завершение страницы не всегда является самым лучшим
решением, поскольку может оставлять слишком много пустого пространства
на текущей странице. Пакет afterpage предлагает более эффективное решение этой проблемы. Этот пакет позволяет отложить выполнение коман­ды
clearpage до тех пор, пока текущая страница не будет завершена, как показано ниже:
usepackage{afterpage}

body text
afterpage{clearpage}

Возможно, необходимость применения пакета afterpage будет возникать
не слишком часто, поскольку можно просто выполнять коман­ду clearpage
в требуемом месте, например в конце раздела. Этот вариант можно автоматизировать. Мы рассмотрим данный вариант в следующем разделе.

Ограничение плавающих объектов
Изображения могут уплывать далеко, возможно даже в другой раздел. Пакет placeins предоставляет полезную коман­ду для ограничения перемещений плавающих объектов. Если вы загружаете пакет placeins коман­дой
usepackage{placeins} и добавляете коман­ду FloatBarrier в каком-либо месте

132  Включение изображений в текст
документа, то изображение не сможет преодолеть установленный барьер.
Эта макрокоман­да оставляет плавающие объекты на своих местах.
Весьма удобным способом запрещения плавающим объектам пересекать
границы раздела является применение параметра section, как показано
ниже:
usepackage[section]{placeins}

Этот параметр устанавливает неявный FloatBarrier в начале каждого
раздела. Два дополнительных параметра above и below позволяют ослабить
ограничения, запрещая плавающим объектам появляться перед началом
текущего раздела или после начала следующего.
Изображения не могут переместиться в следующую главу, потому что
коман­да chapter неявно использует коман­ду clearpage.

Полное запрещение перемещений плавающих
объектов
Вы хотите поместить изображение в точности там, где нужно? Тогда решение кажется очевидным: не используйте окружение плавающих объектов
figure. Можно использовать коман­ду includegraphics без окружения figure.
Например, можно включить и центрировать изображение в тексте, выполнив
следующие коман­ды:
begin{center}
includegraphics[width=4cm]{example-image}
end{center}

Подписи к рисункам предназначены для окружений плавающих объектов,
поэтому коман­да caption здесь работать не будет. Если подпись к рисунку
все же необходима, то можно воспользоваться коман­дой captionof. Пакет
caption, классы KOMA-Script и небольшой пакет capt-of предоставляют эту
коман­ду, которую можно применять следующим образом:
usepackage{capt-of}% or caption

begin{minipage}{linewidth}
centering
includegraphics{example-image}
captionof{figure}{Test figure}
end{minipage}

Окружение minipage сохраняет изображение и подпись к нему вместе, потому что в этом окружении невозможен разрыв страницы. Определение
captionof точно такое же, как определение caption, за исключением дополнительного аргумента, определяющего тип плавающего объекта, – в данном
случае figure, как показано в следующем фрагменте исходного кода:
captionof{figure}[short text]{long text}

Управление плавающими изображениями  133

При этом следует иметь в виду, что порядок нумерации может нарушиться,
если вы смешиваете плавающие и фиксированные изображения. Поскольку
вы не получаете никаких преимуществ от функциональных возможностей
механизма позиционирования LaTeX, придется уделить внимание разумному заполнению страниц.
Пакет float предоставляет удобную и выглядящую абсолютно согласованной методику решения данной проблемы. Он вводит параметр размещения
H, заставляющий плавающий объект располагаться прямо здесь, как показано
в следующем фрагменте исходного кода:
usepackage{float}

begin{figure}[H]
centering
includegraphics{example-image}
caption{Test figure}
end{figure}

Вы можете выбрать один из двух вариантов. Если необходимо исследовать
дополнительные функциональные возможности пакета float, то загрузите
его. Другой вариант – использование однострочника capt-of. Возможно, даже
если это и не является необходимостью, предположите, что вы уже используете пакет caption или класс KOMA-Script.

Размещение нескольких изображений
Для объединения нескольких фрагментов изображений с подписями в одну
общую иллюстрацию существует несколько пакетов, поддерживающих эту
операцию. Вы можете выбрать один из таких пакетов, руководствуясь их
краткими описаниями, приведенными ниже:
  subcaption – пакет для работы с фрагментами изображений с отдельными подписями, который входит в состав пакета caption. (Если вы
используете в документе гиперссылки, то выбирайте пакет subcaption,
потому что он лучше поддерживает гиперссылки. О гиперссылках см.
главу 12 «Дополнительное улучшение документов»);
  subfig – интеллектуальный пакет, поддерживающий включение в текст
небольших изображений. Он обеспечивает позиционирование, добавление надписей на рисунках и подписей под рисунками внутри отдельных плавающих объектов;
  subfigure – остается доступным для тех же целей, но может считаться
устаревшим после появления пакета subfig.
Не загружайте одновременно два пакета из этого списка. Как правило,
загрузка двух пакетов, предназначенных для одной и той же цели, может
привести к конфликтам.
Для выравнивания, наложения и размещения по узлам сетки изображений подробно описанные примеры можно найти в книге «LaTeX Cookbook»,
глава 4 «Working with Images».

134  Включение изображений в текст

Текст, обтекающий изображения
Иногда требуется, чтобы текст обтекал изображение со всех сторон, хотя
подобный трюк может показаться слегка несерьезным. Это можно сделать,
используя пакет wrapfig и его окружение wrapfigure.
Мы изменим предыдущий пример, в котором изображение включалось
в текст (см. рис. 5.3). Теперь нужно, чтобы изображение находилось с левой
стороны, а справа от него располагалось тело основного текста. Это можно
сделать, выполнив описанные ниже шаги.
1. В примере исходного кода, вывод которого показан на рис. 5.3, дополнительно загрузите пакет wrapfig, как показано ниже:
documentclass[a5paper]{article}
usepackage[english]{babel}
usepackage{blindtext}
usepackage{graphicx}
usepackage{wrapfig}
pagestyle{empty}
begin{document}

2. Начните раздел без номера и поместите окружение wrapfig внутри некоторого заполняющего текста, например как показано ниже:
section*{Text flowing around an image}
blindtext
begin{wrapfigure}{l}{4cm}
includegraphics[width=4cm]{ example-image}
caption{Test figure}
end{wrapfigure}
blindtext
end{document}

3. Скомпилируйте этот документ и внимательно рассмотрите вывод, который показан на рис. 5.4.
Параметры окружения wrapfigure отличаются от параметров окружения
figure. Мы использовали только два из них. Если необходима бóльшая функциональность, то ниже приведено полное определение:
begin{wrapfigure}[number of lines]{placement}[overhang]{width}

Первый необязательный параметр определяет число строк обтекающего
текста. Если он пропущен, то это число должно быть автоматически вычислено по высоте (изображения). Второй аргумент placement может принимать
одно из значений r, l, i или o для указания правой, левой, внутренней или
внешней стороны соответственно или те же буквы в верхнем регистре R, L, I,
O с тем же смыслом, но разрешающие перемещение (плавание) изображения.
Для определения этого параметра допускается только один символ. Другой необязательный параметр overhang может устанавливать ширину выступа части
изображения в поле страницы. По умолчанию задано значение 0pt. Последний
обязательный аргумент width определяет ширину самого изображения.

Резюме  135

Text flowing around an image
Hello, here is some text without a meaning. This text should
show what a printed text will look like at this place. If you
read this text, you will get no information. Really? Is there no
information? Is there a difference between this text and some
nonsense like “Huardest gefburn”? Kjift – not at all! A blind
text like this gives you information about the selected font, how
the letters are written and an impression of the look. This
text should contain all letters of the alphabet and it should be
written in of the original language. There is no need for special
content, but the length of words should match the language.
Hello, here is some text without a
meaning. This text should show
what a printed text will look like
at this place. If you read this text,
you will get no information. Really? Is there no information? Is
there a difference between this text
and some nonsense like “Huardest
gefburn”? Kjift – not at all! A
blind text like this gives you inFigure 1: Test figure
formation about the selected font,
how the letters are written and an
impression of the look. This text should contain all letters of the
alphabet and it should be written in of the original language.
There is no need for special content, but the length of words
should match the language.

Image

Рис. 5.4  Текст, обтекающий изображение

Более подробно о возможностях пакета warpfig можно узнать в справочном
руководстве, расположенном здесь: https://texdoc.org/pkg/wrapfig.

Резюме
В этой главе мы узнали, как включать изображения в текст документа. Теперь
нам известно, какие типы файлов мы можем использовать и как правильно
размещать иллюстрации в документе.
LaTeX может генерировать список иллюстраций, похожий на оглавление.
Мы рассмотрим такие списки в главе 8 «Формирование оглавления и списков
ссылок».
Поскольку все иллюстрации нумеруются, можно использовать их номера
для ссылок на иллюстрации в тексте. В главе 7 «Использование перекрестных
ссылок» мы рассмотрим, как это делается, воспользовавшись встроенными
в LaTeX функциональными возможностями механизма перекрестных ссылок.
В следующей главе мы будем работать с таблицами и увидим, что размещение таблиц очень похоже на размещение изображений.

Глава

6
Создание таблиц

Научные документы, да и многие другие содержат не только простой текст.
В таких документах информация и данные представлены также в виде таб­
лиц. В этой главе мы более подробно узнаем о таблицах в LaTeX.
Здесь мы рассмотрим, как выполняются следующие операции:
  использование табуляции для записи текста в столбцах;
  верстка таблиц;
  добавление заголовков в таблицы;
  использование пакетов для расширенной пользовательской настройки
таблиц.
Приступим к выполнению этих задач. Начнем с простого оформления
текста в виде столбцов.

Технические требования
Необходима установленная система LaTeX на локальном компьютере, или
можно редактировать и компилировать все примеры на веб-странице книги:
https://latexguide.org/chapter-06.
Исходный код примеров доступен в репозитории GitHub: https://github.com/
PacktPublishing/LaTeX-Beginner-s-Guide-2nd-Edition-/tree/main/Chapter_06_-_Creating_Tables.
В этой главе используются следующие пакеты LaTeX: array, booktabs, caption и multirow.
Кроме того, будут кратко описаны такие пакеты: color, colortbl, dcolumn,
longtable, ltablex, ltxtable, microtype, ragged2e, rccol, rotating, siunitx, stabular,
supertabular, tabularx, tabulary, xcolor и xtab.

Использование табуляции для записи текста
в столбцах
Помните время, когда использовались пишущие машинки и самые первые
программы обработки текста? Когда необходимо было выровнять некоторый
текст по столбцам, можно было воспользоваться табуляцией. LaTeX предо-

Использование табуляции для записи текста в столбцах  137

ставляет похожий способ простого выравнивания текста по столбцам – окружение tabbing.
Предположим, что необходимо создать краткий обзор LaTeX. Мы будем
представлять в каждой строке один пункт, выровненный по словам и двоеточиям, для чего выполним описанные ниже шаги.
1. Начните новый документ и откройте окружение tabbing:
documentclass{article}
begin{document}
begin{tabbing}

2. Напишите следующий текст с установкой позиций табуляции с по­
мощью коман­ды = и с завершением строки коман­дой \:
emph{Info:} = Software = : = LaTeX \

3. Добавьте приведенные ниже строки с перемещением к очередной
позиции табуляции с по­мощью коман­ды > и с завершением строки
коман­дой \:
> Author > : > Leslie Lamport \
> Website > : > www.latex-project.org

4. Закройте окружение tabbing и завершите документ:
end{tabbing}
end{document}

5. Щелкните по кнопке Typeset для компиляции документа и внимательно рассмотрите результат, показанный на рис. 6.1.
Info: Software : LATEX
Author : Leslie Lamport
Website : www.latex-project.org
Рис. 6.1  Простой текст с выравниванием по позициям табуляции

Используемое здесь окружение tabbing начинает новую строку. Для разметки мы применяем три простых тега:
  = устанавливает позицию табуляции. В строке можно установить несколько позиций табуляции. Обычно это делается в первой строке;
  \ завершает текущую строку;
  > выполняет переход к следующей позиции табуляции.
Кроме первой строки, можно также использовать тег = в другой строке для
корректировки ранее установленной позиции табуляции. Например, если мы
уже использовали два тега > в строке текста для перехода к двум позициям
табуляции, то тег = должен установить (новую или замененную) третью позицию табуляции.
На веб-странице https://latexguide.org/tabbing вы можете рассмотреть несколько примеров практического использования этих тегов.

138  Создание таблиц
С помощью окружения tabbing можно быстро создавать столбцы, содержащие текст, выровненный по левому краю. Если строки в окружении tabbing достигают конца страницы, то они должны продолжиться на следующей
странице. Таким образом, окружение tabbing является весьма простым способом создания таблиц, пересекающих разрывы страниц или даже занимающих несколько страниц.
Но что, если текст в столбце слишком длинный и пересекает очередную
позицию табуляции? Рассмотрим, как можно решить эту проблему.
В главе 2 «Форматирование текста и создание макрокоманд» мы получили большой объем информации о коман­дах и объявлениях, управляющих
шрифтами. Мы видели таблицу, содержащую эти коман­ды, и пример вывода
результатов их выполнения. Сейчас мы сами создадим такую таблицу, выполнив описанные ниже шаги.
1. Начните новый документ, такой же, как на шаге 1 предыдущего примера, но добавьте еще одно определение коман­ды для настройки шрифта
заголовка:
documentclass{article}
newcommand{head}[1]{textbf{#1}}
begin{document}
begin{tabbing}

2. В первой строке установите позиции табуляции с по­мощью тега =, затем используйте тег > для перемещения к установленным позициям
табуляции. Воспользуйтесь коман­дой verb|…| для форматирования
команд LaTeX, как показано ниже:
=
>
>
>

head{Command} = head{Declaration} =
verb|textrm{…}| > verb|rmfamily|
verb|textsf{…}| > verb|sffamily|
verb|texttt{…}| > verb|ttfamily|

head{Example}\
> rmfamily text\
> sffamily text\
> ttfamily text

3. Закройте окружение tabbing и завершите документ:
end{tabbing}
end{document}

4. Щелкните по кнопке Typeset для компиляции документа и внимательно рассмотрите результат, показанный на рис. 6.2.
Command Declaration
textrm{…}
rmfamily
textsf{…}
sffamily
texttt{…}
ttfamily

Example
text
text
text

Рис. 6.2  Выровненный текст с перекрытием столбцов

5. На рис. 6.2 можно видеть, что позиции табуляции расположены слишком близко друг к другу. Необходимо их скорректировать. Создайте

Использование табуляции для записи текста в столбцах  139

новую строку заголовка, содержащую позиции табуляции, но на этот раз
мы будем завершать эту строку коман­дой kill, для того чтобы скрыть
ее. Используйте заполняющий текст для определения ширины между
позициями табуляции по самому длинному тексту в столбце. Дополните
текст приведенными ниже коман­дами управления шрифтами. Теперь
исходный код с табуляциями должен выглядеть следующим образом:
begin{tabbing}
= verb|textrm{…}| = head{Declaration} = head{Example}kill
> head{Command} > head{Declaration} > head{Example}\
> verb|textrm{…}| > verb|rmfamily| > rmfamily text\
> verb|textsf{…}| > verb|sffamily| > sffamily text\
> verb|texttt{…}| > verb|ttfamily| > ttfamily text
end{tabbing}

6. Еще раз скомпилируйте документ, чтобы получить окончательный результат, показанный на рис. 6.3.
Command
textrm{…}
textsf{…}
texttt{…}

Declaration
rmfamily
sffamily
ttfamily

Example
text
text
text

Рис. 6.3  Скорректированный текст,
выровненный по столбцам

Когда мы заметили, что позиции табуляции расположены слишком близко
друг к другу, то сформировали новую первую строку, содержащую позиции
табуляции. Она состоит из слов, представляющих самые широкие элементы
каждого столбца. Чтобы скрыть эту дополнительную строку, мы воспользовались коман­дой kill, записав ее в самом конце строки. Команда kill в конце
любой строки отменяет ее вывод.
Как показано в этом примере, коман­да verb|code| форматирует код «как
есть» без интерпретации команд внутри блока |code|. Вместо | в качестве
разделителя можно выбрать любой символ. Команду verb нельзя использовать в аргументах команд, включающих section и footnote, а также в заголовках таблиц.
Для более длинного, многословного текста используется окружение с говорящим названием verbatim.
Описанные ниже коман­ды особенно полезны, если вы работаете с большим объемом табулированного текста:
  + в конце строки (перед \) перемещает левое поле последующих строк
на одну позицию табуляции вправо. Используйте эту коман­ду дважды + +, чтобы переместить строку на две позиции табуляции вправо
и т. д.;
  — в конце строки перемещает левое поле последующих строк на одну
позицию табуляции влево. Здесь также — — приводит к перемещению

Powered by TCPDF (www.tcpdf.org)

140  Создание таблиц
строки на две позиции табуляции влево. Команда — в основном применяется для отмены предыдущего выравнивания коман­дой +;
  < отменяет действие предыдущей коман­ды + для текущей строки. Она
перемещает левое поле на одну позицию табуляции влево. Мы должны
использовать эту коман­ду только в начале строки. Ее повторение перемещает строку на две позиции табуляции влево.
Даже описанные выше коман­ды уже позволяют эффективно использовать
окружение tabbing. Описание других команд этого окружения можно найти
в справочном руководстве здесь: https://latex2e.org/tabbing.
Внутри окружений tabbing объявления являются локальными для текущего элемента. Следующие за ними коман­ды =, >, \ или kill отменяют их
действие.
Кроме того, окружения tabbing не могут быть вложенными.
Здесь был описан простейший способ размещения текста в столбцах. Теперь рассмотрим, как создаются таблицы с разделением строк и выравниванием.

Верстка таблиц
Часто требуются более сложные структуры и форматирование, например
центрирование в столбцах, разделение строк или даже вложенные структуры. LaTeX предоставляет окружение tabular для верстки простых и сложных
таблиц.
Теперь мы создадим таблицу команд управления семействами шрифтов,
как и в примере из предыдущего раздела, но на этот раз необходимо, чтобы все элементы в столбцах были отцентрированы по горизонтали относительно друг друга. Также добавим некоторые горизонтальные линии для
обозначения границ и выделения заголовка таблицы. Для этого выполним
описанные ниже шаги.
1. Создайте новый документ. Определите коман­ду настройки шрифта для
строки заголовка:
documentclass{article}
newcommand{head}[1]{textnormal{textbf{#1}}}
begin{document}

2. Откройте окружение tabular с передачей в него обязательного аргумента ccc, обозначающего три центрированных столбца:
begin{tabular}{ccc}

3. Введите строку заголовка таблицы, добавляя символ & для разделения
элементов столбцов и коман­ду \ для обозначения концов строк. Используйте коман­ду hline для вставки горизонтальных линий:
hline
head{Command} & head{Declaration} & head{Output}\
hline

Верстка таблиц  141

4. Продолжайте заполнение тела таблицы, потом закройте окружение
tabular и завершите документ. Для форматирования команд LaTeX используйте коман­ду verb|command|:
verb|textrm| & verb|rmfamily| & rmfamily Example text\
verb|textsf| & verb|sffamily| & sffamily Example text\
verb|texttt| & verb|ttfamily| & ttfamily Example text\
hline
end{tabular}
end{document}

5. Щелкните по кнопке Typeset для компиляции документа и внимательно рассмотрите полученную таблицу, показанную на рис. 6.4.
Command
textrm
textsf
texttt

Declaration
rmfamily
sffamily
ttfamily

Output
Example text
Example text
Example text

Рис. 6.4  Простая таблица

На шаге 2 в обязательном аргументе мы указали список символов. Каждый символ обозначает некоторый параметр форматирования. Поскольку
использованы три символа, мы получаем три столбца. Буква c обозначает
выравнивание по центру. Следовательно, элементы всех столбцов были отцентрированы.
На шагах 3 и 4 элементы столбцов разделяются символом &, а коман­да \
завершает строку. Не следует завершать последнюю строку коман­дой \, если
только в дальнейшем не потребуется вставить еще одну строку ниже. Кроме
того, полезной привычкой является выравнивание символов амперсанда
в исходном коде для обеспечения удобства его чтения.
Внутри элементов столбцов можно использовать обычный текст или
коман­ды LaTeX. Как и в окружении tabbing, объявления являются локальными для текущей ячейки таблицы, как если бы фигурные скобки заключали
в себе содержимое каждой ячейки.
Кроме того, для окружения tabular существует необязательный аргумент,
определяющий выравнивание так же, как для окружения minipage. Поэтому
полное определение выглядит следующим образом:
begin{tabular}[position]{column specifiers}
row 1 col 1 entry & row 1 col 2 entry … & row 1 col n entry\

end{tabular}

В необязательном аргументе [position] буква t обозначает выравнивание по самой верхней строке, b – выравнивание по самой нижней строке. По
умолчанию задано выравнивание с центрированием по вертикали c. Этот
необязательный аргумент может оказаться полезным, если требуется разместить две таблицы друг за другом или внутри другого текста.

142  Создание таблиц
В следующих разделах мы узнаем, как настраивать таблицы по своему
усмотрению, например добавлять разделительные линии, выравнивать содержимое по левому и правому краям и по центру, а также создавать ячейки,
объединяющие несколько столбцов или строк.

Добавление разделительных линий в таблицы
В окружении tabular можно использовать три типа линий:
  hline рисует горизонтальную линию по всей ширине таблицы;
  cline{m-n} рисует горизонтальную линию от начала столбца m до конца столбца n. Такой синтаксис обязателен, т. е. если необходимо добавить линию только для одного конкретного столбца, например только
для столбца 3, то нужно написать коман­ду /cline{3-3};
  vline рисует вертикальную линию по всей (полной) высоте и глубине
текущей строки таблицы.
В следующих подразделах мы будем использовать коман­ду hline.

Описание аргументов форматирования
Разумеется, можно применять и дополнительное форматирование. Рассмот­
рим приведенный ниже пример таблицы, в котором добавляются аргументы
l, c, r и p:
begin{tabular}{|l|c|r|p{1.7cm}|}
hline
left & centered & right & a fully justified paragraph cell\
hline
l & c & r & p\
hline
end{tabular}

Этот исходный код генерирует таблицу, показанную на рис. 6.5.
left

l

centered

c

right

r

a fully justified paragraph cell
p

Рис. 6.5  Таблица с различными типами выравнивания

Интерпретация этих параметров окружением tabular описана ниже:
  l – выравнивание по левому краю;
  c – выравнивание по центру;
  r – выравнивание по правому краю;
  p{width} – для выравнивания ячейки как «абзаца» с заданной шириной
width. Если вы размещаете несколько ячеек p друг за другом, то они бу-

Верстка таблиц  143

дут выровнены по их верхней строке. Это равнозначно использованию
коман­ды parbox[t]{width} внутри ячейки;
  @{code} вставляет код вместо пустого пространства перед или после
столбца. Кодом также может быть некоторый текст, или поле кода можно оставить пустым, чтобы удалить это пространство, например @{};
  | обозначает вертикальную линию;
  *{n}{options} равнозначно n копиям параметров options, где n – положительное целое число, а options может состоять из одного или нескольких спецификаторов столбца, включая также и *.
Небольшой совет
Настоятельно рекомендуется избегать вертикальных линий в таблицах. Линии должны ненавязчиво сопровождать предлагаемую информацию, но не должны усложнять
чтение.

После загрузки пакета array коман­дой usepackage{array} можно использовать некоторые параметры, описанные ниже:
  m{width} аналогичен коман­де parbox{width} – базовая (опорная) линия
находится в середине;
  b{width} похож на коман­ду parbox[b]{width} – базовая (опорная) линия
находится у нижней границы;
  !{code} можно использовать как |, но этот параметр вставляет код code
вместо вертикальной линии. В противоположность @{…} пространство между столбцами не подавляется;
  >{code} можно использовать перед параметрами l, c, r, p, m или b.
Он вставляет код code справа от начала каждого элемента текущего
столбца;
  {itshape}ll!{:}l{itshape} для изменения шрифта строки на курсив. Параметр >{} часто используется для вставки объявления типа

Верстка таблиц  145

выравнивания, например centering. Но здесь остается скрытая проблема: такие объявления могут изменить внутренний смысл коман­ды \, являющейся
сокращенной формой коман­ды tabularnewline внутри таблиц. Но пакет array
предлагает коман­ду для ее восстановления. В таких случаях просто добавьте
arraybackslash, как показано в следующем примере:
begin{tabular}{>{centeringarraybackslash}p{5cm}}

Иначе содержимое абзаца в ячейках при заданных параметрах p, m или b
будет полностью выровнено по ширине.
После конкретной строки можно добавить пространство по вертикали
с по­мощью необязательного аргумента для \, например \[10pt].
Можно даже растянуть всю таблицу в целом: коман­да arraystretch содержит коэффициент растяжения, по умолчанию равный 1. Просто переопределите эту коман­ду. Например, renewcommand{arraystretch}{1.5} увеличит
высоту строки на 50 %. Эту коман­ду можно использовать внутри группы или
окружения, чтобы ее действие оставалось локальным.

Улучшение внешнего вида таблиц
Создаваемые в наших примерах таблицы все еще не выглядят настолько
хорошо, как в профессионально сверстанных книгах. В частности, линии
и их расстояния до текста, вероятно, нуждаются в улучшении. Здесь на помощь приходит пакет booktabs. После его загрузки можно улучшить качество
таблиц с по­мощью новых команд управления линиями, заменяющих hline
и cline.
Мы будем использовать новые коман­ды, предоставленные пакетом booktabs, и выполним описанные ниже шаги.
1. В исходном коде предыдущего примера, результат которого показан
на рис. 6.4, загрузите пакет booktabs следующей коман­дой:
usepackage{booktabs}

2. Используйте коман­ды toprule, midrule и bottomrule вместо hline.
Определите толщину линий как необязательный аргумент. Исходный
код создания таблицы принимает следующий вид:
begin{tabular}{ccc}
toprule[1.5pt]
head{Command} & head{Declaration}
midrule
verb|textrm| & verb|rmfamily| &
verb|textsf| & verb|sffamily| &
verb|texttt| & verb|ttfamily| &
bottomrule[1.5pt]
end{tabular}

& head{Output}\
rmfamily Example text\
sffamily Example text\
ttfamily Example text\

3. Скомпилируйте исходный код и оцените различия (см. рис. 6.8).

146  Создание таблиц
Command

Declaration

Output

textrm
textsf
texttt

rmfamily
sffamily
ttfamily

Example text
Example text
Example text

Рис. 6.8  Растянутая по вертикали таблица

Британские верстальщики и наборщики называют линию rule, а не line.
Разработчик пакета booktabs выбрал именно эту терминологию для новых
команд. Ниже приведены их определения:
  toprule[thickness] можно использовать для рисования горизонтальной линии на верхней границе таблицы. При необходимости можно
задать толщину линии, например 1pt или 0.5mm;
  midrule[thickness] рисует горизонтальную разделительную линию
между строками таблицы;
  bottomrule[thickness] рисует горизонтальную линию, завершающую
таблицу (на нижней границе);
  cmidrule[thickness](trim){m-n} рисует горизонтальную линию от столбца m до столбца n. Как и толщина thickness, аргумент trim является необязательным. Его значением может быть (l) или (r) для отсечения
линии на левом или правом конце. Используйте (lr) для отсечения
на обоих концах. Можно даже добавить значение {width}, например
(l{10pt}), которое определяет ширину отсечения.
Пакет booktabs не определяет вертикальные линии для таблиц. В любом
случае их применение нежелательно. То же можно сказать и о двойных линиях. Не рекомендуется использовать вертикальные и двойные линии. Более того, такие линии чаще всего принято считать плохим типографским
стилем.
Рассмотрим использование toprule и других команд определения линий
без необязательных аргументов с описанием их практического применения.

Регулирование размеров линий
В подразделе «Увеличение высоты строки» текущей главы была кратко представлена коман­да setlength. В отличие от определения толщины линии в необязательном аргументе для команд toprule, midrule, cmidrule или bottomrule, в этой коман­де толщина не указывается. Вместо этого установите
размер однократно для всего документа в целом с по­мощью коман­ды setlength в преамбуле.
Например, после строки usepackage{booktabs} можно записать следующую
коман­ду:
setlength{heavyrulewidth}{1.5pt}

После этого просто используйте коман­ду toprule или bottomrule без аргумента, и толщина линий всегда будет равна 1.5pt.

Верстка таблиц  147

Ниже кратко описаны размеры для пакета booktabs, которые можно регулировать:
  heavyrulewidth для определения толщины верхней и нижней линий;
  lightrulewidth для определения толщины средних (разделительных)
линий, изображаемых коман­дой midrule;
  cmidrulewidth для определения толщины линий cmidrule;
  cmidrulekern для отсечения в линии cmidrule;
  abovetopsep для определения пространства над верхней линией, по
умолчанию 0pt;
  belowbottomsep для определения пространства под нижней линией, по
умолчанию 0pt;
  aboverulesep для определения пространства над линиями midrule,
cmidrule и bottomrule;
  belowrulesep для определения пространства под линиями midrule,
cmidrule и toprule.
Попробуйте изменить толщину этих линий. Для размеров уже установлены
разумные значения, но вы можете поменять их. Таким образом, настройка
размеров в преамбуле применяется ко всем таблицам в документе.

Объединение нескольких столбцов для одной
записи таблицы
Можно объединять столбцы с взаимосвязанным содержимым под общим заголовком. В этом случае мы должны объединить две ячейки в заголовке. Это
делается с по­мощью коман­ды multicolumn.
Продолжаем рассматривать тот же пример таблицы, в которой коман­ды
и объявления представляют собой ввод, а последний столбец содержит вывод. Мы обозначим это разделение по темам в заголовке таблицы, как продемонстрировано ниже.
1. В исходном коде, взятом из предыдущего примера, вставьте еще одну
строку заголовка. Используйте *{3}l для получения трех столбцов, выровненных по левому краю. Поместите @{} перед и после этого аргумента для удаления пространства между столбцами. Для объединения
ячеек примените коман­ду multicolumn. Измените аргумент форматирования столбца и средней разделительной линии. В приведенном
ниже исходном коде все описанные выше изменения выделены полужирным шрифтом:
begin{tabular}{@{}*{3}l@{}}
toprule[1.5pt]
multicolumn{2}{c}{head{Input}} &
multicolumn{1}{c}{head{Output}}\
head{Command} & head{Declaration}
cmidrule(r){1-2}cmidrule(l){3-3}
verb|textrm| & verb|rmfamily| &
verb|textsf| & verb|sffamily| &
verb|texttt| & verb|ttfamily| &

& \
rmfamily Example text\
sffamily Example text\
ttfamily Example text\

148  Создание таблиц
bottomrule[1.5pt]
end{tabular}

2. Скомпилируйте исходный код и внимательно рассмотрите результат,
показанный на рис. 6.9.
Input
Command Declaration
textrm
textsf
texttt

rmfamily
sffamily
ttfamily

Output
Example text
Example text
Example text

Рис. 6.9  Таблица с объединенными ячейками

Мы использовали коман­ду multicolumn дважды – сначала для объединения
двух ячеек, затем, что стало неожиданностью, только для одной ячейки. Рассмотрим подробнее определение этой коман­ды:
multicolumn{number of columns}{formatting options}{entry text}

Число объединяемых столбцов number of columns может быть положительным целым числом или просто 1. Эти параметры форматирования будут
применяться вместо параметров, заданных в определении tabular для данной ячейки.
Мы воспользовались этим преимуществом, когда применили коман­ду
multicolumn{l}{c}{…}, которая перезаписывает параметр l для указанного столбца в сочетании с параметром c для выравнивания по центру этой
ячейки.
Другое внесенное изменение касается разделительной линии cmidrule.
Мы использовали ее вместо линии midrule с указанием аргумента отсечения,
чтобы получить интервал между объединенным столбцом ввода и конечным
столбцом вывода.

Вставка кода, определяющего содержимое
всего столбца
Существует множество других команд управления шрифтами, которые можно было бы добавить в таблицу из рассматриваемых здесь примеров. Но все
время писать verb|…| в каждой ячейке слишком утомительно. Воспользуемся функциональной возможностью >{…}, предоставляемой пакетом
array, для однократного общего определения элементов для конкретного
столбца.
Изменим определение table для настройки отображения столбцов, содержащих коман­ды и объявления ввода, моноширинным шрифтом. Одновременно вставим слева столбец, определяющий тип команд.

Верстка таблиц  149

1. Дополните преамбулу рассматриваемого примера определением
коман­ды normal. Она будет использовать multicolumn для создания
ячейки с выравниванием l вне зависимости от типа форматирования
соответствующего столбца:
documentclass{article}
usepackage{array}
usepackage{booktabs}
newcommand{head}[1]{textnormal{textbf{#1}}}
newcommand{normal}[1]{multicolumn{1}{l}{#1}}
begin{document}

2. Поскольку коман­ду verb нельзя использовать в заголовках таблиц,
воспользуйтесь коман­дой ttfamily для определения моноширинного
шрифта. Добавьте textbackslash, чтобы не повторять длинную коман­
ду в каждой ячейке. Используйте *{2}>{…} для вставки ее дважды.
Затем добавьте {ttfamilytextbackslash }l}l%
{textbackslashttfamily}l определяет строку, выровненную
по левому краю, в которой перед каждым элементом находится обратный
слеш и выполняется переключение на моноширинный шрифт. Мы написали
*{2}{…} для определения двух столбцов с этим стилем форматирования.
Поскольку пример текста (Example text) был вставлен в соответствии с определением данной таблицы с по­мощью {textbackslashttfamily}l}%
l{raggedrightarraybackslash};
  воспользуйтесь коман­дой RaggedRight из пакета ragged2e – возможно,
она выполнит выравнивание даже еще лучше и не потребует применения arraybackslash.
Применяйте эти рекомендации на практике, чтобы избежать больших пус­
тых интервалов между словами.

Резюме
В этой главе мы узнали, как создавать таблицы. В частности, мы имели дело
с размещением текста в столбцах, добавлением заголовков к таблицам, объединением столбцов и строк, использованием пакетов для автоматической
подгонки ширины столбцов, а также с созданием цветных таблиц, таблиц
с альбомной ориентацией и даже многостраничных таблиц.
Документацию по каждому упомянутому в этой главе пакету можно открыть, выполнив texdoc имя_пакета в командной строке или обратившись
к соответствующей веб-странице https://texdoc.org/pkg/имя_пакета.
LaTeX может генерировать список таблиц, аналогичный оглавлению. Мы
будем подробно рассматривать такие списки в главе 8 «Формирование оглавления и списков ссылок».
LaTeX автоматически нумерует таблицы так же, как и иллюстрации. Эти
номера можно использовать для ссылок на таблицы. Глава 7 «Использование
перекрестных ссылок» посвящена организации ссылок в тексте, и сейчас мы
переходим к этой теме.

Глава

7
Использование
перекрестных ссылок

Документы содержат множество пронумерованных объектов, таких как страницы, разделы, элементы списков, рисунки и таблицы. Здесь перечислены
далеко не все такие объекты, например если необходимо написать математический текст, то, вероятнее всего, вы будете использовать нумерацию
уравнений (формул), теорем, определений и т. п.
Объекты нумеруются не только для их подсчета, но и для ссылок на них
в других местах документа. Например, в этой главе, если бы потребовалось
указание на третий по порядку рисунок, то можно было бы написать «см.
рис. 7.3». LaTeX автоматически нумерует рисунки. Если вставляется дополнительный рисунок, то LaTeX автоматически изменит нумерацию всех рисунков. Но что при этом происходит со ссылками? Не волнуйтесь, LaTeX
может позаботиться обо всех уже существующих перекрестных ссылках. Это
и является основной темой данной главы.
В этой главе рассматриваются следующие темы:
  установка и настройка меток и ссылок;
  использование более продвинутого механизма ссылок;
  ссылки на метки в других документах;
  преобразование текстовых ссылок в гиперссылки.
Выполнение всех этих действий подробно описано в следующих разделах.

Технические требования
Вы можете использовать установленную систему LaTeX на локальном
компью­тере или редактировать и компилировать все примеры исходного
кода в режиме онлайн на веб-странице книги: https://latexguide.org/chapter-07.
Исходный код примеров доступен в репозитории GitHub:

https://github.com/
PacktPublishing/LaTeX-Beginner-s-Guide-2nd-Edition-/tree/main/Chapter_07_-_Using_Cross-References.
В этой главе используются такие пакеты LaTeX: cleveref и varioref.
Кроме того, будут кратко описаны следующие пакеты: fancyref, hyperref
и xr.

Powered by TCPDF (www.tcpdf.org)

160  Использование перекрестных ссылок

Установка и настройка меток и ссылок
Для того чтобы можно было ссылаться на конкретное место в тексте, необходимо создать в этом месте метку (label). В дальнейшем имя такой метки
служит для ссылки на помеченную позицию в тексте.
Теперь мы выполним верстку списка наиболее часто используемых пакетов для оформления документов на основе исследования, проведенного на
сайте https://latex.org. С помощью коман­ды label пометим элементы этого
списка, на которые в дальнейшем можно будет ссылаться с по­мощью коман­
ды ref.
1. Создайте новый документ класса book:
documentclass{book}
begin{document}

2. Начните главу и раздел, затем создайте метку для этого раздела:
chapter{Statistics}
section{Most used packages by LaTeX.org users}
label{sec:packages}

3. Продолжайте ввод некоторого текста, включающего сноску:
The Top Five packages, used by LaTeX.org
membersfootnote{according to the 2021 survey on
LaTeX.orglabel{fn:project}}:

4. Создайте нумерованный список и разместите метки в нескольких его
элементах для последующих ссылок на них:
begin{enumerate}
item graphicxlabel{item:graphicx}
item babel
item amsmathlabel{item:amsmath}
item geometry
item hyperref
end{enumerate}

5. Создайте еще одну главу с меткой:
chapter{Mathematics}
label{maths}

6. Завершите главу (и документ) некоторым текстом, включающим ссылки:
emph{amsmath}, on position ref{item:amsmath}
of the top list in section~ref{sec:packages} on
page~pageref{sec:packages}, is indispensable to
high-quality mathematical typesetting in LaTeX.
emph{graphicx}, on position ref{item:graphicx},
is for including images. See also the footnote

Установка и настройка меток и ссылок  161
ref{fn:project} on page~pageref{fn:project}.
end{document}

7. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 7.1. Страница 1 начинается с заголовков (главы
и раздела) и пронумерованного списка.

Chapter 1

Statistics
1.1

Most used packages by LaTeX.org users

The Top Five packages, used by LaTeX.org members1 :
1. graphicx
2. babel
3. amsmath
4. geometry
5. hyperref

Рис. 7.1  Первая глава

Страница 1 завершается сноской, как показано на рис. 7.2.

1 according

to the 2021 survey on LaTeX.org

Рис. 7.2  Сноска на странице 1

Страница 2 пустая, так как новая глава 2 начинается на правосторонней
странице, т. е. на странице 3, которая показана на рис. 7.3.
8. Вы видите знаки вопроса в тексте? Ссылки все еще не созданы. Скомпилируйте документ еще раз и обратите внимание на различия (см.
рис. 7.4).
Мы создали перекрестные ссылки (cross-references) с по­мощью всего лишь
трех команд:
  label помечает позицию в тексте;
  ref выводит номер элемента, на который мы ссылаемся;
  pageref выводит номер страницы, на которой расположен помеченный
элемент.
Каждая коман­да принимает имя элемента как аргумент. Для метки элемента можно выбрать любое имя.

162  Использование перекрестных ссылок

Chapter 2

Mathematics
amsmath, on position ?? of the top list in section ?? on page ??, is indispensable
to high-quality mathematical typesetting in LATEX. graphicx, on position ??, is
for including images. See also the footnote ?? on page ??.

Рис. 7.3  Некорректные (неразрешимые) ссылки

Chapter 2

Mathematics
amsmath, on position 3 of the top list in section 1.1 on page 1, is indispensable
to high-quality mathematical typesetting in LATEX. graphicx, on position 1, is
for including images. See also the footnote 1 on page 1.

Рис. 7.4  Корректные (разрешимые) ссылки

Компиляция была выполнена дважды, потому что LaTeX требуется один
проход для создания меток, которые LaTeX может прочитать во время следующего запуска компилятора. Если LaTeX не может корректно разрешить
ссылку, то вместо нее выводятся два знака вопроса.
Теперь рассмотрим подробнее процедуру создания анкерной метки и выполнения ссылки на нее.

Присваивание метки
Команда label{name} присваивает текущей позиции в тексте метку с именем
name. Если говорить более точно, то выполняются следующие действия:
  если коман­да label вводится в обычном тексте, то метка должна быть
присвоена текущей единице разделения текста, такой как глава или
раздел;
  если коман­да label размещается в пронумерованном окружении, то
метка должна быть присвоена этому окружению.
Таким образом, мы не можем пометить раздел в окружении table. Чтобы
избежать любых проблем из-за возможного некорректного позиционирования, надежным практическим правилом является размещение коман­ды

Установка и настройка меток и ссылок  163

label непосредственно после позиции, на которую должна быть сделана
ссылка. Например, размещайте метку сразу после chapter или section.
В окружениях figure и table коман­да caption отвечает за нумерацию.
Именно поэтому коман­да label должна размещаться не перед caption,
а пос­ле нее.
Таким образом, типичные плавающие окружения должны выглядеть приблизительно так:
begin{figure}[htbp!]
centering
includegraphics{filename}
caption{Test figure}label{fig:name}
end{figure}

Но при работе с таблицами можно применить подход, показанный ниже:
begin{table}[htbp!]
centering
caption{table descripion}label{tab:name}
begin{tabular}{cc}

end{tabular}
end{table}

Имя метки может состоять из букв, цифр и знаков препинания. Кроме того,
имена меток чувствительны к регистру букв.
При работе с документами большого объема нумерация меток может становиться чрезмерно подробной. Представьте себе раздел, описывающий
шрифты и содержащий таблицу шрифтов, – как различить их метки? Можно
было бы применять для меток префикс, определяющий тип окружения. И такой подход действительно стал общепринятым практическим приемом для
пометки рисунков с по­мощью fig:name, таблиц – tab:name, разделов – sec:name
и аналогично для всех прочих случаев.
В следующих разделах мы рассмотрим несколько способов ссылок на
метки.

Ссылка на метку
После установки метки и определения ее имени можно ссылаться на это имя.
Для этого применяется коман­да ref{name}. Эта коман­да выводит номер, соответствующий имени метки. Ссылку можно использовать даже раньше, чем
соответствующая коман­да label появляется в исходном коде.
Несмотря на внешнюю простоту, это весьма мощный механизм. При каждой компиляции документа LaTeX проверяет все метки и заново присваивает
номера в соответствии со всеми внесенными изменениями. Если LaTeX замечает, что метки изменились, то сообщает о необходимости выполнения
второй процедуры компиляции для обновления соответствующих меток.
При любых сомнениях выполняйте компиляцию два раза.

164  Использование перекрестных ссылок

Ссылка на страницу
Команда pageref{name} работает аналогично ref, за исключением того, что
выводит номер соответствующей страницы.
Остаются ли все ссылки корректными, если изменили номера раздела
и главы? Проверим это. Вставим пустой раздел и разрыв страницы в начало
главы, как показано ниже в выделенных полужирным шрифтом строках исходного кода:
chapter{Statistics}
section{Introduction}
newpage
section{Most used packages by LaTeX.org users}
label{sec:packages}

Щелкните по кнопке Typeset один раз. LaTeX скомпилирует документ, но
выведет предупреждающее сообщение:
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
Предупреждение LaTeX: возможно, метка (метки) изменилась. Выполните повторную компиляцию
для корректировки перекрестных ссылок.

Именно это мы должны сделать. Щелкните по кнопке Typeset во второй раз, после чего вся нумерация будет корректно изменена на section 1.2
и page 2, как показано на рис. 7.5.
amsmath, on position 3 of the top list in section 1.2 on page 2, is indispensable
to high-quality mathematical typesetting in LATEX. graphicx, on position 1, is
for including images. See also the footnote 1 on page 2.
Рис. 7.5  Автоматическая коррекция ссылок

Используя ссылку вместе со ссылкой на номер страницы, можно написать
следующий текст:
See figure~ref{fig:name} on page~pageref{fig:name}.

Поскольку вы уже знаете, как определить коман­ду, можно организовать
такую ссылку проще:
newcommand{fullref}[1]{ref{#1} on page~pageref{#1}}

See figure~fullref{fig:name}.

При подобном подходе вы получаете полную ссылку в виде «See Figure 4.2
on page 32» (см. рис. 4.2 на стр. 32). Но если такая ссылка, например показанная в этом примере ссылка на рисунок, находится на той же странице, то
указание номера страницы выглядит слегка нелепым. Как можно избежать
этого? Пакет varioref предоставляет решение. В следующих разделах мы

Использование усовершенствованных ссылок  165

сосредоточимся на решении этой и других проблем с по­мощью методики
усовершенствованных ссылок.

Использование усовершенствованных ссылок
LaTeX помогает автоматизировать все типы ссылок. Но его помощь не ограничивается одной лишь нумерацией. LaTeX может автоматизировать даже
именование и формулировку. Рассмотрим это подробнее в следующем подразделе.

Создание интеллектуальных ссылок на страницы
Пакет varioref предоставляет коман­ду добавления указаний «on the preceding page» (на предыдущей странице), «on the following page» (на следующей
странице) или номера страницы в ссылку в зависимости от контекста.
Мы будем использовать коман­ды пакета varioref для создания различных
ссылок vref и vpageref, чтобы улучшить качество текстов со ссылками.
1. Откройте пример из предыдущего раздела «Установка и настройка меток и ссылок». Добавьте пакет varioref в преамбулу. Используйте для
этого пакета параметр nospace, который гарантирует, что varioref не
будет вставлять дополнительное нежелательное пустое пространство
перед ссылкой или после нее:
usepackage[nospace]{varioref}

2. Отредактируйте содержимое второй главы в исходном коде, как показано ниже:
emph{amsmath}, on position vref{item:amsmath}
of the top list in section~vref{sec:packages},
is indispensable to high-quality mathematical
typesetting in LaTeX. emph{graphicx}, on position
vref{item:graphicx}, is for including images.
See also the footnote vref{fn:project}, that is,
vpageref{fn:project}.

3. Скомпилируйте исходный код дважды и внимательно рассмотрите результат, показанный на рис. 7.6.

amsmath, on position 3 on the facing page of the top list in section 1.2 on the
preceding page, is indispensable to high-quality mathematical typesetting in
LATEX. graphicx, on position 1 on the facing page, is for including images. See
also the footnote 1 on the preceding page, that is, on the facing page.
Рис. 7.6  Отображение нижней части измененной страницы

166  Использование перекрестных ссылок
Команда vref проверяет расстояние от метки до раздела, на который создается ссылка. Поскольку метка находится на смежной странице (в данном
случае на предыдущей странице в двухстраничном макете), коман­да vref
вывела фразу «1.2 on the preceding page» (1.2 на предыдущей странице).
Команда vpageref ссылается на смежную (предыдущую) страницу в конце
текущего абзаца.
Команда vref{name} работает следующим образом:
  если ссылка и метка label{name} находятся на одной странице, то поведение точно такое же, как у коман­ды ref. Номер страницы не выводится;
  если ссылка и соответствующая метка label находятся на двух последовательных страницах, то vref выводит номер объекта ссылки
и дополнительную фразу «on the preceding page» (на предыдущей странице), «on the following page» (на следующей странице) или «on the
facing page» (на смежной странице). Последняя фраза выбирается, если
документ содержит двусторонние страницы, т. е. если метка label и соответствующая ссылка находятся на двухстраничном развороте;
  иначе выводятся ref и pageref.
Команда vpageref равнозначна pageref, но ведет себя как vref с учетом
ссылки на страницу.
Пакет varioref позволяет переключаться между формулировками, чтобы получить некоторое разнообразие. Он может выводить фразы «following
page» или «next page» (следующая страница), «preceding page» или «previous page» (предыдущая страница), «this page» (эта страница) или «current
page» (текущая страница). А в двухстраничном макете можно переключаться
между фразами «facing page» (смежная страница) и «preceding page» или «next
page». С такими вариациями текст выглядит более естественно. Эти альтернативные формулировки можно видеть на рис. 7.6.
Хотя пакет varioref определяет новые коман­ды, вы можете продолжать
пользоваться стандартными коман­дами ref и pageref.

Более тонкая настройка ссылок на страницы
Если метка и ссылка расположены очень близко друг к другу, то, вероятнее
всего, они находятся на одной странице, но это не всегда верно. В таких
случаях нам обычно известно, располагается ли метка до или после ссылки. Пакет varioref позволяет задать необязательный аргумент для коман­ды
vpageref, как показано ниже:
see the figure vpageref[above]{fig:name}

Команда vpageref выводит следующие варианты формулировок:
  «see the figure above» (см. рис. выше), если рисунок находится на той
же странице;
  «see the figure on the page before» (см. рис. на предыдущей странице),
если рисунок находится на предыдущей странице.

Использование усовершенствованных ссылок  167

Приведенный ниже исходный код позволяет получить другой вывод:
see the footnote vpageref[below]{fn:name}

Здесь будут выведены следующие варианты формулировок:
  «see the footnote below» (см. сноску ниже), если сноска находится на
той же странице;
  «see the footnote on the following page» (см. сноску на следующей странице), если сноска находится на следующей странице.
Команда vpageref распознает два необязательных аргумента. В первом
мы можем определить формулировку фразы, если метка и ссылка находятся
на одной странице, во втором – формулировку для случая расположения
метки и ссылки на разных страницах. Таким образом, можно даже написать
следующую коман­ду:
see the vpageref[above figure][figure]{fig:name}

Эта коман­да должна выводить следующие варианты формулировок:
  «see the above figure» (см. рис. выше), если рисунок находится на той
же странице;
  «see the figure on the previous page» (см. рис. на предыдущей странице),
если рисунок находится на предыдущей странице.
Выглядит немного сложно? Но ведь ваши запросы со временем могут рас­
ти, и потребуются более изощренные инструментальные средства, поэтому
описанные в этом подразделе функциональные возможности могут пригодиться в будущем.

Ссылки на диапазоны страниц
Пакет varioref предлагает еще две коман­ды:
  vpagerefrange[opt]{label1}{label2}, где label1 и label2 обозначают диапазон (например, последовательность рисунков с fig:a до fig:c). Если
обе метки находятся на одной странице, то выводится тот же результат, что и при использовании коман­ды vpageref. Иначе будет выведен диапазон, например «on pages 32–36» (на стр. 32–36). Параметр
opt должен использоваться, если обе метки расположены на текущей
странице;
  vrefrange[opt]{label1}{label2} аналогична vref – формулировка: see
figures vrefrange{fig:a}{fig:c} может вывести результат «see figures
4.2 to 4.4 on pages 36–37» (см. рис. 4.2–4.4 на стр. 36–37).
Примеры применения этих команд можно найти здесь: https://latexguide.
org/chapter-07.
Более подробную информацию о специальной настройке можно найти
в руководстве по пакету varioref. Как обычно, вы получите доступ к документации в командной строке: texdoc varioref – или на сайте: https://texdoc.
org/pkg/varioref.

168  Использование перекрестных ссылок

Использование автоматически присваиваемых
имен ссылок
Вам не надоело снова и снова писать figure~ref{fig:name} и table~ref
{tab:name}? Было бы замечательно, если бы LaTeX знал, какой тип подразуме­
вается в коман­де ref{name}, и автоматически записывал имя типа и соответствующий номер, не так ли? А что, если необходимо указывать сокращенные формулировки, например fig.~ref{fig:name} во всем документе? Пакет
cleveref поможет упростить эту работу. Он автоматически определяет тип
конкретной перекрестной ссылки и контекст, в котором она используется.
Можно воспользоваться коман­дами cref или Cref вместо ref, вторая
применяется, если требуются буквы верхнего регистра (прописные). Соответствующие коман­ды для ссылок на диапазоны crefrange и Crefrange.
Перепишем первый пример этой главы для ссылок с использованием пакета cleveref. Чтобы убедиться в том, что пакет работает правильно, мы умышленно не указываем префиксы в именах меток для label и cref.
1. Измените исходный код первого примера этой главы, как показано
ниже. Измененные строки выделены полужирным шрифтом:
documentclass{book}
usepackage{cleveref}
crefname{enumi}{position}{positions}
begin{document}
chapter{Statistics}
label{stats}
section{Most used packages by LaTeX.org users}
label{packages}
The Top Five packages, used by LaTeX.org
membersfootnote{according to the 2021 survey on
LaTeX.orglabel{project}}:
begin{enumerate}
item graphicxlabel{graphicx}
item babel
item amsmathlabel{amsmath}
item geometry
item hyperref
end{enumerate}
chapter{Mathematics}
label{maths}
emph{amsmath}, on cref{amsmath} of the top list in
cref{packages} of cref{stats}, is indispensable to
high-quality mathematical typesetting in LaTeX.
emph{graphicx}, on cref{graphicx}, is for
including images.
See also the cref{project} on cpageref{project}.
end{document}

2. Щелкните по кнопке Typeset два раза и проверьте результат, показанный на рис. 7.7, чтобы убедиться в том, что ссылки получили правильные имена.

Использование усовершенствованных ссылок  169

amsmath, on position 3 of the top list in section 1.1 of chapter 1, is indispensable
to high-quality mathematical typesetting in LATEX. graphicx, on position 1, is
for including images. See also the footnote 1 on page 1.
Рис. 7.7  Результат автоматического присваивания имен ссылкам

На рис. 7.7 можно видеть, что нет необходимости в определении каждого
объекта, для которого нужно создать ссылку. Команда cref всегда выбирает
правильное имя и соответствующий корректный номер. Это действительно
очень удобно и полезно.
Мы применили коман­ду crefname, чтобы сообщить cleveref, какое имя этот
пакет должен использовать для нумерованных элементов. Полное определение коман­ды crefname приведено ниже:
crefname{type}{singular}{plural}

Аргументом type может быть одно из следующих значений: chapter, section, figure, table, enumi, equation, theorem, – а также многие другие типы, с которыми мы пока еще не встречались. Пакет cleveref использует отдельную
версию для одиночных ссылок и отдельную – для множественных. Если требуется версия с прописными буквами (в верхнем регистре), то используйте
Crefname. Поэтому обычно применяются следующие коман­ды:
crefname{figure}{fig.}{figs.}
Crefname{figure}{Fig.}{Figs.}

Кроме того, можно ссылаться и на диапазоны, применяя следующие
коман­ды:
  crefrange{label1}{label2} для ссылки на диапазон помеченных объектов;
  cpagerefrange{label1}{label2} для ссылки на диапазон страниц.
Это становится более понятным на конкретном примере. Добавим эту
строку в рассматриваемый здесь исходный код:
See crefrange{graphicx}{amsmath} and cpagerefrange{stats}{maths}.

В результате получим: «See positions 1 to 3 and pages 1 to 3.» (См. позиции 1–3 и стр. 1–3.).
Подведем итог по преимуществам практического использования пакета
clevref:
  избавляемся от большого объема ручного ввода;
  мы можем использовать произвольные метки. Пакет fancyref выполняет аналогичную работу, но основывается на префиксах, таких как
chap, fig и tab;
  если мы решаем изменить формулировки, то сделать это можно быст­
ро, один раз записав в преамбулу соответствующую коман­ду, которая
будет действовать во всем документе.
Тем не менее рекомендуется использовать префикс, например fig: или
sec:, для точного указания различий между помечаемыми объектами. Это

170  Использование перекрестных ссылок
позволяет сделать исходный код более понятным и поэтому является общепринятым практическим приемом.

Объединение интеллектуальных ссылок
с механизмом автоматического именования
Поскольку пакет cleveref полностью поддерживает varioref, можно использовать совместно оба пакета для получения максимальных преимуществ.
В cleveref переопределяются коман­ды varioref с внутренним использованием cref. Поэтому можно применять полезные свойства ссылок varioref
вместе с интеллектуальным механизмом автоматического именования.
Просто загрузите varioref перед пакетом cleveref, как показано ниже:
usepackage{varioref}
usepackage{cleveref}

После этого можно использовать vref, cref, ref и другие коман­ды – любая из них будет приемлемой.
Пакет varioref удобен для ссылок внутри документа, но мы можем также
использовать ссылки на страницы, разделы и т. п. в других документах. Рассмотрим эту тему более подробно.

Ссылки на метки в других документах
Если вы пишете несколько взаимосвязанных документов, которые ссылаются друг на друга, то могут потребоваться ссылки на метки в другом документе. В пакете xr (external references) реализована такая возможность. Сначала
необходимо загрузить пакет:
usepackage{xr}

Если нужно ссылаться на разделы или окружения во внешнем документе,
например doc.tex, то добавьте в преамбулу следующую коман­ду:
externaldocument{doc}

Это позволит дополнительно ссылаться на любой объект с меткой в документе doc.tex. То же самое можно сделать для нескольких документов. Чтобы
избежать конфликтов в тех случаях, когда во внешнем документе используется такая же метка label, как и в основном документе, объявите префикс
с по­мощью необязательного аргумента коман­ды externaldocument. Например, в качестве префикса можно использовать D-:
externaldocument[D-]{doc}

После этого все ссылки из документа doc.tex должны содержать префикс D-,
и можно писать ref{D-name}, чтобы ссылаться на метку name в doc.tex. Вместо

Преобразование ссылок в гиперссылки  171

D- можно использовать любой другой префикс, который преобразует ссылки
так, чтобы они стали неповторяющимися.
В следующем разделе мы рассмотрим, как можно сделать ссылки активными, т. е. кликабельными, чтобы щелчок по ним перемещал читателя к помеченному объекту.

Преобразование ссылок в гиперссылки
Документы в формате PDF предоставляют возможности создания закладок
и гиперссылок. Вы хотите воспользоваться этими возможностями? Поддержку гиперссылок обеспечивает замечательный пакет hyperref.
Загрузите этот пакет непосредственно перед cleveref. Такой порядок чрезвычайно важен для корректной работы со ссылками, потому что cleveref
определяет, был ли загружен hyperref, и превращает все ссылки в гипер­
ссылки. Даже без каких-либо параметров или команд в документе будут создаваться гиперссылки во всех возможных случаях по следующим правилам:
  все ссылки становятся гиперссылками. Щелкните по любому из этих
чисел, чтобы перейти по ссылке к соответствующей таблице, элементу
списка, разделу или странице;
  каждая метка сноски является гиперссылкой на ее текст. Щелкните для
перехода к тексту сноски;
  если вставляется tableofcontent, то вы получите список документов,
глав и разделов, размещенный в панели навигации программы чтения
PDF.
Пакет hyperref способен даже на большее – создание указателя с элементами, ссылающимися на фрагменты текста, обратные ссылки на элементы
списка литературы (библиографии) и многое другое. Можно тщательно настроить поведение пакета с по­мощью таких параметров, как, например, выбор цвета или рамки для гиперссылок. Поэтому вы всегда должны помнить
о существовании этого полезного пакета. В главе 12 «Дополнительное улучшение документов» мы вернемся к этой теме.
С одной стороны, hyperref обнаруживает многие другие пакеты, например varioref, и может преобразовать их коман­ды в гиперссылки. Именно
поэтому необходимо загружать hyperref после большинства других пакетов.
С другой стороны, некоторые пакеты, являющиеся исключением из этого
правила, например cleveref, обнаруживают функции hyperref и создают свои
инструменты на их основе. В таких случаях мы должны загружать эти пакеты
после hyperref. Итак, если вы используете совместно пакеты varioref, cleveref
и hyperref, то порядок их загрузки должен быть следующим:
usepackage[nospace]{varioref}
usepackage{hyperref}
usepackage{cleveref}

В руководстве по пакету hyperref имеется целый раздел о совместимости
с другими пакетами и требуемом порядке загрузки. Откройте руководство

172  Использование перекрестных ссылок
в командной строке: texdoc hyperref – или на сайте: https://texdoc.org/pkg/hyperref. В большинстве случаев пакет hyperref должен загружаться последним,
за исключением нескольких случаев, описанных в руководстве.

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

Глава

8
Формирование
оглавления
и списков ссылок

В LaTeX списки для многих целей создаются очень просто. Например, мы уже
видели, что простая коман­да tableofcontents создает неплохо выглядящее
оглавление. Эта коман­да берет элементы из заголовков и номера страниц, на
которых они расположены, и формирует элегантный список.
Оглавление (table of contents – TOC) и предметный указатель (index) удобны для того, чтобы легче ориентироваться в книге. Не менее полезны списки
таблиц и иллюстраций. Обычно в научной статье или книге требуется список
ссылок на цитируемые материалы, т. е. список (использованной) литературы
или библиография. После изучения этой главы вы будете знать, как создавать
такие списки и настраивать их.
В данной главе рассматриваются следующие темы:
  настройка оглавления;
  формирование предметного указателя;
  создание списка использованной литературы (библиографии);
  изменение заголовков.
Начнем с содержания.

Технические требования
Вы можете использовать установленную систему LaTeX на локальном
компью­тере или редактировать и компилировать все примеры исходного
кода в режиме онлайн на веб-странице книги: https://latexguide.org/chapter-08.
Исходный код примеров доступен в репозитории GitHub: https://github.com/
PacktPublishing/LaTeX-Beginner-s-Guide-2nd-Edition-/tree/main/Chapter_08_-_Listing_Contents_and_References.
В этой главе используются стандартные функциональные возможности
LaTeX и пакет index.
Кроме того, будут кратко описаны следующие пакеты: biblatex, cite, hyperref, makeidx, minitoc, multitoc, natbib, titlesec, titletoc, tocbibind, tocloft и url.

174  Формирование оглавления и списков ссылок
Дополнительные примеры, связанные с темой данной главы, можно найти в книге «LaTeX Cookbook», глава 7 «Contents, Indexes, and Bibliographies»,
вмес­те с исходным кодом примеров на веб-сайте книги: https://latex-cookbook.net/chapter-7.

Настройка оглавления
Помимо вызова коман­ды tableofcontents для получения предварительно
спроектированного оглавления, LaTeX предоставляет простые способы изменить его. Рассмотрим некоторые из таких способов.
Создадим документ, который будем использовать для настройки, а кроме
того, он также станет рабочим примером для следующих разделов.
Мы будем формировать фрейм документа, содержащий некоторые заголовки. Изменим автоматически создаваемое оглавление, чтобы оно стало
более подробным и содержало дополнительные элементы.
В главе 3 «Дизайн страниц» мы наблюдали результат выполнения коман­
ды tableofcontents. LaTeX собирает элементы оглавления из заголовков. Мы
будем использовать заголовки более низких уровней – для разделов, подразделов и т. д.
Потом сделаем оглавление еще более подробным. Будем вручную добавлять элементы для некоторых заголовков. Начнем с основного документа.
1. Создайте новый документ класса book:
documentclass{book}

2. Установите значение глубины оглавления равной 3 для включения
в него заголовков до уровня подразделов:
setcounter{tocdepth}{3}

3. Определите начало документа:
begin{document}

4. Выведите оглавление в начале:
tableofcontents

5. Введите заголовки на всех уровнях по вашему выбору. Используйте
коман­ду addcontentsline или addtocontents для добавления в оглавление каких-либо элементов вручную:
part{First Part}
chapter*{Preface}
addcontentsline{toc}{chapter}{Preface}
chapter{First main chapter}
section{A section}
section{Another section}

Настройка оглавления  175
subsection{A smaller section}
subsubsection[Deeper level]{This section has an
even deeper level}
chapter{Second main chapter}
part{Second part}
chapter{Third main chapter}

6. Завершите документ приложением, в котором содержатся его собственные главы:
appendix
cleardoublepage
addtocontents{toc}{bigskip}
addcontentsline{toc}{part}{Appendix}
chapter{Glossary}
chapter{Symbols}
end{document}

7. Щелкните по кнопке Typeset для компиляции документа. На первой
странице показано оглавление, но без каких-либо элементов.
8. Щелкните по кнопке Typeset во второй раз. Теперь вы можете видеть
оглавление, показанное на рис. 8.1.

Contents
I

First Part

3

Preface

5

1 First main chapter
1.1 A section . . . . . . . .
1.2 Another section . . . . .
1.2.1 A smaller section
Deeper level . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

2 Second main chapter

II

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

7
7
7
7
7
9

Second part

11

3 Third main chapter

13

Appendix

15

A Glossary

15

B Symbols

17

Рис. 8.1  Пример оглавления

176  Формирование оглавления и списков ссылок
Мы структурировали документ с по­мощью нескольких команд определения разделов. LaTeX считывает все эти коман­ды при первом проходе компиляции и создает файл с расширением .toc. Этот файл содержит коман­ды для
создания всех элементов оглавления. Во время первого прохода этот файл
пока еще не существует, поэтому оглавление остается пустым.
При втором проходе компиляции коман­да tableofcontents считывает содержимое .toc-файла и выводит оглавление.
В рассматриваемом здесь примере мы увеличили глубину оглавления на
один уровень. Мы добавили аналогичный главе элемент для предисловия
(Preface) и вставили аналогичный части заголовок, обозначающий начало
приложения (Appendix), воспользовавшись коман­дой addcontentsline. С помощью коман­ды addtocontents мы вставили некоторое пустое пространство
перед этим последним заголовком. В следующих подразделах мы рассмот­
рим все эти коман­ды более подробно и узнаем об их настройке.

Регулирование глубины оглавления
Существуют стандартные коман­ды разделения текста на части и соответствующие им так называемые уровни оглавления:
  part: −1 в классах book и report или 0 в классе article;
  chapter: 0 (за исключением класса article, поскольку в статье нет глав);
  section: 1;
  subsection: 2;
  subsubsection: 3;
  paragraph: 4;
  subparagraph: 5.
В классах book и report LaTeX создает элементы оглавления до уровня 2, т. е.
до уровня подраздела subsection. В классе article по умолчанию создаются
элементы до уровня 3, т. е. до уровня подподраздела subsubsection. Например, в книге это означает, что коман­да subsubsection не создает элемент
оглавления. Существует переменная tocdepth, представляющая уровень
оглавления. Это целочисленная переменная, которая называется счетчиком. Чтобы сообщить LaTeX о необходимости включения подподразделов
в оглавление, мы должны увеличить значение этого счетчика. Существуют
два простых способа изменения значения счетчика уровней оглавления:
  setcounter{name}{n} определяет целочисленное значение n для счетчика name;
  addtocounter{name}{n} прибавляет целочисленное значение n к текущему значению счетчика name. Для уменьшения значения счетчика
необходимо указать отрицательное значение n.
Таким образом, приведенная ниже коман­да должна гарантировать, что
даже subparagraph (подабзац) создает элемент оглавления:
setcounter{tocdepth}{5}

Воспользовавшись вместо нее коман­дой addcounter, можно увеличить или
уменьшить уровень, даже не зная текущее значение счетчика.

Настройка оглавления  177

В отличие от команд, имена счетчиков не начинаются с обратного слеша.

Сокращение элементов оглавления
Как вам уже известно из главы 3 «Дизайн страниц», для оглавления можно
выбрать текст, отличающийся от заголовка в основном теле документа. Каждая коман­да разделения документа на части распознает необязательный
аргумент для определения элемента оглавления, который особенно удобен,
если требуется использовать очень длинные заголовки. В этом случае сокращенного элемента оглавления будет вполне достаточно. В рассматриваемом
здесь примере мы сделали это, выполнив следующую коман­ду:
subsubsection[Deeper level]{This section has an even deeper level}

В основном теле документа выводится длинный заголовок, а в оглавлении – его сокращенный вариант. В названиях в верхней части страниц, называемых верхними колонтитулами (running titles), также будут использоваться сокращенные элементы, поскольку пространство в колонтитулах весьма
ограничено.

Добавление элементов оглавления вручную
Команды со звездочкой, такие как chapter* и section*, не создают элемент
оглавления. В рассматриваемом здесь примере мы добавляем элемент оглавления вручную, используя приведенную ниже коман­ду:
addcontentsline{file extension}{sectional unit}{text}

Эту коман­ду можно применять в нескольких контекстах. Расширение файла file extension может быть представлено одним из следующих значений:
  toc для файла оглавления;
  lof для файла списка иллюстраций;
  lot для файла списка таблиц.
Или же это может быть любое подобное расширение файла, тип которого
известен LaTeX.
Параметр sectional unit определяет форматирование элемента оглавления. Он определяет стиль главы для создания элемента, который форматируется как обычное название главы, и аналогично для всех прочих единиц
разделения, таких как часть, раздел или подраздел.
Третий аргумент содержит текст для элемента оглавления.
Можно вставлять текст или коман­ды напрямую с по­мощью следующей
коман­ды:
addtocontents{file extension}{entry}

В отличие от коман­ды addcontentsline, аргумент entry записывается напрямую в файл без какого-либо дополнительного форматирования. Вы можете выбрать любое форматирование по своему усмотрению.

178  Формирование оглавления и списков ссылок
Также можно использовать коман­ду addtocontents для некоторой дополнительной настройки, например:
  addtocontents{toc}{protectenlargethispage{baselineskip}} увеличивает высоту области текста так, чтобы одна дополнительная строка
вписывалась в страницу оглавления;
  addtocontents{toc}{protectnewpage} вставляет разрыв страницы
в оглавление. Например, если автоматический разрыв страницы размещен после названия главы, но перед следующими названиями ее
разделов, то, вероятнее всего, потребуется принудительный разрыв
страницы уже перед названием главы;
  addtocontents{toc}{protectthispagestyle{fancy}} изменяет текущий
стиль страницы оглавления на fancy. Так как для первой страницы каждой главы по умолчанию назначен стиль plain, то и первая страница
оглавления должна быть простой, даже если задана коман­да pagestyle
{fancy}. Команда addtocontents{toc}{protectthispagestyle{fancy}} перезаписывает стиль первой страницы оглавления.
Размещайте эти коман­ды в тех местах, где они будут наиболее эффективными. Для воздействия на первую страницу оглавления введите коман­ду
в самом начале документа. Для вставки разрыва страницы перед названием
конкретной главы запишите коман­ду прямо перед соответствующим вызовом коман­ды chapter.

Создание и настройка списка иллюстраций
В главе 5 «Включение изображений» и главе 6 «Создание таблиц» были крат­
ко упомянуты две коман­ды для создания списков иллюстраций и таблиц:
listoffigures и listoftables. В зависимости от класса документа они создают правильно оформленный список всех подписей к рисункам, номеров
таблиц с указанием соответствующих номеров страниц. Как и в случае формирования оглавления, LaTeX делает все это автоматически. Но мы можем
использовать некоторые методики, как и в случае с оглавлением, для дополнительной настройки других списков. Попробуем сделать это.
Предположим, что все наши рисунки являются схемами (диаграммами).
Мы будем избегать использования термина «рисунки», поэтому добавим
список схем.
1. Откройте файл с исходным кодом рассматриваемого в этой главе примера. Добавьте в преамбулу следующие строки:
renewcommand{figurename}{Diagram}
renewcommand{listfigurename}{List of Diagrams}

2. Сразу после коман­ды tableofcontents добавьте строку:
listoffigures

3. Добавьте схему в любом месте первой главы:
begin{figure}
centering

Настройка оглавления  179
fbox{Diagram placeholder}
caption{Enterprize Organizational Chart}
end{figure}

4. Во второй части третьей главы мы намерены добавить схемы проектирования сети. Пометим их аббревиатурой lof (LOF – list of figures)
и поместим схемы в требуемом месте текста, как показано ниже:
addtocontents{lof}{Network Diagrams:}
begin{figure}
centering
fbox{Diagram placeholder}
caption{Network overview}
end{figure}
begin{figure}
centering
fbox{Diagram placeholder}
caption{WLAN Design}
end{figure}

5. Щелкните по кнопке Typeset дважды, чтобы получить документ и список схем, показанный на рис. 8.2.

List of Diagrams
1.1

Enterprize Organizational Chart . . . . . . . . . . . . . . . . . .

9

Network Diagrams:
3.1 Network overview . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 WLAN Design . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15
16

Рис. 8.2  Список схем

Мы переименовали иллюстрации и список подписей к ним, переопределив
макрокоман­ды LaTeX. В конце этой главы будет приведен список имен, используемых классами LaTeX, которые можно переопределять.
Как и для оглавления, коман­да addtocontents используется для вставки заголовка, выделенного полужирным шрифтом, в .lof-файл, где LaTeX собирает
подписи к схемам. Это работает точно так же, как для оглавления.

Создание списка таблиц
Вы уже поняли, что для создания и настройки списка таблиц (list of tables –
LOT) необходим файл, в котором LaTeX собирает подписи к таблицам. Этот
файл имеет расширение .lot. Поэтому первым аргументом коман­ды addto-

Powered by TCPDF (www.tcpdf.org)

180  Формирование оглавления и списков ссылок
contents должно быть значение lot. Все операции выполняются аналогично
с использованием команд listoftables, tablename и listtablename.

Использование пакетов для дополнительной
настройки
Помимо описанных выше простых методов, некоторые пакеты предоставляют изощренные функциональные возможности для дополнительной настройки оглавления, а также списков иллюстраций и таблиц:
  tocloft расширяет возможности управления полиграфическими свойствами оглавления, списков иллюстраций и таблиц. Можно даже определять новые типы таких списков;
  titletoc предлагает удобные способы обработки элементов и дополняет titlesec, превосходный пакет для расширенной настройки заголовков всех типов разделов;
  multitoc предоставляет макет размещения в два и более столбцов, используя для этого пакет multicol;
  minitoc может создавать небольшие оглавления для каждой части, главы или раздела;
  tocbibind может автоматически добавлять список литературы (библио­
графию), предметный указатель, оглавление, списки иллюстраций
и таблиц в общее оглавление. Пакет предоставляет даже возможность
использования нумерованных подписей вместо непронумерованных
по умолчанию.
Для чтения документации по этим пакетам используйте texdoc в командной строке или посетите сайт https://texdoc.org.
Теперь мы знаем, как создавать оглавления, списки таблиц и иллюстраций, которые обычно размещаются в начале документа. Теперь продолжим
рассматривать списки, которые располагаются в конце документа, – предметный указатель (словарь, глоссарий) и список литературы (библиография).

Создание предметного указателя
Крупные документы часто содержат предметный указатель. Предметный
указатель (index) – это список слов и/или словосочетаний и номера страниц,
указывающие на те места, где можно найти соответствующий текстовый
материал в данном документе. В отличие от функции полнотекстового поиска, предметный указатель предоставляет целенаправленные ссылки на
информацию, связанную с элементами.
Наша задача – идентифицировать и пометить необходимые слова (словосочетания), а LaTeX соберет эту информацию, сформирует и выведет готовый
предметный указатель.
Предположим, что в рассматриваемом здесь примере содержится информация о некотором предприятии, о его структуре, а также о структуре и схеме

Создание предметного указателя  181

его компьютерной сети. Мы пометим те места в тексте, где встречаются соответствующие термины. После этого сообщим LaTeX о необходимости верстки
предметного указателя.
1. Вернитесь в пример, рассматриваемый в этой главе. В преамбуле загрузите пакет index и добавьте коман­ду создания предметного указателя:
usepackage{index}
makeindex

2. В подписи к схеме структуры предприятия вставьте метку с по­мощью
ключевого слова enterprise:
caption{index{enterprise}Enterprise Organizational Chart}

3. В третьей главе, содержащей схемы сети, вставьте метку с по­мощью
ключевого слова network:
index{network}

4. Непосредственно перед концом документа end{document} создайте элемент предметного указателя для оглавления. Чтобы обеспечить правильную нумерацию страниц, прямо перед этим элементом вставьте
коман­ду завершения страницы:
clearpage
addcontentsline{toc}{chapter}{Index}

5. В следующей строке сообщите LaTeX о необходимости верстки предметного указателя:
printindex

6. Если вы используете редактор TeXworks, то выберите MakeIndex
вмес­т о pdfLaTeX в спускающемся меню справа от кнопки Typeset.
Затем щелкните по кнопке Typeset. Если вы используете какой-либо другой редактор, то воспользуйтесь его встроенной функцией
MakeIndex или введите в командной строке в каталоге документа
следующую коман­д у:
makeindex documentname

Index

7. В спускающемся меню переключитесь обратно
на pdfLaTeX. Щелкните по кнопке Typeset и внимательно рассмотрите последнюю страницу документа, показанную на рис. 8.3.
Мы загрузили пакет index, который улучшает встроenterprise, 9
енные в LaTeX возможности работы с предметным указателем.
network, 15
Можно было бы воспользоваться пакетом makeidx,
являющимся частью стандартного дистрибутивного Рис. 8.3  Предметный
указатель
комплекта LaTeX. Команда makeindex выполняет под-

182  Формирование оглавления и списков ссылок
готовку предметного указателя. Обе коман­ды должны располагаться в преамбуле, поэтому введите их перед началом документа begin{document}.
Команда index принимает только один аргумент – слово или словосочетание, которое должно быть включено в предметный указатель. Команда
записывает это слово (словосочетание) в файл с расширением .idx. Если вы
заглянете в этот файл, то увидите приблизительно такие строки:
indexentry {enterprise}{9}
indexentry {network}{15}

Так обозначаются элементы предметного указателя и соответствующие
им номера страниц.
Внешняя программа makeindex обрабатывает этот .idx-файл и создает файл
с расширением .ind, который содержит исходный код LaTeX для создания
предметного указателя. В частности, он содержит окружение списка предметного указателя вместе с его элементами и выглядит следующим образом:
begin{theindex}
item enterprise, 9
indexspace
item network, 15
end{theindex}

Более сложные предметные указатели могут содержать вложенные элементы (подэлементы), диапазоны страниц и ссылки на другие элементы.
Рассмотрим, как создается такой предметный указатель. На веб-сайте книги
https://latexguide.org/chapter-08 вы можете найти полностью компилируемый
исходный код, содержащий примеры команд, которые мы будем изучать
в следующих подразделах. С этими коман­дами можно поэкспериментировать прямо на указанной выше веб-странице.

Определение элементов и вложенных элементов
предметного указателя
Ранее мы уже создавали простые элементы предметного указателя с по­
мощью следующей коман­ды:
index{phrase}

Можно также создавать вложенные элементы (подэлементы), определяя
основной элемент, за которым следует вложенный, отделенный от основного
восклицательным знаком, например:
index{network!overview}

Кроме того, сами вложенные элементы могут иметь собственные вложенные элементы – для этого используется еще один восклицательный знак,
например:

Создание предметного указателя 

183
index{enterprise!organization}
index{enterprise!organization!sales}
index{enterprise!organization!controlling}
index{enterprise!organization!operation}

Допускается определение не более трех уровней вложения.

Определение диапазона страниц
Если некоторый термин связан с несколькими страницами, то можно определить диапазон страниц для соответствующего элемента предметного указателя. Добавьте к такому элементу суффикс |( в том месте, где начинается
диапазон страниц, и суффикс |), где диапазон заканчивается. В начале главы
network добавьте |(, как показано ниже:
index{network|(}

А в конце этой главы добавьте |):
index{network|)}

В результате создается элемент предметного указателя в форме Network,
15–17.

Использование символов и макрокоманд
в предметном указателе
Внешняя программа makeindex сортирует элементы в алфавитном порядке.
Если в предметный указатель необходимо включить какие-либо специальные символы, например греческие буквы, химические формулы или математические символы, то могут возникать проблемы с их сортировкой. Для
устранения подобных проблем коман­да index распознает как аргумент ключ
сортировки. Используйте этот ключ как префикс элемента, отделенный символом @, например:
index{Gamma@$Gamma$}

В общем случае применение макрокоманд для элементов предметного
указателя не рекомендуется. Имя макрокоман­ды, включающее обратный
слеш, должно определять порядок сортировки, хотя сама макрокоман­да
должна быть развернута (выполнена) в предметном указателе. Предположим, что вы определили макрокоман­ду group, обозначающую словосочетание TeX User Group и определенную следующим образом:
newcommand{group}{TeX Users Group}

184  Формирование оглавления и списков ссылок
Если вы введете приведенную ниже коман­ду, то элемент TeX User Group
будет интерпретироваться как group при сортировке и не будет размещен
среди элементов, начинающихся на букву T:
index{group}

Эту проблему (и подобные ей) можно решить, добавив ключ сортировки
как префикс, например:
index{TeX@group}

Аналогичным образом можно определить, как должны сортироваться слова со специальными символами. Например, немецкое слово schön будет сор­
тироваться как schon:
index{schon@sch»{o}n}

Поскольку символы |, @ и ! имеют особый смысл в элементах предметного
указателя, необходимо выполнить дополнительные действия для их вывода
как обычных текстовых символов. Ниже приведен пример вывода восклицательного знака как обычного символа:
index{exclamation («!)!loud}

Символы |, @ и ! в предметном указателе можно выводить как обычные
символы, поместив перед ними двойную кавычку «.

Ссылки на другие элементы предметного
указателя
Различные слова могут обозначать одну и ту же концепцию. В таких случаях
можно создать перекрестную ссылку на основное словосочетание без указания номера страницы. Это делается с по­мощью добавления кода |see{entry
list}, например:
index{wireless|see{WLAN}}
index{WLAN}

В таких ссылках номер страницы не выводится, поскольку их позиция
в тексте не имеет значения. Их можно собрать в одном месте документа.

Более подробная настройка номеров страниц
Если элемент предметного указателя ссылается на несколько страниц, то,
возможно, потребуется выделение одного номера страницы для обозначения
основной ссылки. Вы можете определить макрокоман­ду для такого выделения, как показано ниже:
newcommand{main}[1]{emph{#1}}

Создание предметного указателя  185

А в элемент предметного указателя добавьте символ | и имя новой
коман­ды:
index{WLAN|main}

После этого LaTeX будет выделять соответствующий номер страницы.
Обычные коман­ды index{WLAN|emph} или index{WLAN|texbf} также допустимы.
Но определение специализированной макрокоман­ды является более логически обоснованным – вспомните принцип разделения формы и содержания.

Настройка макета предметного указателя
Если дополнить рассматриваемый здесь пример документа коман­дами, описанными в предыдущих подразделах, то printindex выведет макет, показанный на рис. 8.4 и содержащий вложенные элементы, диапазоны страниц,
перекрестные ссылки и выделенные элементы.

Index
TEX Users Group sorted wrong, 17
enterprise, 9
organization, 9
controlling, 9
operation, 9
sales, 9
exclamation (!)
loud, 17
Γ, 17
network, 15–17
overview, 15
schön, 17
TEX Users Group sorted correctly,
17
wireless, see WLAN
WLAN, 17

Рис. 8.4  Более сложный предметный указатель

LaTeX предоставляет несколько стилей предметного указателя: latex (по
умолчанию), gind, din и iso. Чтобы использовать другой стиль, передайте его
имя в программу makeindex с по­мощью параметра -s, например:
makeindex –s iso documentname

186  Формирование оглавления и списков ссылок
Если после работы этой программы выполнить компиляцию документа, то
макет предметного указателя изменится, как показано на рис. 8.5.

Index
TEX Users Group sorted wrong .17
enterprise . . . . . . . . . . . . . . . . . . . . . . . 9
organization . . . . . . . . . . . . . . . . 9
controlling . . . . . . . . . . . . . . . 9
operation . . . . . . . . . . . . . . . . . 9
sales . . . . . . . . . . . . . . . . . . . . . 9
exclamation (!)
loud . . . . . . . . . . . . . . . . . . . . . . . 17
Γ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
network . . . . . . . . . . . . . . . . . . . . 15–17
overview . . . . . . . . . . . . . . . . . . .15
schön . . . . . . . . . . . . . . . . . . . . . . . . . . 17
TEX Users Group sorted correctly
17
wireless . . . . . . . . . . . . . . . see WLAN
WLAN . . . . . . . . . . . . . . . . . . . . . . . . 17
Рис. 8.5  Предметный указатель стилем iso

Можно даже определять собственные стили. Чтобы узнать больше о создании предметного указателя и практическом применении программы makeindex, воспользуйтесь texdoc в командной строке:
texdoc index

Более подробную информацию о самой программе makeindex можно получить в командной строке:
texdoc makeindex

Или обратитесь к онлайновой документации здесь: https://texdoc.org/pkg/
index и https://texdoc.org/pkg/makeindex.
Несмотря на то что формирование предметного указателя при написании
документа кажется более естественным действием, такой подход может привести к несогласованности в предметном указателе. Поэтому рекомендуется
сначала полностью завершить написание документа, а затем начать работу
по определению того, что должно содержаться в предметном указателе.
Следующая тема – вывод списка ссылок, т. е. списка использованной литературы или библиографии.

Создание списка использованной литературы  187

Создание списка использованной литературы
Научные документы и статьи особенно часто содержат список ссылок на использованную литературу – список библиографических ссылок (или просто
библиографию). В этом разделе мы рассмотрим, как сверстать список использованной литературы и как ссылаться на его элементы.
Используя стандартные функциональные возможности LaTeX, мы создадим небольшой список ссылок, содержащий книгу и статью Дональда Кнута
(Donald E. Knuth), создателя системы TeX. В теле основного документа мы
будем ссылаться на оба источника.
1. Создайте новый документ, как показано ниже:
documentclass{article}
begin{document}
section*{Recommended texts}
To study TeX in depth, see cite{DK86}.
For writing math texts, see cite{DK89}.
begin{thebibliography}{8}
bibitem{DK86} D.E. Knuth, emph{The {TeX}book}, 1986
bibitem{DK89} D.E. Knuth, emph{Typesetting Concrete
Mathematics}, 1989
end{thebibliography}
end{document}

2. Щелкните по кнопке Typeset и внимательно рассмотрите результат,
показанный на рис. 8.6.

Recommended texts
To study TEX in depth, see [1]. For writing math texts, see [2].

References
[1] D.E. Knuth, The TEXbook, 1986
[2] D.E. Knuth, Typesetting Concrete Mathematics, 1989

Рис. 8.6  Список ссылок на использованную литературу

Мы воспользовались окружением thebibliography для верстки списка ссылок, который похож на список описаний, рассмотренный в главе 4 «Создание
списков». Каждому элементу этого списка присвоен ключ. Для цитирования
в тексте документа мы создаем ссылку на этот ключ, используя коман­ду
cite. Рассмотрим применение этой коман­ды подробнее.

188  Формирование оглавления и списков ссылок

Использование стандартного окружения
библиографии
Стандартное окружение LaTeX для создания списков использованной литературы имеет следующую форму:
begin{thebibliography}{widest label}
bibitem[label]{key} author, title, year etc.
bibitem…

end{thebibliography}

Каждый элемент определяется коман­дой bibitem. Для этой коман­ды требуется обязательный аргумент, определяющий ключ key. Можно просто ссылаться на этот ключ с по­мощью коман­ды cite{key} или cite{key1,key2}.
Команда cite принимает необязательный аргумент, определяющий диапазон страниц, например cite[p.,18—20]{key}. Также можно выбрать метку посредством необязательного аргумента коман­ды bibitem. Если метка
не определена, то LaTeX должен пронумеровать элементы последовательно
в квадратных скобках, как было показано на рис. 8.6.
При использовании меток окружение может выглядеть следующим образом:
begin{thebibliography}{Knuth89}
bibitem[Knuth86]{DK86} D.E. Knuth, emph{The {TeX}book}, 1986
bibitem[Knuth89]{DK89} D.E. Knuth, emph{Typesetting Concrete
Mathematics}, 1989
end{thebibliography}

Соответствующий вывод результата показан на рис. 8.7.

Recommended texts
To study TEX in depth, see [Knuth86]. For writing math texts, see [Knuth89].

References
[Knuth86] D.E. Knuth, The TEXbook, 1986
[Knuth89] D.E. Knuth, Typesetting Concrete Mathematics, 1989

Рис. 8.7  Список ссылок на использованную литературу

На рис. 8.7 можно видеть, что LaTeX автоматически скорректировал вывод
коман­ды cite с учетом новых меток. Пакет cite предоставляет компактные
и отсортированные списки с числовыми ссылками на источники, такими как
[2,4-6], а также дополнительные параметры форматирования для ссылок
и цитат непосредственно в тексте.

Создание списка использованной литературы  189

Обязательный элемент для этого окружения непременно должен содержать самую общую («самую широкую» – widest) метку для выравнивания всех
элементов. Например, если в списке больше девяти, но меньше 100 элементов, то в этом аргументе можно указать две цифры.

Использование библиографических баз данных
с по­мощью BibTeX
Создание списка использованной литературы вручную требует немалых
трудозатрат. А если вы используете ссылки в нескольких документах, то,
возможно, более предпочтительным вариантом является применение базы
данных. Такой подход позволяет программе автоматически сгенерировать
список использованной литературы. Может показаться, что подобная методика слишком сложна, но в действительности это не так. Попробуем применить ее на практике.
Создадим отдельный файл базы данных, содержащий ссылки из предыдущего примера. Потом изменим исходный код того же примера, чтобы воспользоваться созданной базой данных. Чтобы появилась возможность работы с новой базой данных, необходимо вызвать внешнюю программу BibTeX.
1. Создайте новый документ. Начните с записи элемента для книги Кнута
TeXbook:
@book{DK86,
author = «D.E. Knuth»,
title = «The {TeX}book»,
publisher = «Addison Wesley»,
year = 1986
}

2. Для следующего элемента, т. е. для статьи Кнута, мы определяем еще
больше полей:
@article{DK89,
author = «D.E. Knuth»,
title = «Typesetting Concrete Mathematics»,
journal = «TUGboat»,
volume = 10,
number = 1,
pages = «31—36»,
month = apr,
year = 1989
}

3. Сохраните файл под именем example.bib. Откройте пример документа,
рассматриваемый в этой главе, и измените его исходный код, как показано ниже:
documentclass{article}
begin{document}

190  Формирование оглавления и списков ссылок
section*{Recommended texts}
To study TeX in depth, see cite{DK86}. For writing
math texts,
see cite{DK89}.
bibliographystyle{alpha}
bibliography{example}
end{document}

4. Щелкните по кнопке Typeset при установленном компиляторе pdfLaTeX. Если вы работаете в редакторе TeXworks, то вместо pdfLaTeX выберите BibTeX в спускающемся меню справа от кнопки Typeset, затем
щелкните по этой кнопке. Если вы работаете в каком-либо другом редакторе, то используйте его функцию BibTeX или, находясь в каталоге
текущего документа, в командной строке введите:
bibtex documentname

5. Снова выберите компилятор pdfLaTeX и щелкните по кнопке Typeset.
Результат показан на рис. 8.8.

Recommended texts
To study TEX in depth, see [Knu86]. For writing math texts, see [Knu89].

References
[Knu86] D.E. Knuth. The TEXbook. Addison Wesley, 1986.
[Knu89] D.E. Knuth. Typesetting concrete mathematics. TUGboat, 10(1):31–
36, April 1989.

Рис. 8.8  Список литературы,
созданный на основе файла базы данных

Мы создали текстовый файл, содержащий все элементы списка использованной литературы (библиографии). В следующем подразделе мы более
подробно рассмотрим формат этого списка. В этом документе выбран другой стиль alpha, который сортирует элементы по имени автора и использует
в качестве метки комбинацию сокращенных полей author и year. Затем мы
сообщаем LaTeX о необходимости загрузки файла библиографии с именем
example. Расширение .bib добавляется автоматически.
Далее вызывается внешняя программа BibTeX. Она узнает из .tex-файла
примера о том, что необходимо обработать базу данных example.bib. Из этого
.bib-файла BibTeX создает файл с расширением .bbl, содержащий окружение
LaTeX thebibliography и окончательно оформленные элементы списка.
Для завершения процесса необходимо выполнить компиляцию два раза,
чтобы обеспечить корректность всех перекрестных ссылок.
Несмотря на то что требуются некоторые дополнительные шаги для генерации списка использованной литературы, описанная выше методика об-

Создание списка использованной литературы  191

ладает и преимуществами – не нужно настраивать во всех подробностях
каждый элемент списка. Можно с легкостью переключаться между стилями.
Кроме того, в дальнейшем можно многократно использовать тот же .bibфайл.
Поэтому формат файла .bib заслуживает более подробного рассмотрения.
Он поддерживает различные типы элементов, такие как book и article. Кроме
того, эти элементы содержат такие поля, как, например, author, title и year.
Сначала рассмотрим поддерживаемые поля, потом обсудим различные типы
элементов.

Подробное описание полей элемента BibTeX
Ниже приведен список стандартных полей. Некоторые из них используются
практически всегда, другие – гораздо реже. Мы просто перечислим их в алфавитном порядке в соответствии с документацией BibTeX:
  address – обычно это адрес издательства. По крайней мере, для небольших издательств эта информация может оказаться полезной;
  annote – аннотация, не используемая стандартными стилями библиографических списков. Другие стили или макрокоман­ды могут использовать ее;
  author – имя автора (или имена нескольких авторов);
  booktitle – название книги, если вы ссылаетесь на ее часть (цитируете
ее). Вместо этого поля можно использовать title;
  chapter – номер главы;
  crossref – ключ элемента (записи) базы данных, на который создается
перекрестная ссылка;
  edition – редакция (первая, вторая и т. п.) книги. Обычно начинается
с заглавной буквы;
  editor – имя редактора (или имена нескольких редакторов);
  howpublished – способ издания, особенно если он необычный. Первое
слово начинается с заглавной буквы;
  institution – здесь можно указать организацию-спонсора;
  journal – название журнала. Здесь можно использовать общепринятые
сокращения;
  key – используется для сортировки в алфавитном порядке, перекрестных ссылок и пометки, если информация об авторе отсутствует. Не
следует путать это поле с ключом key, используемым в коман­де cite,
который соответствует начальной части элемента;
  month – месяц, в котором работа была опубликована или написана, если
она пока еще не опубликована. Обычно используется трехбуквенная
аббревиатура;
  note – любая дополнительная полезная информация. Первое слово начинается с заглавной буквы;
  number – номер журнала или другого типа серийного издания;
  organization – здесь можно указать организацию-спонсора;
  pages – номер страницы или диапазон номеров страниц, например 12–
18 или 22+;

192  Формирование оглавления и списков ссылок
  publisher – название издательства;
  school – здесь можно указать название учебного заведения, в котором
был написан документ;
  Series – название серии книг или номер тома в многотомном издании;
  title – название работы;
  type – тип публикации;
  volume – том журнала или книги в многотомном издании;
  year – год публикации или год, в котором была написана работа, если
она пока еще не опубликована. В общем случае используется четырехзначное число, например 2010.
Разрешается использовать любые поля, возможно, поддерживаемые другими стилями, но игнорируемые стандартными.
С документацией по BibTeX можно ознакомиться, если ввести в командной строке texdoc bibtex или на сайте https://texdoc.org/pkg/bibtex.

Ссылки на ресурсы интернета
В наше время часто используются ссылки на онлайновые ресурсы. Для запи­
си адресов интернета в поля BibTeX предназначена коман­да url из пакета
url или hyperref, например:
howpublished = {url{https://latex.org}}

Некоторые стили предоставляют поле url, неявно подразумевающее форматирование содержимого как URL, так что в этом случае не требуется применение коман­ды url.

Описание типов элементов (записей) BibTeX
Сначала вы должны решить, какой тип элемента (записи) хотите добавить,
и только после этого можно заполнять поля. Различные типы могут поддерживать разные поля. Некоторые поля являются обязательными, другие – необязательные, их можно пропускать, а кроме того, существуют и такие поля,
которые просто игнорируются, если выбранный стиль их не поддерживает.
Обычно имя элемента соответствует его смыслу. Стандартные типы элементов (записей) и их обязательные и необязательные поля, взятые из документации по BibTeX, перечислены в табл. 8.1.
Более подробно о ссылках BibTeX можно узнать, если ввести в командной
строке:
texdoc bibtex

Также можно посетить сайт: https://texdoc.org/pkg/bibtex.
Если не найден подходящий элемент, выбирайте misc. Для определения
типа регистр букв не имеет значения, т. е. @ARTICLE интерпретируется точно
так же, как @article. В приведенном ниже примере показана общая форма
элементов (записей) базы данных:

Создание списка использованной литературы  193
@entrytype{keyword,
fieldname = {field text},
fieldname = {field text},

}

Таблица 8.1. Типы элементов и поля библиографической базы данных BibTeX
Тип элемента
(записи)

article

Обязательные поля

Необязательные поля

booklet

author, title, journal, year
author или editor, title,
publisher, year
title

volume, number, pages, month, note
volume или number, series, address,
edition, month, note
author, howpublished, address, month,
year, note

conference

author, title, booktitle, year

editor, volume или number, series, pages,
address, month, organization, publisher, note

manual

title

book

mastersthesis

misc
phdthesis

proceedings
techreport
unpublished

author, organization, address, edition,
month, note
type, address, month, note
author, title, school, year
нет
author, title, howpublished, month,
year, note
author, title, school, year
type, address, month, note
title, year
editor, volume или number, series, address,
month, organization, publisher, note
author, title, institution, year type, number, address, month, note
month, year
author, title, note

Часть field text необходимо заключить в фигурные скобки. Вместо них
также поддерживаются прямые двойные кавычки «field text». Для чисел
фигурные скобки можно опустить.
Некоторые стили изменяют заглавные буквы, что может привести к появлению нежелательных букв нижнего регистра. Для защиты букв или слов
от перевода в нижний регистр возьмите букву или слово в дополнительные
фигурные скобки. Более предпочтительно применять этот прием к слову, а не
к отдельной букве для сохранения лигатур и улучшения интервалов. Например, {WAL} будет выглядеть лучше, чем {W}AL, потому что в стандартном потоке текста LaTeX сдвигает букву A ближе к предшествующей W. Разделяющие
фигурные скобки затрудняют применение микротипографских улучшений,
выполняемых LaTeX.

Выбор стиля библиографического списка
Стандартные стили перечислены ниже:
  plain – для меток используются арабские числа, сортировка выполняется по именам авторов. Числа записываются в квадратных скобках
точно так же, как они выглядят в коман­де cite;
  unsrt – сортировка не выполняется. Все элементы выглядят так, как на
них ссылаются в тексте. В остальном стиль похож на plain;

194  Формирование оглавления и списков ссылок
  alpha – сортировка выполняется в алфавитном порядке по именам авторов. Метки представляют собой сокращения имен авторов, объединенных с годом публикации. Здесь также используются квадратные
скобки;
  abbrv – стиль похож на plain, но имена и другие поля элементов записываются в сокращенном виде. Этот стиль должен быть выбран после
коман­ды начала документа begin{document}, но перед коман­дой bibliography. Можно поместить коман­ду bibliographystyle прямо перед
bibliography, чтобы они всегда находились рядом.
В различных дистрибутивах TeX и в интернете доступно гораздо больше
стилей. Например, пакет natbib предоставляет стили и возможности ссылаться (цитировать) по превосходно организованной схеме автор–год. Кроме
того, этот пакет добавляет поля, например ISBN ISSN и URL.
Вы можете скачать пакет natbib и попробовать применить его стили plainnat, abbrvnat и unsrtnat, например так:
usepackage{natbib}
bibliographystyle{plainnat}

Эти строки исходного кода должны изменить рассматриваемый здесь пример следующим образом:
  natbib заменяет реализацию коман­ды cite и предоставляет ее вариа­
ции, главная цель которых – поддержка ссылок типа автор–год. Это
работает с большинством других доступных стилей;
  natbib предоставляет коман­ду цитирования (ссылки) citet для ссылок
в тексте и citep для ссылок в скобках. Существуют варианты со звездочкой, которые выводят полный список авторов и принимают необязательные аргументы, позволяющие добавлять текст перед и пос­ле
ссылки.
Изучите документацию, если хотите воспользоваться всеми преимущест­
вами этого превосходного пакета. Как обычно, в командной строке введите
texdoc natbib или посетите сайт https://texdoc.org/pkg/natbib.
Пакет biblatex предоставляет полную замену реализации библиографических функциональных возможностей, предлагаемых BibTeX и LaTeX. Для
использования biblatex не требуется изучение языка BibTeX, потому что он
работает с программой biber, которая заменяет BibTeX. В книге «LaTeX Cookbook», глава 7 «Contents, Indexes, and Bibliographies», вы можете изучить по­
дробно описанный пошаговый пример, в котором используются пакет biblatex и программа biber.

Список ссылок без цитирования
BibTeX берет из базы данных только те ссылки, которые цитируются в тексте, и выводит их. Но вы можете определить ключи для ссылок, которые не
должны появляться в тексте. Просто напишите приведенную ниже коман­ду
для отдельной ссылки:
nocite{key}

Изменение заголовков  195

Или добавьте к полному списку базы данных следующую коман­ду:
nocite{*}

Не забудьте удалить nocite{*} в окончательной версии документа, если
вам не нужны в списке использованной литературы ссылки, которые никогда
не цитируются в документе.
Теперь, когда мы знаем, как создаются оглавления, таблицы ссылок, предметные указатели и списки литературы, в конце главы рассмотрим подробнее, как они настраиваются.

Изменение заголовков
Если в примере на рис. 8.1 вам не нравится заголовок Contents, то его можно
легко изменить. LaTeX хранит текст заголовка в тексте макрокоман­ды contentsname. Просто переопределите эту коман­ду, как показано ниже:
renewcommand{contentsname}{Table of Contents}

Ниже приведен список подобных макрокоманд и соответствующие значения по умолчанию (в скобках приведены значения для русифицированного
варианта):
  contentsname: Contents (Оглавление);
  listfigurename: List of figures (Список иллюстраций);
  listtablename: List of tables (Список таблиц);
  bibname: Bibliography (Список литературы) (в классах book и report);
  refname: References (Ссылки) (в классе article);
  indexname:Index (Предметный указатель).
Кроме того, как я обещал, привожу список других макрокоманд для именования объектов, используемых в LaTeX, с соответствующими значениями
по умолчанию (в скобках приведены значения для русифицированного варианта):
  figurename: Figure (Рис.);
  tablename: Table (Таблица);
  partname: Part (Часть);
  chaptername: Chapter (Глава);
  abstractname: Abstract (Аннотация);
  appendixname: Appendix (Приложение).
В действительности это не вызывает удивления. Использование макрокоманд именования особенно удобно, если вы пишете на языке, отличном
от английского. Например, пакет babel принимает параметр, определяющий
язык документа, и переопределяет все перечисленные выше макрокоман­ды
именования в соответствии с выбранным языком.
Но эти коман­ды также полезны при выборе сокращенных имен, например Fig., или других слов и словосочетаний, например Appendices вместо
Appendix.

196  Формирование оглавления и списков ссылок

Резюме
В этой главе рассматривались многочисленные типы списков. В частности,
мы узнали все подробности о создании и настройке оглавлений, списков
иллюстраций и таблиц, а также о формировании предметного указателя,
ссылающегося на определенную информацию с по­мощью ключевых слов
и словосочетаний, и о создании списков литературы как вручную, так и с использованием библиографической базы данных.
Эти списки направляют читателя к искомой информации. Они служат
не только для перечисления и аннотирования. Именно поэтому заголовки
спис­ков иллюстраций и таблиц обычно не включаются в оглавление, так как
они следуют прямо за ним. Иногда даже выдвигается странное требование:
включение в оглавление самого себя. Если вы не уверены в дизайне или
в корректности требований, то найдите качественно сверстанную книгу по
вашей тематике и посмотрите, как должны выглядеть оглавления, списки
ссылок и предметные указатели.
В следующей главе мы подробно рассмотрим оформление научных текс­тов.

Глава

9
Создание
математических
формул

В начале этой книги в главе 1 «Начинаем работу с LaTeX» было сказано, что
LaTeX обеспечивает превосходное качество верстки математических формул и выражений. Пришло время подтвердить это высказывание на практике. После изучения данной главы вы сможете писать правильно и красиво
оформленные математические (и научные) тексты.
Для того чтобы воспользоваться всеми преимуществами верстки математических формул LaTeX, необходимо рассмотреть следующие темы:
  создание простых формул;
  верстка многострочных формул;
  использование обширного набора математических символов;
  создание математических структур.
Это очень большой материал – пора приниматься за дело.

Технические требования
Вы можете использовать установленную систему LaTeX на локальном компью­
тере или редактировать и компилировать все примеры исходного кода в режиме онлайн на веб-странице книги: https://latexguide.org/chapter-09.
Исходный код примеров доступен в репозитории GitHub: https://github.
com/PacktPublishing/LaTeX-Beginner-s-Guide-2nd-Edition-/tree/main/Chapter_09_-_Writing_Math_Formulas.
В этой главе используются следующие пакеты: amsmath, amssymb, geometry,
latexsym и upgreek.
Кроме того, будут кратко описаны такие пакеты: amsthm, dsfont, graphicx,
mathtools, ntheorem, siunitx, xits и zapfino.
Дополнительные примеры, связанные с темой этой главы, можно найти
в книге «LaTeX Cookbook», глава 10 «Advanced Mathematics», вместе с компилируемым исходным кодом примеров на веб-сайте книги: https://latexcookbook.net/chapter-10.

198  Создание математических формул

Создание простых формул
LaTeX предлагает три режима написания документа:
  режим Paragraph (с абзацами): текст представляет собой верстку
в виде последовательности слов, размещенной в строках, абзацах и на
страницах. Этот режим использовался во всех предыдущих главах;
  режим Left-to-right (слева направо): текст представляет собой последовательность слов, но LaTeX выполняет его верстку слева направо без
разрывов строк. Например, аргумент коман­ды mbox будет сверстан
в этом режиме, потому что mbox запрещает перенос слов;
  режим Math (математический): здесь LaTeX интерпретирует буквы
как математические символы. Именно поэтому они отображаются
курсивом – это общепринятый практический прием для переменных.
Огромное количество символов может использоваться только в математическом режиме. Это символ квадратного корня, суммы, символы отношений, математические знаки препинания (штрихи), стрелки
и разнообразные разделители, такие как квадратные и фигурные скобки. LaTeX игнорирует пробельные символы между буквами и символами. Но размещение пробельных символов зависит от типа символа – пробелы вокруг знаков отношений отличаются от пробелов при
открывающих и закрывающих разделителях. Для всех математических
выражений требуется этот режим.
Теперь мы должны впервые войти в математический режим.
Наш первый математический текст будет связан с решением квадратных
уравнений. Мы создадим формулы с константами, переменными, надстрочными символами для обозначения степеней и подстрочными символами для
решений. Сама запись решения требует использования символа квадратного
корня. Наконец, мы используем перекрестные ссылки для формул. Это достаточно трудная работа, поэтому разделим ее на простые шаги.
1. Начните новый документ. Сейчас нам не нужны никакие пакеты:
documentclass{article}
begin{document}
section*{Quadratic equations}

2. Запишите квадратное уравнение с соответствующими условиями. Для
этого используйте окружение equation. Небольшие математические
фрагменты в тексте возьмите в круглые скобки с префиксами – обратными слешами – ( и ):
The quadratic equation
begin{equation}
label{quad}
ax^2 + bx + c = 0,
end{equation}
where ( a, b ) and ( c ) are constants and
( a neq 0 ), has two solutions for the variable
( x ):

Создание простых формул  199

3. Используйте другую формулу для решений. Команда для записи символа квадратного корня sqrt. Команда для записи выражения в виде
дроби frac:
begin{equation}
label{root}
x_{1,2} = frac{-b pm sqrt{b^2-4ac}}{2a}.
end{equation}

4. Введем выражение для дискриминанта и рассмотрим случай его равенства нулю. Для вывода уравнения без номера окружим эту формулу
символами [ и ]:
If the emph{discriminant} ( Delta ) with
[
Delta = b^2 — 4ac
]
is zero, then the equation (ref{quad}) has a double
solution:
(ref{root}) becomes
[
x = — frac{b}{2a}.
]
end{document}

5. Щелкните по кнопке Typeset для компиляции документа. При первом
проходе ссылки на формулы не созданы, поэтому выглядят так: (?).
Скомпилируйте документ еще раз, и LaTeX создаст необходимые ссылки. Теперь документ выглядит так, как показано на рис. 9.1.

Quadratic equations
The quadratic equation
ax2 + bx + c = 0,

(1)

where a, b and c are constants and a ̸= 0, has two solutions for the variable x:

−b ± b2 − 4ac
x1,2 =
.
(2)
2a
If the discriminant ∆ with
∆ = b2 − 4ac
is zero, then the equation (1) has a double solution: (2) becomes
x=−

b
.
2a

Рис. 9.1  Пример математического текста

Как уже было отмечено в главе 1 «Начинаем работу с LaTeX», создание
математических формул во многом похоже на программирование. Мы вы-

Powered by TCPDF (www.tcpdf.org)

200  Создание математических формул
полняем компоновку формул из команд. Существуют коман­ды с аргументами, такие как квадратные корни и дроби, и простые коман­ды для символов,
например для букв греческого алфавита. Большинство символов должны находиться в математическом окружении, такие символы не работают в обычном тексте. Но эта глава поможет вам овладеть всеми секретами создания
математических формул, а результаты оправдают усилия, затраченные на
обучение.
Окружение equation создало отображаемую формулу. Эта формула отцентрирована по горизонтали, и LaTeX добавил некоторое пространство по
вертикали до и после нее. Кроме того, формулы последовательно пронумерованы.
Но в действительности блоки [ … ] и ( … ) также являются окружениями. Рассмотрим их свойства более подробно в следующих подразделах.

Включение математических выражений в текст
LaTeX предоставляет математическое окружение для включения в текст формул и выражений:
begin{math}
expression
end{math}

Указывать это окружение для каждого небольшого выражения или отдельного символа весьма утомительно, поэтому LaTeX предлагает псевдоним
(алиас), который делает то же самое:
(
expression
)

Это выражение также можно записать без разрывов строки: ( expression ).
Третий способ – использование сокращенной формы, пришедшей из TeX:
$ expression $.
Недостаток последнего способа – одинаковые коман­ды начала и окончания математического окружения, что может с легкостью приводить к ошибкам. Но такую форму гораздо проще вводить вручную, и, возможно, по этой
причине она остается достаточно широко распространенной среди пользователей LaTeX.
Запись формул в строке текста экономит пространство на странице и позволяет создавать описания в свободной форме. Поэтому такая форма рекомендуется для включения коротких математических выражений в текст.

Вывод формул
Для отдельно выводимых формул, которые должны быть выровнены по цент­
ру, LaTeX предоставляет окружение displaymath:

Создание простых формул  201
begin{displaymath}
expression
end{displaymath}

Действие этого окружения заключается в том, что после завершения абзаца за ним следует некоторое вертикальное пространство, затем выводится формула, выровненная по центру, после которой снова вставляется вертикальное пустое пространство. Поскольку это математическое окружение
принимает на себя организацию пустого пространства, не нужно оставлять
пустые строки до и после него. Это может привести к созданию дополнительного пространства по вертикали из-за лишних разрывов абзацев.
Кроме того, для этого окружения существует сокращенная форма. Для
нее используются квадратные скобки по аналогии с круглыми, описанными
в предыдущем подразделе:
[
expression
]

В этом случае размещение сокращенных команд [ и ] на отдельных строках повышает удобство чтения исходного кода.
Не рекомендуется использовать аналогичную коман­ду более низкого
уровня TeX $$ expression $$, которую можно весьма часто встречать для обозначения отдельно выводимых формул, так как в среде LaTeX это приводит
к проблемам, например к некорректному размещению вертикального пространства.
Стиль вывода формул в отдельном окружении является более заметным –
они выровнены по центру, до и после них размещено дополнительное пространство. Выбор этого стиля является оптимальным решением для создания
текста, более удобного для чтения.
Далее в этой главе во всех фрагментах исходного кода будет использоваться математический режим. Мы будем либо явно использовать математическое окружение, либо
предполагать, что уже находимся в математическом режиме для коротких фрагментов исходного кода.

Нумерованные формулы
Вообще говоря, уравнения и формулы могут быть пронумерованы. Но это
применимо только к отдельно выводимым формулам. За нумерацию отвечает окружение equation:
begin{equation}
label{key}
expression
end{equation}

Это окружение похоже на displaymath, но в нем выполняется нумерация.
Номер выводится в круглых скобках справа от формулы, как можно было
видеть на рис. 9.1.

202  Создание математических формул

Добавление подстрочных и надстрочных
элементов
Поскольку в формулах часто встречаются степени и индексы, для их форматирования существуют удобные лаконичные коман­ды.
Символ подчеркивания _ создает индекс или подстрочный элемент:
{expression}_{subscript}

Символ карет ^ создает степень или надстрочный элемент:
{expression}^{superscript}

Здесь можно видеть, что для определения соответствующей части выражения используются фигурные скобки.
Подстрочные и надстрочные элементы могут быть вложенными. Если они
используются в одном выражении, то порядок символов ^ и _ не имеет значения. Для одиночных букв, чисел и прочих символов фигурные скобки можно
не указывать. Рассмотрим следующий пример:
[ x_1^2 + x_2^2 = 1, quad 2^{2^x} = 64 ]

Итоговый вывод этого исходного кода показан на рис. 9.2.
x21 + x22 = 1,

x

22 = 64

Рис. 9.2  Подстрочные и надстрочные элементы в формулах

Обратите внимание: для степени более высокого уровня использован
шрифт меньшего размера, чем для степени более низкого уровня. При выводе вложенных подстрочных и надстрочных элементов размер шрифта внут­
ренних элементов уменьшается.

Использование операторов
Тригонометрические, логарифмические и прочие аналитические и алгебраи­
ческие функции, как правило, записываются прямыми буквами латинского
алфавита. В общем случае простой ввод log может выглядеть как произведение трех переменных: l, o и g. Существуют специальные коман­ды для многих
часто используемых функций, или так называемых операторов. Ниже приведен список таких команд в алфавитном порядке:
arccos, arcsin, arctan, arg, cos, cosh, cot, coth, scs, deg, det, dim, exp,
gcd, hom, inf, ker, lg, lim, liminf, limsup, ln, log, max, min, Pr, sec,
sin, sinh, sup, tan, tanh

Создание простых формул  203

Функцию получения остатка при целочисленном делении можно записать
двумя способами – применяя bmod для бинарного отношения или используя
pmod{argument} для выражения вычисления остатка в круглых скобках.
Некоторые операторы поддерживают подстрочные элементы, которые
в отдельно выводимых формулах размещаются под оператором, как показано ниже:
[ lim_{n=1, 2, ldots} a_n qquad max_{x

Укажите регион, чтобы мы точнее рассчитали условия доставки

Начните вводить название города, страны, индекс, а мы подскажем

Например: 
Москва,
Санкт-Петербург,
Новосибирск,
Екатеринбург,
Нижний Новгород,
Краснодар,
Челябинск,
Кемерово,
Тюмень,
Красноярск,
Казань,
Пермь,
Ростов-на-Дону,
Самара,
Омск

Home » LaTeX: руководство для начинающих [ШШтефан Коттвиц] (pdf)

ШШтефан Коттвиц   (перевод: А. В. Снастин)

Программы  

LaTeX: руководство для начинающих (pdf) Добавлена: 27.01.2023 Версия: 1.0.
Дата создания файла: 2022-10-30
ISBN: 978-5-93700-123-8
Издательство: ДМК Пресс
Город: Москва

Поделиться:

  (ссылка для форума)  
  (ссылка для блога)  
  (QR-код книги)  

Аннотация

LaTeX — система верстки с открытым исходным кодом для набора и оформления текста, которая позволяет создавать печатные документы и файлы PDF профессионального качества. Трудности в освоении столь мощного и сложного инструмента поначалу могут обескуражить пользователя. Эта книга упрощает начало работы с LaTeX: вашему вниманию предлагается множество пошаговых примеров, которые помогут быстро достичь ощутимых результатов. Вы узнаете, как создавать превосходно отформатированные тексты и макеты страниц, профессионально выглядящие таблицы, внедрять в документ изображения, записывать громоздкие математические формулы, управлять документами со сложной структурой. Вы также научитесь в полной мере использовать макросы и стили, чтобы не выполнять лишнюю работу по набору и оформлению текста.
Издание предназначено широкому кругу читателей, желающих научиться профессиональной верстке любых текстовых материалов: статей, диссертаций, книг и др.

Рекомендации:

эту книгу рекомендовали 0 пользователей.
Прежде чем рекомендовать книгу, хорошо подумайте. Рекомендация — это высшая оценка, которую вы можете выставить книге. 10 по 5-балльной шкале.

𝌆𝌆𝌆

Общее оформление документа
📈📊 Изображения в LaTeX
📰📰 Таблицы

h

Явное указание места

ABC

Выделение текста в LaTeX

📏📐 Выравнивание текста в LaTeX
∜⅘

Набор формул в LaTeX

AB

Цветной текст в LaTeX

💻💻

Как компилировать LaTeX

∏∑

Математические символы LaTeX

ΨΩ

Греческие символы в LaTeX

Комментарии в LaTeX

№№

Нумерация страниц LaTeX

Конвертация LaTeX в Word

Примеры

📚📖

Литература по LaTeX

Пособия по LaTeX

FAQ: решение проблем

📱🎥

Видеоуроки LaTeX

🖽🖽

Преобразование LaTeX в HTML

Первые шаги к Латеху

Скачиваем и устанавливаем
WinEdt +
MikTex
или ставим
Texmaker

Общее оформление документа

Начинается каждый полноценный документ с объявления типа документа (например article),
размера шрифта и других атрибутов.

documentclass[12pt,cmcyralt]{article}

Далее нужно подключать различные пакеты, без них мало что можно будет сделать.

Если Вы читаете эту статью со смартфона, имейте в виду, что никаких переносов делать не надо. Пишите
все команды слитно.

Основные теги LaTeX

usepackage
[utf8]{inputenc}
Задаёт кодировку utf-8
usepackage
[cp1251]{inputenc}
Задаёт кодировку cp1251 (если utf-8 вам не подходит)
usepackage
[english, russian
]{babel}
Подключает языки
usepackage
{amsmath}
Подключает математический пакет
usepackage
{amsfonts}
Математические шрифты
usepackage
{graphicx}
Для графики
usepackage
{color}
Для цветного текста
usepackage
{alltt}
Позволяет писать текст, который интерпретируется буквально (включая несколько пробелов подряд.
defbe{
begin
{equation}}
Определяет новую функцию — вместо того, чтобы писать всегда
begin{equation} достаточно написать
be
defee{
end
{equation}}
Aналогично для закрывания тега be

inputencoding

{cp1251}
Кодировка
begin
{document}
Начинаем документ.
input titlepage Вставляем титульный лист. Советую написать его отдельно чтобы не сбивать нумерацию страниц.
Хранить нужно в той же папке (файл titlepage.tex).

Во вставляемых листах не нужно отдельно писать documentclass и прочее, по логике это просто
кусок текста, который вставляется в конечную страницу.

tableofcontents Вставляет автоматически сгенерированное оглавление. (каждый раз, когда тегом section
или subsection или subsubsection вводится новая глава LaTeX запоминает это и потом сам создает оглавление)
section
{Введение}
Первая глава будет называться «Введение»
subsection
{Состояние ядерной энергетики в мире}
Подпункт первой главы
end{document} Заканчиваем документ

Как вставить изображение LaTeX

Необходимый минимум знаний

Изображения нужно предварительно конвертировать в формат .eps.

Это означает, что
.jpg, gif, .png и другие форматы работать не будут.

Про то как конвертировать в eps c помощью ImageMagick вы можете прочитать в моей статье

jpg и png в eps

Также конвертировать в eps можно с помощью
GIMP и другими
способами

Добавление изображений в LaTeX

usepackage
{graphicx}
Не забываем подключить в начале файла пакет для графики
begin
{figure}[h!]
Вставляем изображение. [h!]
говорит о том что мы хотим картинку в этом месте (работает крайне своеобразно,
советую после картинок вставлять тег clearpage)

В разделе

Пособия по LaTeX

можно найти ссылки на подробное
описание управления плавающими объектами (изображениями, таблицами)

centering Выравниваем по центру
includegraphics [width=1
textwidth]
{pic1}\
Собственно вставляем график (файл изображения лежит в той же папке и называется
pic1.eps , но eps писать не нужно.

Не забывайте конвертировать изображения.

caption
{Название изображения
номер один.cite{L1}} label{fig:pic1}
Название графика и ссылка на него.

Чтобы где-то сослаться на этот график нужно будет написать
ref{fig:pic1} ;cite{L1}
— это ссылка на первую книгу из списка литературы

ref{fig:pic1} Ссылка на картинку pic1

Дополнительная информация

Для удобства изображения можно хранить в отдельных каталогах. Например, по отдельному каталогу на
каждую главу диплома. Все каталоги нужно перечислить, для того чтобы LaTeX смог их найти.

graphicspath{{images-introduction}{images-chapter-one}{images-chapter-two}{images-chapter-three}}

Два изображения в ряд

documentclass{article}
usepackage{lipsum}
usepackage{mwe}

begin{document}
Два изображения в ряд:

lipsum

begin{figure}
centering
begin{minipage}{0.45textwidth}
centering
includegraphics[width=0.9textwidth]{example-image-a} % первое изображениие
caption{first figure}
end{minipage}hfill
begin{minipage}{0.45textwidth}
centering
includegraphics[width=0.9textwidth]{example-image-b} % второе изображение
caption{second figure}
end{minipage}
end{figure}

lipsum[3]

end{document}

Как вставить таблицу LaTeX

Самое адекватное описание этой операции я нашёл в книге Роженко А.И. «Искусство верстки в LaTeXe»

Добавление таблиц в LaTeX

begin{table} — этот тег начинает таблицу
caption
{Название таблицы
cite{L1}}
— название таблицы и ссылка на источник
label{tab:5-4} — метка, на которую потом можно будет ссылаться
begin{tabular}
{|c|c|c|}
begin{tabular}{|c|c|c|}
— сама таблица начнётся после этого тега; три столбца, выравненные по центру
hline — рисует горизонтальную линию
Страна & число & Мощность (МВт (эл)) \ hline — первая строка
Аргентина & 1 & 692 \ hline — вторая строка
end{tabular} — заканчивает таблицу
end{table} — заканчивает таблицу

Таблица, которая задана с помощью

begin{tabular}{|c|c|c|c|c|c|c|}

Может занять слишком много места и не поместиться по ширине, для того, чтобы избежать этого,
вместо простого выравнивания можно зафиксировать ширину столбцов

begin{tabular}{|p{2cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}

Теперь слишком широкий текст автоматически будет переноситься на следующую строку внутри столбца.

В WinEdt 6.0 есть кнопка, с помощью которой можно быстро вставлять таблицы нужного размера.

Однако, сперва нужно использовать теги

begin{table}caption{Название таблицы}label{tab:1}

и

end{table}

Объединение ячеек

Чтобы объединить столбцы можно воспользоваться тегом

multicolumn{2}{|c|}

— где {2} — это число столбцов, которые нужно объединить {|c|} — выравнивание по центру

Строки объединяются с помощью

multirow{2}{|c|}

Пример таблицы, в которой использованы оба типа объединений

Малага Испания Коста-дель-Соль изображение с сайта www.andreyolegovich.ru

Малага


LaTeX код будет выглядеть примерно так

begin{table}[h!]caption{Коста-дель-Соль}label{tab:1}
begin{tabularx}{textwidth}{|p{3.5cm}|p{1.5cm}|p{0.3cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}}
hline
multirow{2}{*}{ИСП textbf{Андалусия}} & multirow{2}{*}{Малага}
& multirow{2}{*}{textbf{2}}& Билеты & Поезда & Такси & Отели \cline{4-7}
& & & multicolumn{4}{c}{www.heihei.ru}
hlineend{tabularx}
end{table}

Явное указание места

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

[h], [h!], [H]

Параметры [h], [h!], [H] всё более настойчиво будут
рекомендовать LaTeX-у разместить объект именно там, где он и стоит.

Использовать их нужно сразу после объекта, например

begin{table}[h!]caption{HeiHei.ru}

begin{figure}[H]caption{topbicycle.ru}

Когда-то ещё в Windows 7 [H] у меня воспринимается за ошибку
а остальные почти никакого эффекта не дают.
Поэтому после некоторых рисунков приходилось вставлять тег

clearpage

— который воспринимается LaTeXом как конец той области куда можно вставлять объекты, введенные в код выше.

Тег

newpage

такого действия не имеет.

Работа с текстом

Подчёркивание

Подчёркивание текста делается командой

underline

Пример

underline{www.heihei.ru}

Результат

www.heihei.ru

Курсив

Выделение текста курсивом

emph

или

em

Пример

em{www.TopBicycle.ru}

Результат

www.TopBicycle.ru

Жирный шрифт

Жирный текст

textbf

Пример

textbf{www.urn.su}

www.urn.su

Как выровнять текст в LaTeX

Если в титульном листе, или ещё где-то нужно как-то по-особому выровнять текст и вы не можете найти в книгах как это сделать можно попробовать теги

begin{alltt}
end{alltt}

Внутри этих тегов текст будет выглядеть примерно так, как вы его напишете, т.е. пробелы не будут игнорироваться.

begin{alltt}
        Научный руководитель
        д.ф.-м.н. Бор О.Н.
        Рецензент
        д.ф.-м.н. Басов Н.Г.
end{alltt}

Набор формул в LaTeX

Есть два стандартных окружения для ввода формул: Первый и Второй

Если вы не собираетесь ссылаться на формулу в дальнейшем, то
достаточно поставить два знака доллара $ $ , а между ними написать формулу, например:

$ A = 3B$

Такую простую формулу, можно было бы и без окружения написать, но уже для
использования индексов окружение необходимо.

Чтобы LaTeX дал формуле номер (он делает это
автоматически) нужно окружение

begin{equation}
Ваша формула
end{equation}

В этом окружении также можно использовать label{} чтобы ставить метки.

Если ваша формула очень будет занимать несколько строк окружение нужно заменить на:

begin{multline}
Ваша формула
end{multline}

Вместо слов «Ваша формула» нужно написать нужное уравнение.

Как правильно написать уравнение Вы можете узнать из параграфа:

Основные математические операции и символы LaTeX

Как компилировать LaTeX

Windows

Созадйте файл в WinEdt найдите в верхнем меню пункт TeX
и выберите LaTeX (или нажмите

Ctrl + Shift + L)

Получится .dvi файл и если его нужно конвертировать его в .pdf
— нажмите dvi — pdf

Как вариант можно сразу же компилировать в .pdf с помощью кнопки
PDF LaTeX , но этот способ я не рассматриваю как основной.

Компиляция в Linux

Если у вас установлен texlive из терминала .tex можно преобразовать в .pdf следующим образом

pdftex test.tex

Если вы работаете в texmaker нажмите

Tools → PDFLaTeX

или клавишу

F6

Основные математические операции и символы LaTeX

Здесь представлены те операции и символы, которые я использовал при написании диплома.

Перечень специальных символов доступных в LaTeX

^ Верхний индекс
^2 2 Это квадрат
U^{235} U235 Индексы в два и более символа надо заключать в фигурные скобки
_ Нижний индекс
H_2 H2 Например, водород
O_{16} O16 Молекула кислорода
frac{dX_i}{dt} Деление: в первых скобках числитель, во вторых скобках знаменатель
ldots Многоточие
longrightarrow Длинная стрелка слева направо
bar Верхняя черта над символом
dot Точка над символом
sum Большой знак суммы
prodprod Большой знак произведения
Пробел
cdot cdot Знак умножения в виде точки
times times × Знак умножения крест
int_{lower}^{upper}

int_{0}^{Q}

int_{lower}^{upper}

int_{0}^{Q}

Q

0
Интеграл

Больше LaTeX символов здесь

Если непонятно как ставить пробел — изучите этот

пример

Для того, чтобы создавать PDF файл нужно нажать кнопку dvi pdf.
Перед этим желательно скомпилировать пару раз подряд, чтобы все
ссылки расставились правильно.

Больше символов Вы можете найти в статье

Символы LaTeX

Греческий алфавит в LaTeX

Написание греческих букв в LaTeX довольно логично. На английском языке оно вообще практически совпадает с обычным написанием.
Но на всякий случай полезно иметь источник для самопроверки.

Греческий алфавит в написании LaTeX

Русское назва
ние
LaTeX код строч
ной
Вид LaTeX код пропис
ной
Вид
альфа alpha α Alpha Α
бета (вита) beta β Beta Β
гамма gamma γ Gamma Γ
дельта delta δ Delta Δ
эпсилон epsilon ε Epsilon Ε
дзета (зита) zeta ζ Zeta Ζ
эта (ита) eta η Eta Η
тета (фита) theta θ Theta Θ
йота iota ι Iota Ι
каппа kappa κ Kappa Κ
лямбда (лямда) lambda λ Lambda Λ
мю (ми) mu μ Mu Μ
ню (ни) nu ν NU Ν
кси xi ξ Xi Ξ
омикрон omicron ο Omicron Ο
пи pi π Pi Π
ро rho ρ Rho Ρ
сигма sigma σ Sigma Σ
тау (тав) tau τ Tau Τ
ипсилон upsilon υ Upsilon Υ
фи phi φ Phi Φ
хи chi χ Chi Χ
пси psi ψ Psi Ψ
омега omeg ω Omega Ω
varepsilon Varepsilon
vartheta Vartheta
varpi Varpi
varrho Varrho
varsigma Varsigma
varphi Varphi

У эпсилона, теты, пи, ро, сигма, фи есть два варианта написания: обычный и var,
который получается добавлением приставки
var к коду обычного написания. Например Epsilon Varepsilon

Комментировать код LaTeX

Метод, которым можно воспользоваться для комментирования кода в LaTeX
зависит как от Ваших предпочтений, так и от установленных пакетов.

Список различных способов для комментирования кода в LaTeX

% Строка после символа процента не будет
компили- роваться
компилироваться
begin{comment}

Этот текст не отобразится

end{comment}

Если у Вас установлен пакет verbatim или comment
iffalse

Этот текст не отобразится

fi

Если очень хочется, то можно воспользоваться условиями, но нужно внимательно следить за тем как это согласуется с другими условиями. Я сам так никогда не делал.
Ctrl + T Заком- ментировать
Закомментировать
в программе Texmaker
Ctrl + U Раском- ментировать
Раскомментировать
в программе Texmaker

Нумерация страниц в LaTeX

Если вас не устраивает нумерация, проставленная по умолчанию, можно задать номер cтраницы с помощью команды

setcounter{page}{n}

где n — это номер станицы, который вы хотите установить.

В случае, когда отображение номера страницы нежелательно (например
страница номер «0») можно воспользоваться командой

thispagestyle{empty}

Цветной текст в LaTeX

Чтобы иметь возможность менять цвет текста нужно импортировать пакет
xcolor

usepackage{xcolor}

color{blue} После этого синего текста должна быть красная звёздочка color{red} ^*

Результат

После этого синего текста должна быть красная звёздочка*

Как конвертировать LaTeX в Word

Читал про большое количество способов. Многие попробовал. Расскажу, как обычно,
про тот, который у меня заработал.

Сначала конвертируем .tex файл в .pdf

Нужно скачать и установить какой-то софт для конвертации

(не забудьте оплатить его)

Конвертируем .pdf в .docx

У меня это получилось в Windows 7 и довольно кривом Office 10.

В Windows XP и кривом Office 2007 тоже получилось, но с формулами хуже.
Нужно проверить в XP и 10м Office.

Способ
Максима Николаевича
(у меня картинки не перенеслись)

1) Я установил Word (у меня 2007)
2) У меня установлен
Mathtype

3) У меня установлен
GrindEq

4) Для использования crack я копирую соответствующие файлы (из
скачанной папки) в папку с установленными компонентами. (обязательно
приобретите лицензионную версию — не используйте способ Максима)
5) Открываю в ворде tex документ, который хочу конвертировать.
6) Происходит сама конвертация.

Примеры файлов LaTeX

Простейший пример

Пример простого .tex файла — это скорее не для статьи, а просто для проверки работоспособности системы.

begin{document}
section{Energy}
$E = hcdotnu$
end{document}

Пример титульной страницы для диплома

Посмотреть

Простой файл с таблицей

documentclass[12pt]{article}
usepackage[T1, T2A]{fontenc}
usepackage[utf8]{inputenc}
usepackage[russian]{babel}
usepackage{tabularx}

begin{document}
section{Energy}
$E = hcdotnu$

section{Бенальмадена}

Город — курорт на побережье Коста-дель-Соль Средиземного моря в Испании.

begin{table}[h!]caption{Общие сведения}label{tab:1}
begin{tabularx}{textwidth}{|p{0.4cm}|p{2.5cm}|p{1.5cm}|p{5cm}}
hline
Б & Бенальмадена & Испания & www.heihei.ru/Spain/cities/benalmadena/
hline
end{tabularx}
end{table}

end{document}

pdf файл, созданный из этого .tex файла будет выглядеть примерно так

Бенальмадена Испания Коста-дель-Соль изображение с сайта www.andreyolegovich.ru

Бенальмадена


documentclass[12pt]{article}
usepackage[T1, T2A]{fontenc}
usepackage[utf8]{inputenc}
usepackage[russian]{babel}
usepackage{tabularx}
usepackage{multirow}

begin{document}
begin{table}[h!]caption{Коста-дель-Соль}label{tab:1}
begin{tabularx}{textwidth}{|p{3.5cm}|p{1.5cm}|p{0.3cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}} hline
multirow{2}{*}{ИСП textbf{Андалусия}} & multirow{2}{*}{Малага}
& multirow{2}{*}{textbf{2}}& Билеты & Поезда & Такси & Отели cline{4-7}
& & & multicolumn{4}{c}{www.heihei.ru}
hlineend{tabularx}
end{table}
end{document}

Примеры набора формул приведены на странице

LaTeX в HTML
, чтобы не загружать эту.

Литература по LaTeX:

Книг по Латеху довольно много, в том числе и на русском языке. На последовательное освоение верстки в Латехе
по учебнику нужно выделить достаточно много времени, также стоит иметь в виду, что различные темы
освещены в учебниках с разной степенью доступности, а идеального учебника пока что не существует.

Я честно хотел его написать, но пока не осилил.

Перечень книг о LaTeX

Автор Название Ссылка на раздачу
Роженко А.И. Искусство верстки в LaTeX rutracker.org
Львовский С.М. Набор и вестка в LaTeX rutracker.org
Балдин Е.М. Компью- терная
Компьютерная типография LaTeX
rutracker.org
Беляков Н.С. Тех для всех rutracker.org
Столяров А.В. Сверстай диплом красиво: LaTeX за три дня stolyarov.info

Пособия по LaTeX:

LaTeX FAQ: возможные проблемы и способы их решения

LaTeX не распознаёт изображения .eps

Скорее всего после компилляции в LaTeX (Shift + Ctrl +
L) вы нажимаете вместо
кнопки dvi-pdf кнопку PDF LaTeX — нажмите правильную
кнопку =)
т.к. PDF LaTeX это другой способ компилляции, просто так он .eps
распознавать не будет — нужно отдельно установить
epstopdf пакет.

Видеоуроки LaTeX

Для ускорения загрузки этой страницы все видеоуроки перенесены

сюда

Преобразование LaTeX в HTML

О новом релизе утилиты для преобразования LaTeX документов в HTML код
можно прочитать

здесь

Логотип LaTeX

This introductory tutorial does not assume any prior experience of LaTeX but, hopefully, by the time you are finished, you will not only have written your first LaTeX document but also acquired sufficient knowledge and confidence to take the next steps toward LaTeX proficiency.

What is LaTeX?

LaTeX (pronounced “LAY-tek” or “LAH-tek”) is a tool for typesetting professional-looking documents. However, LaTeX’s mode of operation is quite different to many other document-production applications you may have used, such as Microsoft Word or LibreOffice Writer: those “WYSIWYG” tools provide users with an interactive page into which they type and edit their text and apply various forms of styling. LaTeX works very differently: instead, your document is a plain text file interspersed with LaTeX commands used to express the desired (typeset) results. To produce a visible, typeset document, your LaTeX file is processed by a piece of software called a TeX engine which uses the commands embedded in your text file to guide and control the typesetting process, converting the LaTeX commands and document text into a professionally typeset PDF file. This means you only need to focus on the content of your document and the computer, via LaTeX commands and the TeX engine, will take care of the visual appearance (formatting).

Various arguments can be proposed for, or against, learning to use LaTeX instead of other document-authoring applications; but, ultimately, it is a personal choice based on preferences, affinities, and documentation requirements.

Arguments in favour of LaTeX include:

  • support for typesetting extremely complex mathematics, tables and technical content for the physical sciences;
  • facilities for footnotes, cross-referencing and management of bibliographies;
  • ease of producing complicated, or tedious, document elements such as indexes, glossaries, table of contents, lists of figures;
  • being highly customizable for bespoke document production due to its intrinsic programmability and extensibility through thousands of free add-on packages.

Overall, LaTeX provides users with a great deal of control over the production of documents which are typeset to extremely high standards. Of course, there are types of documents or publications where LaTeX doesn’t shine, including many “free form” page designs typically found in magazine-type publications.

One important benefit of LaTeX is the separation of document content from document style: once you have written the content of your document, its appearance can be changed with ease. Similarly, you can create a LaTeX file which defines the layout/style of a particular document type and that file can be used as a template to standardise authorship/production of additional documents of that type; for example, this allows scientific publishers to create article templates, in LaTeX, which authors use to write papers for submission to journals. Overleaf has a gallery containing thousands of templates, covering an enormous range of document types—everything from scientific articles, reports and books to CVs and presentations. Because these templates define the layout and style of the document, authors need only to open them in Overleaf—creating a new project—and commence writing to add their content.

Writing your first piece of LaTeX

The first step is to create a new LaTeX project. You can do this on your own computer by creating a new .tex file; alternatively, you can start a new project in Overleaf.

Let’s start with the simplest working example, which can be opened directly in Overleaf:

documentclass{article}
begin{document}
First document. This is a simple example, with no 
extra parameters or packages included.
end{document}

 Open this example in Overleaf.

This example produces the following output:

You can see that LaTeX has automatically indented the first line of the paragraph, taking care of that formatting for you. Let’s have a closer look at what each part of our code does.

The first line of code, documentclass{article}, declares the document type known as its class, which controls the overall appearance of the document. Different types of documents require different classes; i.e., a CV/resume will require a different class than a scientific paper which might use the standard LaTeX article class. Other types of documents you may be working on may require different classes such as book or report. To get some idea of the many LaTeX class types available, visit the relevant page on CTAN (Comprehensive TeX Archive Network).

Having set the document class, our content, known as the body of the document, is written between the begin{document} and end{document} tags. After opening the example above, you can make changes to the text and, when finished, view the resulting typeset PDF by recompiling the document. To do this in Overleaf, simply hit Recompile, as demonstrated in this brief video clip:

Any Overleaf project can be configured to recompile automatically each time it is edited: click the small arrow next to the Recompile button and set Auto Compile to On, as shown in the following screengrab:

Screengrab showing how to set Auto Compile to On or Off

Having seen how to add content to our document, the next step is to give it a title. To do this, we must talk briefly about the preamble.

The preamble of a document

The screengrab above shows Overleaf storing a LaTeX document as a file called main.tex: the .tex file extension is, by convention, used when naming files containing your document’s LaTeX code.

The previous example showed how document content was entered after the begin{document} command; however, everything in your .tex file appearing before that point is called the preamble, which acts as the document’s “setup” section. Within the preamble you define the document class (type) together with specifics such as languages to be used when writing the document; loading packages you would like to use (more on this later), and it is where you’d apply other types of configuration.

A minimal document preamble might look like this:

documentclass[12pt, letterpaper]{article}
usepackage{graphicx}

where documentclass[12pt, letterpaper]{article} defines the overall class (type) of document. Additional parameters, which must be separated by commas, are included in square brackets ([...]) and used to configure this instance of the article class; i.e., settings we wish to use for this particular article-class-based document.

In this example, the two parameters do the following:

  • 12pt sets the font size
  • letterpaper sets the paper size

Of course other font sizes, 9pt, 11pt, 12pt, can be used, but if none is specified, the default size is 10pt. As for the paper size, other possible values are a4paper and legalpaper. For further information see the article about page size and margins.

The preamble line

is an example of loading an external package (here, graphicx) to extend LaTeX’s capabilities, enabling it to import external graphics files. LaTeX packages are discussed in the section Finding and using LaTeX packages.

Adding a title, author and date to our document requires three more lines in the preamble (not the main body of the document). Those lines are:

  • title{My first LaTeX document}: the document title
  • author{Hubert Farnsworth}: here you write the name of the author(s) and, optionally, the thanks command within the curly braces:
    • thanks{Funded by the Overleaf team.}: can be added after the name of the author, inside the braces of the author command. It will add a superscript and a footnote with the text inside the braces. Useful if you need to thank an institution in your article.
  • date{August 2022}: you can enter the date manually or use the command today to typeset the current date every time the document is compiled

With these lines added, your preamble should look something like this:

documentclass[12pt, letterpaper]{article}
title{My first LaTeX document}
author{Hubert Farnsworththanks{Funded by the Overleaf team.}}
date{August 2022}

To typeset the title, author and date use the maketitle command within the body of the document:

begin{document}
maketitle
We have now added a title, author and date to our first LaTeX{} document!
end{document}

The preamble and body can now be combined to produce a complete document which can be opened in Overleaf:

documentclass[12pt, letterpaper]{article}
title{My first LaTeX document}
author{Hubert Farnsworththanks{Funded by the Overleaf team.}}
date{August 2022}
begin{document}
maketitle
We have now added a title, author and date to our first LaTeX{} document!
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image of a simple document produced in LaTeX

LaTeX is a form of “program code”, but one which specializes in document typesetting; consequently, as with code written in any other programming language, it can be very useful to include comments within your document. A LaTeX comment is a section of text that will not be typeset or affect the document in any way—often used to add “to do” notes; include explanatory notes; provide in-line explanations of tricky macros or comment-out lines/sections of LaTeX code when debugging.

To make a comment in LaTeX, simply write a % symbol at the beginning of the line, as shown in the following code which uses the example above:

documentclass[12pt, letterpaper]{article}
title{My first LaTeX document}
author{Hubert Farnsworththanks{Funded by the Overleaf team.}}
date{August 2022}
begin{document}
maketitle
We have now added a title, author and date to our first LaTeX{} document!

% This line here is a comment. It will not be typeset in the document.
end{document}

 Open this example in Overleaf.

This example produces output that is identical to the previous LaTeX code which did not contain the comment.

Bold, italics and underlining

Next, we will now look at some text formatting commands:

  • Bold: bold text in LaTeX is typeset using the textbf{...} command.
  • Italics: italicised text is produced using the textit{...} command.
  • Underline: to underline text use the underline{...} command.

The next example demonstrates these commands:

Some of the textbf{greatest}
discoveries in underline{science} 
were made by textbf{textit{accident}}.

 Open this example in Overleaf.

This example produces the following output:

Imate showing text formatted in a LaTeX document

Another very useful command is emph{argument}, whose effect on its argument depends on the context. Inside normal text, the emphasized text is italicized, but this behaviour is reversed if used inside an italicized text—see the next example:

Some of the greatest emph{discoveries} in science 
were made by accident.

textit{Some of the greatest emph{discoveries} 
in science were made by accident.}

textbf{Some of the greatest emph{discoveries} 
in science were made by accident.}

 Open this emph example in Overleaf.

This example produces the following output:

Image demonstrating use of the LaTeX emph command

  • Note: some packages, such as Beamer, change the behaviour of the emph command.

Adding images

In this section we will now look at how to add images to a LaTeX document—note that you need to upload images to your Overleaf project.

The following example demonstrates how to include a picture:

documentclass{article}
usepackage{graphicx} %LaTeX package to import graphics
graphicspath{{images/}} %configuring the graphicx package
 
begin{document}
The universe is immense and it seems to be homogeneous, 
on a large scale, everywhere we look.

% The includegraphcs command is 
% provided (implemented) by the 
% graphicx package
includegraphics{universe}  
 
There's a picture of a galaxy above.
end{document}

 Open this image example in Overleaf.

This example produces the following output:

Graphic showing an image imported into a LaTeX document

Importing graphics into a LaTeX document needs an add-on package which provides the commands and features required to include external graphics files. The above example loads the graphicx package which, among many other commands, provides includegraphics{...} to import graphics and graphicspath{...} to advise LaTeX where the graphics are located.

To use the graphicx package, include the following line in your Overleaf document preamble:

In our example the command graphicspath{{images/}} informs LaTeX that images are kept in a folder named images, which is contained in the current directory:

Image showing LaTeX accessing images stored in a folder

The includegraphics{universe} command does the actual work of inserting the image in the document. Here, universe is the name of the image file but without its extension.

Note:

  • Although the full file name, including its extension, is allowed in the includegraphics command, it’s considered best practice to omit the file extension because it will prompt LaTeX to search for all the supported formats.
  • Generally, the graphic’s file name should not contain white spaces or multiple dots; it is also recommended to use lowercase letters for the file extension when uploading image files to Overleaf.

More information on LaTeX packages can be found at the end of this tutorial in the section Finding and using LaTeX packages.

Captions, labels and references

Images can be captioned, labelled and referenced by means of the figure environment, as shown below:

documentclass{article}
usepackage{graphicx}
graphicspath{{images/}}
 
begin{document}

begin{figure}[h]
    centering
    includegraphics[width=0.75textwidth]{mesh}
    caption{A nice plot.}
    label{fig:mesh1}
end{figure}
 
As you can see in figure ref{fig:mesh1}, the function grows near the origin. This example is on page pageref{fig:mesh1}.

end{document}

 Open this image example in Overleaf.

This example produces the following output:

Graphic showing use of figure captions in LaTeX

There are several noteworthy commands in the example:

  • includegraphics[width=0.75textwidth]{mesh}: This form of includegraphics instructs LaTeX to set the figure’s width to 75% of the text width—whose value is stored in the textwidth command.
  • caption{A nice plot.}: As its name suggests, this command sets the figure caption which can be placed above or below the figure. If you create a list of figures this caption will be used in that list.
  • label{fig:mesh1}: To reference this image within your document you give it a label using the label command. The label is used to generate a number for the image and, combined with the next command, will allow you to reference it.
  • ref{fig:mesh1}: This code will be substituted by the number corresponding to the referenced figure.

Images incorporated in a LaTeX document should be placed inside a figure environment, or similar, so that LaTeX can automatically position the image at a suitable location in your document.

Further guidance is contained in the following Overleaf help articles:

  • Positioning of Figures
  • Inserting Images

Creating lists in LaTeX

You can create different types of list using environments, which are used to encapsulate the LaTeX code required to implement a specific typesetting feature. An environment starts with begin{environment-name} and ends with end{environment-name} where environment-name might be figure, tabular or one of the list types: itemize for unordered lists or enumerate for ordered lists.

Unordered lists

Unordered lists are produced by the itemize environment. Each list entry must be preceded by the item command, as shown below:

documentclass{article}
begin{document}
begin{itemize}
  item The individual entries are indicated with a black dot, a so-called bullet.
  item The text in the entries may be of any length.
end{itemize}
end{document}

 Open this example in Overleaf.

This example produces the following output:

An example of bulleted lists in LaTeX

You can also open this  larger Overleaf project
which demonstrates various types of LaTeX list.

Ordered lists

Ordered lists use the same syntax as unordered lists but are created using the enumerate environment:

documentclass{article}
begin{document}
begin{enumerate}
  item This is the first entry in our list.
  item The list numbers increase with each entry we add.
end{enumerate}
end{document}

 Open this example in Overleaf.

This example produces the following output:

An example numbered list produced in LaTeX

As with unordered lists, each entry must be preceded by the item command which, here, automatically generates the numeric ordered-list label value, starting at 1.

For further information you can open this  larger Overleaf project
which demonstrates various types of LaTeX list or visit our dedicated help article on LaTeX lists, which provides many more examples and shows how to create customized lists.

Adding math to LaTeX

One of the main advantages of LaTeX is the ease with which mathematical expressions can be written. LaTeX provides two writing modes for typesetting mathematics:

  • inline math mode used for writing formulas that are part of a paragraph
  • display math mode used to write expressions that are not part of a text or paragraph and are typeset on separate lines

Inline math mode

Let’s see an example of inline math mode:

documentclass[12pt, letterpaper]{article}
begin{document}
In physics, the mass-energy equivalence is stated 
by the equation $E=mc^2$, discovered in 1905 by Albert Einstein.
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image showing math typeset in inline math mode

To typeset inline-mode math you can use one of these delimiter pairs: ( ... ), $ ... $ or begin{math} ... end{math}, as demonstrated in the following example:

documentclass[12pt, letterpaper]{article}
begin{document}
begin{math}
E=mc^2
end{math} is typeset in a paragraph using inline math mode---as is $E=mc^2$, and so too is (E=mc^2).
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image demonstrating content produced using LaTeX inline math mode

Display math mode

Equations typeset in display mode can be numbered or unnumbered, as in the following example:

documentclass[12pt, letterpaper]{article}
begin{document}
The mass-energy equivalence is described by the famous equation
[ E=mc^2 ] discovered in 1905 by Albert Einstein. 

In natural units ($c = 1$), the formula expresses the identity
begin{equation}
E=m
end{equation}
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image showing display mode math in LaTeX

To typeset display-mode math you can use one of these delimiter pairs: [ ... ], begin{displaymath} ... end{displaymath} or begin{equation} ... end{equation}. Historically, typesetting display-mode math required use of $$ characters delimiters, as in $$ ... display math here ...$$, but this method is no longer recommended: use LaTeX’s delimiters [ ... ] instead.

More complete examples

The following examples demonstrate a range of mathematical content typeset using LaTeX.

documentclass{article}
begin{document}
Subscripts in math mode are written as $a_b$ and superscripts are written as $a^b$. These can be combined and nested to write expressions such as

[ T^{i_1 i_2 dots i_p}_{j_1 j_2 dots j_q} = T(x^{i_1},dots,x^{i_p},e_{j_1},dots,e_{j_q}) ]
 
We write integrals using $int$ and fractions using $frac{a}{b}$. Limits are placed on integrals using superscripts and subscripts:

[ int_0^1 frac{dx}{e^x} =  frac{e-1}{e} ]

Lower case Greek letters are written as $omega$ $delta$ etc. while upper case Greek letters are written as $Omega$ $Delta$.

Mathematical operators are prefixed with a backslash as $sin(beta)$, $cos(alpha)$, $log(x)$ etc.
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image showing a range of math typeset in LaTeX

The next example uses the equation* environment which is provided by the amsmath package, so we need to add the following line to our document preamble:

usepackage{amsmath}% For the equation* environment

For further information on using amsmath see our help article.

documentclass{article}
usepackage{amsmath}% For the equation* environment
begin{document}
section{First example}

The well-known Pythagorean theorem (x^2 + y^2 = z^2) was proved to be invalid for other exponents, meaning the next equation has no integer solutions for (n>2):

[ x^n + y^n = z^n ]

section{Second example}

This is a simple math expression (sqrt{x^2+1}) inside text. 
And this is also the same: 
begin{math}
sqrt{x^2+1}
end{math}
but by using another command.

This is a simple math expression without numbering
[sqrt{x^2+1}] 
separated from text.

This is also the same:
begin{displaymath}
sqrt{x^2+1}
end{displaymath}

ldots and this:
begin{equation*}
sqrt{x^2+1}
end{equation*}
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image showing a range of math typeset in LaTeX

The possibilities with math in LaTeX are endless so be sure to visit our help pages for advice and examples on specific topics:

  • Mathematical expressions
  • Subscripts and superscripts
  • Brackets and Parentheses
  • Fractions and Binomials
  • Aligning Equations
  • Operators
  • Spacing in math mode
  • Integrals, sums and limits
  • Display style in math mode
  • List of Greek letters and math symbols
  • Mathematical fonts

Basic document structure

Next, we explore abstracts and how to partition a LaTeX document into different chapters, sections and paragraphs.

Abstracts

Scientific articles usually provide an abstract which is a brief overview/summary of their core topics, or arguments. The next example demonstrates typesetting an abstract using LaTeX’s abstract environment:

documentclass{article}
begin{document}
begin{abstract}
This is a simple paragraph at the beginning of the 
document. A brief introduction about the main subject.
end{abstract}
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image showing an abstract typeset in LaTeX

Paragraphs and new lines

With the abstract in place, we can begin writing our first paragraph. The next example demonstrates:

  • how a new paragraph is created by pressing the «enter» key twice, ending the current line and inserting a subsequent blank line;
  • how to start a new line without starting a new paragraph by inserting a manual line break using the \ command, which is a double backslash; alternatively, use the newline command.

The third paragraph in this example demonstrates use of the commands \ and newline:

documentclass{article}
begin{document}

begin{abstract}
This is a simple paragraph at the beginning of the 
document. A brief introduction about the main subject.
end{abstract}

After our abstract we can begin the first paragraph, then press ``enter'' twice to start the second one.

This line will start a second paragraph.

I will start the third paragraph and then add \ a manual line break which causes this text to start on a new line but remains part of the same paragraph. Alternatively, I can use the verb|newline|newline command to start a new line, which is also part of the same paragraph.
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image showing the creation of paragraphs in LaTeX

Note how LaTeX automatically indents paragraphs—except immediately after document headings such as section and subsection—as we will see.

New users are advised that multiple \ or newlines should not used to “simulate” paragraphs with larger spacing between them because this can interfere with LaTeX’s typesetting algorithms. The recommended method is to continue using blank lines for creating new paragraphs, without any \, and load the parskip package by adding usepackage{parskip} to the preamble.

Further information on paragraphs can be found in the following articles:

  • Paragraphs and new lines
  • How to change paragraph spacing in LaTeX
  • LaTeX Error: There’s no line here to end provides additional advice and guidance on using \.

Chapters and sections

Longer documents, irrespective of authoring software, are usually partitioned into parts, chapters, sections, subsections and so forth. LaTeX also provides document-structuring commands but the available commands, and their implementations (what they do), can depend on the document class being used. By way of example, documents created using the book class can be split into parts, chapters, sections, subsections and so forth but the letter class does not provide (support) any commands to do that.

This next example demonstrates commands used to structure a document based on the book class:

documentclass{book}
begin{document}

chapter{First Chapter}

section{Introduction}

This is the first section.

Lorem  ipsum  dolor  sit  amet,  consectetuer  adipiscing  
elit. Etiam  lobortisfacilisis sem.  Nullam nec mi et 
neque pharetra sollicitudin.  Praesent imperdietmi nec ante. 
Donec ullamcorper, felis non sodales...

section{Second Section}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  
Etiam lobortis facilisissem.  Nullam nec mi et neque pharetra 
sollicitudin.  Praesent imperdiet mi necante...

subsection{First Subsection}
Praesent imperdietmi nec ante. Donec ullamcorper, felis non sodales...

section*{Unnumbered Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  
Etiam lobortis facilisissem...
end{document}

 Open this example in Overleaf.

This example produces the following output:

Image showing sections in LaTeX book document

The names of sectioning commands are mostly self-explanatory; for example, chapter{First Chapter} creates a new chapter titled First Chapter, section{Introduction} produces a section titled Introduction, and so forth. Sections can be further divided into subsection{...} and even subsubsection{...}. The numbering of sections, subsections etc. is automatic but can be disabled by using the so-called starred version of the appropriate command which has an asterisk (*) at the end, such as section*{...} and subsection*{...}.

Collectively, LaTeX document classes provide the following sectioning commands, with specific classes each supporting a relevant subset:

  • part{part}
  • chapter{chapter}
  • section{section}
  • subsection{subsection}
  • subsubsection{subsubsection}
  • paragraph{paragraph}
  • subparagraph{subparagraph}

In particular, the part and chapter commands are only available in the report and book document classes.

Visit the Overleaf article article about sections and chapters for further information about document-structure commands.

Creating tables

The following examples show how to create tables in LaTeX, including the addition of lines (rules) and captions.

Creating a basic table in LaTeX

We start with an example showing how to typeset a basic table:

begin{center}
begin{tabular}{c c c}
 cell1 & cell2 & cell3 \ 
 cell4 & cell5 & cell6 \  
 cell7 & cell8 & cell9    
end{tabular}
end{center}

 Open this example in Overleaf.

This example produces the following output:

Graphic displaying a table typeset in LaTeX

The tabular environment is the default LaTeX method to create tables. You must specify a parameter to this environment, in this case {c c c} which advises LaTeX that there will be three columns and the text inside each one must be centred. You can also use r to right-align the text and l to left-align it. The alignment symbol & is used to demarcate individual table cells within a table row. To end a table row use the new line command \. Our table is contained within a center environment to make it centred within the text width of the page.

Adding borders

The tabular environment supports horizontal and vertical lines (rules) as part of the table:

  • to add horizontal rules, above and below rows, use the hline command
  • to add vertical rules, between columns, use the vertical line parameter |

In this example the argument is {|c|c|c|} which declares three (centred) columns each separated by a vertical line (rule); in addition, we use hline to place a horizontal rule above the first row and below the final row:

begin{center}
begin{tabular}{|c|c|c|} 
 hline
 cell1 & cell2 & cell3 \ 
 cell4 & cell5 & cell6 \ 
 cell7 & cell8 & cell9 \ 
 hline
end{tabular}
end{center}

 Open this example in Overleaf.

This example produces the following output:

Graphic displaying a table typeset in LaTeX containing horizontal and vertical rules

Here is a further example:

begin{center}
 begin{tabular}{||c c c c||} 
 hline
 Col1 & Col2 & Col2 & Col3 \ [0.5ex] 
 hlinehline
 1 & 6 & 87837 & 787 \ 
 hline
 2 & 7 & 78 & 5415 \
 hline
 3 & 545 & 778 & 7507 \
 hline
 4 & 545 & 18744 & 7560 \
 hline
 5 & 88 & 788 & 6344 \ [1ex] 
 hline
end{tabular}
end{center}

 Open this example in Overleaf.

This example produces the following output:

Graphic displaying a table typeset in LaTeX containing horizontal and vertical rules

Tip!

  • Creating tables in LaTeX can be time-consuming so you may want to use the TablesGenerator.com online tool to export LaTeX code for tabulars.

Captions, labels and references

You can caption and reference tables in much the same way as images. The only difference is that instead of the figure environment, you use the table environment.

Table ref{table:data} shows how to add a table caption and reference a table.
begin{table}[h!]
centering
begin{tabular}{||c c c c||} 
 hline
 Col1 & Col2 & Col2 & Col3 \ [0.5ex] 
 hlinehline
 1 & 6 & 87837 & 787 \ 
 2 & 7 & 78 & 5415 \
 3 & 545 & 778 & 7507 \
 4 & 545 & 18744 & 7560 \
 5 & 88 & 788 & 6344 \ [1ex] 
 hline
end{tabular}
caption{Table to test captions and labels.}
label{table:data}
end{table}

 Open this example in Overleaf.

This example produces the following output:

A LaTeX table with a caption

Adding a Table of Contents

Creating a table of contents is straightforward because the command tableofcontents does almost all the work for you:

documentclass{article}
title{Sections and Chapters}
author{Gubert Farnsworth}
date{August 2022}
begin{document}
  
maketitle
  
tableofcontents

section{Introduction}
   
This is the first section.
      
Lorem  ipsum  dolor  sit  amet,  consectetuer  adipiscing  
elit.   Etiam  lobortisfacilisis sem.  Nullam nec mi et 
neque pharetra sollicitudin.  Praesent imperdietmi nec ante. 
Donec ullamcorper, felis non sodales...
       
section*{Unnumbered Section}
addcontentsline{toc}{section}{Unnumbered Section}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  
Etiam lobortis facilisissem.  Nullam nec mi et neque pharetra 
sollicitudin.  Praesent imperdiet mi necante...

section{Second Section}
       
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  
Etiam lobortis facilisissem.  Nullam nec mi et neque pharetra 
sollicitudin.  Praesent imperdiet mi necante...
end{document}

 Open this example in Overleaf.

This example produces the following output:

Graphic showing a table of contents produced by LaTeX

Sections, subsections and chapters are automatically included in the table of contents. To manually add entries, such as an unnumbered section, use the command addcontentsline as shown in the example.

Downloading your finished document

The following brief video clip shows how to download your project’s source code or the typeset PDF file:

More information can be found in the Overleaf help article Exporting your work from Overleaf.

Finding and using LaTeX packages

LaTeX not only delivers significant typesetting capabilities but also provides a framework for extensibility through the use of add-on packages. Rather than attempting to provide commands and features that “try to do everything”, LaTeX is designed to be extensible, allowing users to load external bodies of code (packages) that provide more specialist typesetting capabilities or extend LaTeX’s built-in features—such as typesetting tables. As observed in the section Adding images, the graphicx package extends LaTeX by providing commands to import graphics files and was loaded (in the preamble) by writing

Loading packages

As noted above, packages are loaded in the document preamble via the usepackage command but because (many) LaTeX packages provide a set of options, which can be used to configure their behaviour, the usepackage command often looks like this:

usepackage[options]{somepackage}

The square brackets “[...]” inform LaTeX which set of options should be applied when it loads somepackage. Within the set of options requested by the user, individual options, or settings, are typically separated by a comma; for example, the geometry package provides many options to configure page layout in LaTeX, so a typical use of geometry might look like this:

usepackage[total={6.5in,8.75in},
top=1.2in, left=0.9in, includefoot]{geometry}

The geometry package is one example of a package written and contributed by members of the global LaTeX community and made available, for free, to anyone who wants to use it.

If a LaTeX package does not provide any options, or the user wants to use the default values of a package’s options, it would be loaded like this:

When you write usepackage[...]{somepackage} LaTeX looks for a corresponding file called somepackage.sty, which it needs to load and process—to make the package commands available and execute any other code provided by that package. If LaTeX cannot find somepackage.sty it will terminate with an error, as demonstrated in the following Overleaf example:

documentclass[12pt, letterpaper]{article}
usepackage{somepackage}% a NON-EXISTENT package
begin{document}
This will fail!
end{document}

 Open this error-generating example on Overleaf

This example produces the following output:

Image showing error causes by a missing package

Finding information about packages: CTAN

Packages are distributed through the Comprehensive TeX Archive Network, usually referred to as CTAN, which, at the time of writing, hosts 6287 packages from 2881 contributors. CTAN describes itself as

… a set of Internet sites around the world that offer TEX-related material for download.

You can browse CTAN to look for useful packages; for example:

  • by topic
  • alphabetically (useful if you know the package name)

You can also use the search facility (at the top of the page).

Packages available on Overleaf: Introducing TeX Live

Once per year a (large) subset of packages hosted on CTAN, plus LaTeX-related fonts and other software, is collated and distributed as a system called TeX Live, which can be used to install your own (local) LaTeX setup. In fact, Overleaf’s servers also use TeX Live and are updated when a new version of TeX Live is released. Overleaf’s TeX Live updates are not immediate but take place a few months post-release, giving us time to perform compatibility tests of the new TeX Live version with the thousands of templates contained in our gallery. For example, here is our TeX Live 2022 upgrade announcement.

Although TeX Live contains a (large) subset of CTAN packages it is possible to find an interesting package, such as igo for typesetting Go diagrams, which is hosted on CTAN but not included in (distributed by) TeX Live and thus unavailable on Overleaf. Some packages hosted on CTAN are not part of TeX Live due to a variety of reasons: perhaps a package is obsolete, has licensing problems, is extremely new (recently uploaded) or has platform dependencies, such as working on Windows but not Linux.

New packages, and updates to existing ones, are uploaded to CTAN all year round but updates to TeX Live are distributed annually; consequently, packages contained in the current version of TeX Live will not be as up-to-date as those hosted on CTAN. Because Overleaf’s servers use TeX Live it is possible that packages installed on our servers—i.e., ones available to our users—might not be the very latest versions available on CTAN but, generally, this is unlikely to be problematic.

Introduction: Make a Document in LaTeX — Beginners Guide

Ok, so you’ve decided to take the plunge and learn Latex (the typesetting language, not the plasticy stuff…) but how do you create a document that you can add to and publish pdf’s until your heart is content?

So first things first, you’re going to need some software, there are two cases I’m going to cover, Windows and Linux (Specifically Ubuntu).

Windows

Ok so Windows does not natively support latex like Linux does, so we need to install MikTex, and at the time of writing, it was at version 2.9.

After this you are pretty much set to go, but everything is controlled using the command line and old looking interfaces, so we’ll install a nice front end. There are many to choose from, but I really like Texmaker, again at the time of writing version 4.0.2.

REMEMBER you need the windows version.

Linux (Ubuntu)

Now Ubuntu does natively support latex, so all we have to do is download and install Texmaker, either from that link or in the software centre.

Now that we have installed Texmaker and/or MikTex its time to actually start working!

Step 1: Preamble

Now before we start writing, each document that you make should have its own folder on your computer, in this folder all the files associated with your document will be kept here, such as pictures and whatnot.

When writing in texmaker, its a good idea to seperate your code with comments. Comments are made in latex using the ‘%’ symbol and only cover one line, for example;

%This is a comment
This is not

So then to start a document we need to tell latex what type of document it is by using the following command;

documentclass[ ]{ }

This command and most of the commands in latex are initated using the backslash » character, and generally follow the same template: command[Options]{Parameters}

latex built-in document classes are as follows;

*article
*report
*letter
*book
*proc
*slides

There are others such as a meeting minutes class, but these need googling to understand.

So we need to tell latex several things; paper size, font size, document class, and any other options such as double sided, two columns, etc.

For this instructable we will use a4paper, 11pt font, and report. These are inputted as follows;

documentclass[11pt, a4paper]{report}

All the options go between the square brackets and the document class goes between the parentheses (curly) bracket.

After the document class comes the additional packages that you might need. There are loads of packages, and I’m not going to list any useful ones incase I start an arguement, however a general package I’ve found to be extremely useful is todo notes. To use a package we simply enter them in after the document class line;

usepackage[options]{package name}

so for todo notes;

usepackage{todonotes}

(todo notes is a bad example in hindsight as it doesn’t have any options…) If the package you’re using doesn’t have any options associated with it you can safely delete the square brackets.

Finally the last piece of the preamble puzzle is the start of the document;

begin{document}

this will add a end{document} line underneath it, and your writing should be between these two.

See the picture for a sample preamble.

Step 2: Main Body of the Document

So between the begin{document} and end{document} tags we need to actually start some writing.

How about a title page?

So we need to add the following to the preamble;

author{Your name}
date{today}
title{My title}

Where Your Name, and My Title are changed with whatever you want to add, and today is a command that tells latex to print todays date.

After these are added to the preamble, we simply add the;

maketitle

command between the document tags.

Table of Contents/Figures/Tables

These are easy to add and only require a few lines;

tableofcontents
listoffigures
addcontentsline{toc}{chapter}{List of Figures}
listoftables
addcontentsline{toc}{chapter}{List of Tables}
newpage

So these commands create a table of contents and figures and tables, and adds the latter two to the table of contents.

Now we can actually start typing away,

New document part

To seperate your document into several parts such as beginning, middle, and end we type;

part{Beginning}

which will create a big division between parts.

Chapters

These are easy like parts we simply type;

chapter{My impressive chapter title}

Sections

Now we can further divide the chapters into sections using the following command;

section{Subdivision of my impressive chapter}

subsections

This is getting ridiculous but we can make subsections, and even subsubsections by typing the following;

subsection{A subdivision to my awesome section}

subsubsection{A subsection to my subsection}

So there you go, under eas section/subsection/subsubsection you write your paragraph! Easy?

Step 3: References and Figures

Now the situation may come about when writing a document where we need to refer to a section/figure etc, so we need to know how to do that. It is done by using labels, and then refering to them.

So in my text I need to refer to my awesome chapter, I’ll add a label underneath the chapter line like so;

chapter{Awesome Chapter}
label{chp:awe_chp}

It doesn’t really matter what you call your labels, but I find it helps to stick to the basic principle of saying what the label refers to, then adding a label name, for example;

chp: is for a chapter
sec: for a section
ssec: for a subsection
fig: for a figure
tab: for a table
eq: for an equation

Refering to a label

Now that we have defined our labels, lets refer to them, so in the text we write ref{label name}, for example

The derivation and explanation of this super important equation can be seen in chapter ref{chp:awe_chp}.

This will print the following;

The derivation and explanation of this super important equation can be seen in chapter 2.

Where the reference to a label is replaced by the chapter/section/whatever number.

Figures

Now adding pretty pictures and graphs to your document follows the same procedure, first we add the picture to your document folder.

Now call the picture something easy to remember, such as ‘picture’

Back to latex, we add the following code;

begin{figure}[!th]
centering
includegraphics[scale=1]{picture.png}
caption{An awesome caption to go with my picture}
label{fig:picture}
end{figure}

So the begin{figure} is self-explanatory, however the options in square brackets [!th] are not. These tell latex that I want to put my figure here, no really here. This is how I like to do my figures in latex, but other people like to leave latex to decide the best place to put a figure.

Next the centering command, this centers the figure in the middle of the page width, include graphics is where we say which file to input, and the caption command adds a line of text under the picture.

to refer to this in the text we simply type;

As can be seen in figure ref{fig:picutre}.

Which will be output as;

As can be seen in figure 2.1.

So there ends the quick introduction to latex and how to make a document.

Step 4: Maths

Step 5: Further Reading/Help

Понравилась статья? Поделить с друзьями:
  • Руководство по обслуживанию honda civic 2006
  • Прокуратура чувашской республики руководство
  • Аудио колонка руководство
  • Когда выдаются производственные инструкции персоналу обслуживающие пс
  • Беродуал плюс лазолван для ингаляций инструкция