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

Оформление текста в целом

Рубрикация документа

Работая с LaTeX'ом, разумно делать заголовки и нумерацию разделов документа не вручную, а с помощью специальных команд. Сначала разберем, как ими пользоваться, на примере команды \section.

Команда \section

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

\section {Кое-что о слонах}

Команда \section принимает один обязательный аргумент — название раздела (это же название пойдет в колонтитулы, если таковые предусмотрены классом, и в оглавление, если вы дадите команду " создать оглавление" — см. ниже ). Промежутки между разделами, их нумерация, те же колонтитулы — все это делается автоматически.

Кроме обязательного аргумента, у команды \section предусмотрен и необязательный. Необязательный аргумент идет перед обязательным; в нем записывается вариант заголовка, предназначенный для оглавления и колонтитулов (если класс предусматривает, что заголовок войдет в колонтитул). Обычно этот вариант — просто сокращенный заголовок. Пример:

\section[О слонах]{Кое-что о слонах}"

Необходимость в сокращенном варианте заголовка возникает, когда оказывается, что заголовок по длине не помещается в колонтитул. Это, конечно, будет видно при просмотре; кроме того, при трансляции в этом случае выдается такое сообщение:

Overfull \hbox has occurred while \output was active.

Раздел можно пометить командой \label. После этого команда \ref будет выдавать номер этого раздела. Пример:

\hbadness 2000
\noindent{\Large\bf 3.2\quad Кое-что о слонах}\par
\vskip2.3ex
В этом разделе нашей книги
речь пойдет в основном о
слонах. Слоны
(см. определение в
разд.~3.2) --- большие и сильные
животные
.
\section{Кое-что о слонах}
\label{elephants}
В этом разделе нашей книги
речь пойдет в основном о
слонах. Слоны
(см. определение в
разд.~\ref{elephants})~---
большие и сильные животные.

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

Иногда хочется, чтобы сокращенный вариант заголовка попал только в колонтитул, а в оглавлении был его полный вариант. Как этого добиться, рассказано в "Модификация стандартных классов" .

У команды \section есть вариант "со звездочкой". Команда section* начинает новый раздел, не нумеруя его; на оглавлении и колонтитулах наличие раздела, вводимого этой командой, никак не отразится. У команды \section* предусмотрен только обязательный аргумент.

Какие бывают разделы документа

Теперь перечислим все команды для задания разделов документа, предоставляемые стандартными классами LaTeX'а. Большинство из них работает совершенно аналогично команде \section ; все отличия мы сейчас перечислим.

Для оформления разделов существуют такие команды:

\part \chapter \section \subsection
\subsubsection \paragraph \subparagraph

В этом перечне каждая последующая команда обозначает более мелкий подраздел, чем предыдущая. Следует иметь ввиду, что команда \chapter (глава) в классах proc и article не определена (благодаря этому обстоятельству статью легко переделать в главу книги), остальные команды определены в четырех основных классах.

Стандартные классы обеспечивают нумерацию разделов, при которой более мелкий раздел "подчинен" более крупному: когда, например, начинается новый раздел \section, нумерация разделов \subsection и более мелких начинается заново. Исключением из этого правила является команда \part (" часть"): если часть 2 кончается главой 5, то первая из глав части 3 будет иметь номер 6, а не 1. При модификации стандартных классов можно менять как принцип нумерации разделов, так и вид этих "номеров" на печати (например, если мы захотим, чтобы разделы обозначались последовательными буквами алфавита).

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

В разделах, создаваемых описанными выше командами, первый абзац набирается без абзацного отступа (за исключением самого мелкого раздела \subparagraph ), причем LaTeX устроен таким образом, что создать этот отступ вам так просто не удастся. Если вы хотите, чтобы отступ в первом абзаце все-таки присутствовал, обратитесь к "Модификация стандартных классов" , посвященной модификации стандартных классов.

Изменение стандартных заголовков

Возможно, вы уже обратили внимание, что главы, создаваемые LaTeX'ом с помощью команды \chapter, так и называются " Chapter", а не "Глава". Это — один из нескольких случаев, когда классы LaTeX'а используют для различных стандартных надписей английские слова. В некоторых русификациях LaTeX'а предусмотрены стилевые пакеты, переименовывающие эти названия в русские.

Если такой русификации у вас нет, то придется решить эту проблему своими силами. Для этого в преамбулу документа надо внести следующую команду:

