Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 17
Текст из файла (страница 17)
Если имеется необязательный аргумент toc, то именно он заносится в оглавление и колонтитулы.Например, одна из подсекций в главе 1 называется «Глава, секция и др.», а воглавлении подсекция с тем же номером 1.12.2 называется «Секционированиетекста». Таков результат действия команды\subsection[Секционирование текста]{Глава, секция и др.}Форма команды секционирования со звездочкой * только печатает заголовок,ничего не записывая в оглавление и в колонтитулы и не увеличивая значениесчётчика, нумерующего разделы соответствующего уровня.Формат номера и заголовка раздела определяется классом документа. Обычно нумерация устроена иерархически, то есть перед номером младшего раздела стоят номера старших разделов, отделённые друг от друга точкой. Когдаисполняется одна из команд секционирования, соответствующий этой командесчётчик увеличивается на единицу, а счётчики младших разделов обнуляются.В этом смысле раздел младшего уровня находится внутри старшего.
Метод нумерации разделов, как и вообще любых нумерованных объектов, обсуждался вразделе 2.9. Там же рассказано, как можно изменить формат печати номеров разделов. Счётчик secnumdepth, описанный в разделе 3.10, определяет младший изнумеруемых разделов. Раздел \part (часть) необязателен и, формально являясьсамым старшим, не влияет на нумерацию младших разделов: если последней вЧасти 1 была Глава 4 (\chapter), то Часть 2 начнётся с Главы 5. Поэтому самойстаршей обязательной командой секционирования является \chapter. Однако в74Глава 3. Печатный документклассах article (статья) и proc (доклад) она не определена, поскольку статьии доклады не делят на главы, а самой старшей является команда \section (секция). Зато статьи удобно включать в книги в виде глав, заменив \maketitle на\chapter.
В классе letter команды секционирования вообще не определены.Необязательный аргумент команд секционирования является подвижным, таккак он переписывается в оглавление и колонтитулы. Если необязательный аргумент отсутствует, то подвижным становится обязательный аргумент. Хрупкиекоманды (раздел 2.7) не работают в подвижном аргументе других команд, еслиих не защитить командой \protect. Необязательный аргумент к команде секционирования обычно добавляют в тех случаях, когда пытаются достичь каких-тоособых визуальных эффектов в заголовках разделов или если заголовок слишкомдлинный, чтобы уместиться в одной строке.
В заголовках нелепо смотрятся знаки переноса, поэтому в длинном заголовке желательно явно указать, где долженбыть переход на новую строку, используя команду \\, а для оглавления и колонтитула заготовить укороченный вариант. Кроме всего прочего, места переноса всамом заголовке и в ссылке на него в оглавлении вовсе не обязаны совпадать.Рецепт решения всех подобных проблем даёт следующий пример:\section[Это укороченный заголовок]{Это очень, очень, очень, очень\\ очень, очень длинный заголовок}Если в печатном документе имеется приложение, то оно начинается с декларации\appendixи использует те же команды секционирования, что и основная часть текста.
Декларация \appendix изменяет способ нумерации разделов. После неё начинаетсяновый отсчёт разделов, причём первая секция обозначается буквой A, вторая —B, третья — C и т. д. Пакет babel с опцией russian заменяет слово «Appendix»перед номером главы в приложении на «Приложение».Ключевые слова, такие как «Глава» или «Приложение», которые LATEX автоматически печатает в заголовках разделов, хранятся в командах-логосах. Имясоответствующей команды-логоса обычно получается присоединением слова nameк имени команды, использующей ключевое слово.
В стандартных классах определены логосы\abstractname\partname\chaptername\appendixnameОни могут быть изменены при помощи команды \renewcommand (раздел 7.1). Например, если требуется, чтобы перед названием глав печаталось слово «Часть»,нужно действовать по следующему образцу:753.6. «Вавилонское столпотворение»\renewcommand{\chaptername}{Часть}\verb|\chapter| используетключевое слово \chaptername.Команда \chapter используетключевое слово Часть.Можно также изменить способ нумерации глав в приложении и заменить латинские буквы русскими. Читателю, знакомому с содержанием предыдущей главы (раздел 2.9), уже известно, что для этого нужно переопределить команду\thechapter:Глава~\thechapter.\renewcommand{\thechapter}{\Asbuk{chapter}}стала главой~\thechapter.Глава 3 стала главой В.Раз уж мы в очередной раз вспомнили о пакете babel, рассмотрим его повнимательнее.3.6.«Вавилонское столпотворение»Именно так переводится на русский язык название пакета babel, предназначенного для подготовки многоязычных документов LATEX.
Пакет был создан Йоханнесом Брамсом (Braams, Johannes) при поддержке разработчиков из многихстран мира. В разработке его русской части принимали участие Ольга Лапко,Владимир Волович и Вернер Лемберг (Lemberg, Werner).Любой язык, который используется в документе, должен быть указан в необязательном аргументе декларации \usepackage, которая загружает пакет babel.Например, в преамбулу документа на англо-русском гибриде языков необходимовставить команду \usepackage[english,russian]{babel}:\documentclass{article}. .
.\usepackage[english,russian]{babel}. . .\begin{document}Нужные языки можно также указать в необязательном аргументе декларации\documentclass:\documentclass[english,russian]{article}. . .\usepackage{babel}. . .\begin{document}В начале документа будут действовать установки для языка, указанного последним, поэтому порядок перечисления языков имеет значение.
В нашем примерепоследним назван русский язык. Соответственно, вначале будет активизирована таблица переносов русского языка, а ключевые слова, типа упоминавшегосявыше \appendixname, будут русскими.76Глава 3. Печатный документНа момент публикации нашей книги пакет babel поддерживал 60 языков идиалектов:acadian afrikaans american austrianbahasa basque brazil brazilian breton british bulgariancanadian canadien catalan croatian czechdanish dutch english esperanto estonianfinnish francais frenchb frenchgalician german germanb greek polutonikogreekhebrew hungarian icelandic irish italianlatin lowersorbian magyar naustrian ngerman norsknynorsk polish portuges portuguese romanian russiansamin scottish serbian slovak slovene spanish swedishturkish ukrainian uppersorbian welsh UKenglish USenglish(babel)Пользовательский интерфейс к пакету babel очень прост.
Достаточно знать,что команда \selectlanguage служит для выбора языка, а \iflanguage позволяет напечатать тот или иной вариант текста в зависимости от того, какой языкявляется текущим, т. е. выбран в данный момент. Впрочем, статус нашей книгикак полного руководства по LATEX’у обязывает нас рассказать и о других командах, которые вводит пакет babel.3.6.1.Смена языкаПереключение на заданный язык производит декларация\selectlanguage{language}(babel)где параметр language может быть названием одного из языков, указанных впреамбуле документа.
В нашем примере можно выбирать значения english илиrussian, поскольку только они были названы в аргументе \usepackage. Областьдействия выбранного языка подчиняется обычным правилам группирования, т. е.её можно ограничить при помощи фигурных или командных скобок:<<\appendixname>> по-английски будет{\selectlanguage{english}‘‘\appendixname’’}.<<\appendixname>>\ldots«Приложение» по-английскибудет “Appendix”.
«Приложение». . .Переключение языка может сопровождаться более глубинными изменениями, нежели простая замена ключевых слов и правил переноса слов по слогам.Мы недаром заменили в предыдущем примере русские кавычки «. . . » на иностранные “. . . ” после переключения на английский язык, поскольку смена языкаможет сопровождаться сменой кодировки шрифта (как при переходе от русскогоязыка к английскому). Иначе символы < и > в исходном тексте отобразились быв печатном документе в виде знаков ¡ и ¿ (которые в испанском языке ставят,соответственно, перед восклицательным и вопросительным предложением):773.6. «Вавилонское столпотворение»«—» по-иностранному будет¡¡—¿¿.Стоит также обратить внимание на то, что при переключении на русский языкдлина тире автоматически уменьшается.При смене языка посредством \selectlanguage выполняются следующие операции:<<--->> по-иностранному будет{\selectlanguage{english}<<--->>}.• переключение таблицы переносов;• замена кодировки шрифтов, если это необходимо;• добавление (удаление) команд и лигатур, имеющих смысл только для шрифтов с определённой кодировкой или для определённого языка;• замена ключевых слов, таких как «Глава» или «Содержание», которые компилятор автоматически вставляет в документ;• переопределение команды \today, которая печатает текущую дату;• смена типографских настроек, учитывающих национальные традиции, таких как длина тире, величина пробелов вокруг тире или после точки в концепредложения.Поскольку выделение области действия декларации \selectlanguage не оченьудобно в тех случаях, когда эта область велика, пакет babel предоставляет альтернативный способ переключения языка при помощи процедуры\begin{otherlanguage}{language}...\end{otherlanguage}(babel)Для коротких включений на ином языке существует команда(babel)\foreignlanguage{language}{text}Параметр language здесь имеет тот же смысл, что и в аргументе \selectlanguage,но действует только в теле процедуры otherlanguage или втором аргументе textкоманды \foreignlanguage.Процедура otherlanguage выполняет все те же действия, что и декларация\selectlanguage, а команда \foreignlanguage экономит на замене ключевыхслов.
Так же поступает *-вариант процедуры otherlanguage:\begin{otherlanguage*}{language}...\end{otherlanguage*}(babel)Процедура\begin{hypenrules}{language}...\end{hypenrules}(babel)переключает только правила переноса слов. Её можно использовать для отключения переносов в части текста; для этого в аргументе language нужно указатьnohyphenation.Если заранее неизвестно, какой язык является текущим, можно использоватькоманду78Глава 3. Печатный документ(babel)\iflanguage{language}{true-clause}{false-clause}Если текущий язык совпадает с language, она печатает текст второго аргумента true-clause; в противном случае в ход идёт текст третьего аргумента falseclause. Команду \iflanguage удобно применять для определения новых команд(глава 7), которые должны быть восприимчивы к выбору текущего языка.Имя текущего языка хранится в команде(babel)\languagenameчто подтверждает следующий пример:\languagename{} \foreignlanguage{english}{\languagename}3.6.2.russian englishАктивные сокращенияПакет babel может вводить ещё ряд команд в зависимости от выбранного языка.Примером могут служить команды для набора кавычек.
„Лапки“ можно набратьпри помощи команд \glqq и \grqq соответственно, а «ёлочки» — командами\flqq и \frqq.\glqq{}Лапки\grqq{} и \flqq{}ёлочки\frqq{}перекочевали в русскую версию пакета\textsf{babel} соответственно из немецкойи французской версий.„Лапки“ и «ёлочки» перекочевали в русскую версию пакетаbabel соответственно из немецкой и французской версий.Вероятно, найдется не много приверженцев набора кавычек при помощи команд.Поэтому пакет babel предоставляет альтернативный способ.