\renewcommand{\chaptername}{Глава}

Делать это надо, конечно, только в том случае, если команда \chapter предусмотрена в используемом вами классе. О команде \renewcommand, используемой для переопределения значений уже существующих команд, рассказывается в "Создание новых команд" .

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

\chaptername Chapter Глава
\contentsname Contents Оглавление (или Содержание)
\listfigurename List of Figures Список рисунков
\listtablename List of Tables Список таблиц
\abstractname Abstract Аннотация
\refname References Литература
\bibname Bibliography Литература
\indexname Index Предметный указатель
\figurename Figure Рис.
\tablename Table Таблица
\partname Part Часть
\appendixname Appendix Приложение

Пояснений эта таблица не требует, за одним исключением: если класс документа есть article или proc, то для получения русского названия списка литературы надо переименовать команду \refname, а если report или book — то команду \bibname. Пожалуйста, не перепутайте эти два случая, иначе LaTeX зафиксирует ошибку и выполнять вашу команду откажется.

До и после основного текста

В классах article, report и proc предусмотрена возможность оформить аннотацию ко всему документу. Это делается с помощью окружения {abstract}. До начала основного текста следует поместить текст аннотации между \begin{abstract} и \end{abstract}. Этот текст будет автоматически озаглавлен "Abstract", если не подключать русифицирующий стилевой пакет и если вы сами не переопределили команду \abstractname (см. предыдущий пункт).

Команда \appendix означает, что с этого места начинается приложение к документу. Сама она никакого текста не производит, а делает вот что:

  • начинает заново нумерацию разделов документа;
  • "самые крупные" разделы документа ( \section в классах article и proc, \chapter в двух других основных классах) начинают нумероваться не цифрами, а прописными латинскими буквами;
  • если определена команда \chapter, то главы будут с этого момента называться не "Chapter", а так, как определено в команде \appendixname (см. предыдущий пункт).

Если класс вашего документа — book, то можете воспользоваться услугами команд \frontmatter, \mainmatter и \backmatter. Командой \frontmatter открывается "вводная часть" книги: после этой команды страницы начинают нумероваться римскими цифрами (как если бы мы сказали \pagenumbering{roman} ). В той части текста, на которую распространяется действие команды \frontmatter, главы не нумеруются. Переход к основной части книги задается командой \mainmatter: печать начинается с новой страницы, страницы начинают нумероваться заново арабскими цифрами. Наконец, команда \backmatter задает переход к заключительной части книги: главы перестают нумероваться (нумерация страниц не меняется).

Перемещаемые аргументы и хрупкие команды

Если в аргументе команды \section (или любой другой LaTeX'овской команды для рубрикации) присутствует не только текст, но и TeX'овские команды, то при трансляции они могут иногда вызвать сообщение об ошибке. Чтобы этого избежать, команду надо "защитить": поставить непосредственно перед ней команду \protect. Приведем пример, когда возникает нужда в этой команде.

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

\documentclass{article}

\begin{document}
\section{Устойчивость по Ляпунову}
...
\section {О некоторых свойствах функций \protect\nolinebreak\Ляпунова}
Еще кое-что.
\end{document}

(Заметьте заодно, что команда \nolinebreak дана до пробела между словами, а не после — иначе она вообще не сработает, невзирая ни на какой \protect.) Если убрать в этом файле \protect, то на экране появится загадочное сообщение об ошибке.

Такого рода ситуация может возникать, когда TeX'овская команда является частью текста, который будет записан в специальный файл и использован при следующем запуске LaTeX'а (в нашем случае информация о заголовке раздела записывается в файл с расширением toc для последующего использования в оглавлении). Если аргумент команды (в нашем случае команды \section ) подвергается такой обработке, то его называют перемещаемым ; команды, которые, будучи использованы внутри перемещаемого аргумента, могут вызвать ошибку, называются хрупкими.

Из LaTeX'овских команд, которые могут реально понадобиться внутри заголовка раздела, большинство хрупкими не являются. Если вы сомневаетесь, не хрупка ли какая-то конкретная команда, можете спокойно ставить перед ней \protect — ничего плохого от этого не произойдет.

Не являются хрупкими и не нуждаются в защите с помощью \protect команды для расстановки диакритических знаков , смены текущего шрифта и установки промежутков вручную .

Нина Казачек
Нина Казачек
Василий Майоров
Василий Майоров