Перейти к содержимому
Topos Uranos

Структура документа: итоги и задачи повышенной трудности

Краткое содержание

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

Цели обучения

  1. Восстанавливать порядок решений и механизмов раздела, указывая принцип, на который опирается каждый из них.
  2. Объяснять, как нумерация, оглавление, ссылки и частичная компиляция зависят от вспомогательных файлов.
  3. Отличать то, что раздел установил, от того, что он лишь наметил и что разовьют следующие разделы.
  4. Находить причины сбоев в документах, разделённых на несколько файлов, которые не компилируются или компилируются с ложными номерами, и упорядочивать исправления.
  5. Планировать класс, страницу, части, ссылки и файлы диссертации по правилам, которым она должна соответствовать.

Чего достиг раздел

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

Классы документов и страница

Занятие о классах документов и странице установило, что класс решает, какие рубрики существуют, что делает \maketitle, есть ли аннотация и различаются ли чётные и нечётные страницы; отсюда оно вывело критерий выбора между article, report и book по структуре и способу печати и представило классы KOMA-Script с опцией es-noquoting, которой требует их сочетание с испанским языком в версии TeX Live этих примеров. Оно рассмотрело опции класса, объяснило, почему поля зависят от длины строки и как задать их с помощью geometry, и закончилось стилями страницы, которые некоторые команды класса навязывают сами.

Разделы, оглавление и приложения

Занятие о разделах, оглавлении и приложениях набрало данные заголовка и аннотацию, упорядочило уровни рубрикации и установило, что два независимых счётчика, secnumdepth и tocdepth, решают, что нумеруется и что попадает в оглавление. Оно объяснило, что оглавление набирается из того, что записал предыдущий проход, без предупреждения, когда оно устаревает; что \appendix меняет нумерацию того, что следует за ней; и что у книги три части с двумя нумерациями страниц, порядок которых не безразличен.

Перекрёстные ссылки

Занятие о перекрёстных ссылках установило принцип, от которого зависит всякая ссылка: метка запоминает последний номер, присвоенный перед ней, внутри своего окружения. Из него оно вывело, где ставится метка в каждом элементе, почему метка перед подписью рисунка ссылается на раздел и почему у раздела без номера нет собственного номера, на который можно сослаться. Оно показало, что после изменения одна компиляция печатает прежние номера со всей видимостью правильности, и представило hyperref, который нужно загружать в конце пакетов, и cleveref, который идёт после него и, пока \crefname не задаст русские названия, пишет английские.

Длинные документы

Занятие о длинных документах распределило документ между основным файлом и частями без преамбулы. Оно отличило \input, буквальную подстановку, от \include, которая начинает страницу, пишет собственный вспомогательный файл и допускает \includeonly, чья нумерация зависит от вспомогательных файлов предыдущей полной компиляции. Оно установило, что пути записываются от папки основного файла, что в Texmaker назначается главный документ, и рассмотрело ошибки, свойственные разделённым документам, среди них две молчаливые: часть, которую \include не находит, и часть с преамбулой, чей \end{document} завершает диссертацию.

Макросы и собственная преамбула

Занятие о макросах и собственной преамбуле превратило логическую разметку в метод: \newcommand с аргументами и с необязательным аргументом, защита, не позволяющая переопределить занятое имя, пробел, теряющийся после команды без аргументов, \NewDocumentCommand, собственные окружения, аргументы которых существуют только в открывающей части, и преамбула, вынесенная в файл или в пакет, который не должен навязывать класс, язык и место hyperref.

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

Опоры цепи

  • AПроходы. Движок записывает во вспомогательные файлы номера, заголовки и страницы на одном проходе и использует их на следующем. Устанавливается в первом разделе. В этом модуле принимается без доказательства.
  • BПреамбула и тело. Преамбула настраивает и загружает пакеты, а тело набирает; то, что только определяет или сохраняет, может стоять в обоих местах. Устанавливается в первом разделе. В этом модуле принимается без доказательства.
  • CСодержание и форма. Автор объявляет, чем является каждая вещь, а решение, принятое в другом месте, определяет, как она выглядит. Устанавливается в предыдущих разделах. В этом модуле принимается без доказательства.
  • DКласс решает. Класс документа решает, какие рубрики существуют, что набирает заголовок, есть ли аннотация, как распределяются страницы и какой стиль навязывают его команды. Устанавливается в: 1. Три стандартных класса.
  • EЧто запоминает метка. Метка запоминает последний номер, присвоенный перед ней, внутри своего окружения, не зная, к чему она привязана. Устанавливается в: 11. Метки и ссылки.
  • FПорядок загрузки. Пакеты загружаются в том порядке, в каком они прочитаны, и более поздний может отменить сделанное более ранним: hyperref идёт в конце, а cleveref после него. Устанавливается в: 13. Гиперссылки.
  • GОсновной файл. Компилируется всегда основной файл; части суть фрагменты его тела, без преамбулы, и их пути записываются от папки основного файла. Устанавливается в: 16. Команда include.
  1. Участок 1 Классы документов и страница

    • Выбирать класс по структуре и способу печати документа.
    • Объявлять опции класса и предсказывать их действие.
    • Задавать поля с помощью geometry, не удлиняя строку сверх меры.
    • Предсказывать и менять стили страницы, верхние и нижние колонтитулы.
    1. Три стандартных класса. У article нет глав; у report они есть, с заголовком и аннотацией на отдельных страницах; book печатает с двух сторон и не имеет аннотации.

      Опирается на: B (Преамбула и тело). Доказывается в уроке: Классы документов и параметры страницы.

    2. KOMA-Script. scrartcl, scrreprt и scrbook соответствуют стандартным классам с европейскими решениями; с babel на испанском им нужна в этой версии опция es-noquoting.

      Использует: 1. Три стандартных класса. Опирается на: C (Содержание и форма). Доказывается в уроке: Классы документов и параметры страницы.

    3. Опции класса. Бумага, кегль, одна или две стороны, титульная страница, начало глав и черновой режим объявляются в первой строке.

      Использует: 1. Три стандартных класса. Опирается на: D (Класс решает). Доказывается в уроке: Классы документов и параметры страницы.

    4. Поля. geometry вычисляет страницу по нескольким размерам; ширина полосы набора задаёт длину строки, от которой и страдает читатель.

      Использует: 3. Опции класса. Опирается на: B (Преамбула и тело). Доказывается в уроке: Классы документов и параметры страницы.

    5. Стили страницы. Стиль решает, каковы колонтитулы; \maketitle и \chapter навязывают своей странице стиль plain, а fancyhdr или scrlayer-scrpage составляют собственные стили.

      Использует: 1. Три стандартных класса, 4. Поля. Опирается на: D (Класс решает). Доказывается в уроке: Классы документов и параметры страницы.

  2. Участок 2 Разделы, оглавление и приложения

    • Набирать заголовок и аннотацию в соответствии с классом.
    • Выбирать уровень рубрикации и предсказывать нумерацию и оглавление.
    • Получать оглавление и списки, зная, от какого прохода они зависят.
    • Упорядочивать приложения и части книги.
    1. Заголовок и аннотация. \title, \author и \date сохраняют, \maketitle набирает; окружение abstract есть в article и report, но не в book.

      Использует: 1. Три стандартных класса. Опирается на: D (Класс решает), B (Преамбула и тело). Доказывается в уроке: Разделы, оглавление и приложения.

    2. Уровни рубрикации. Семь уровней, от части до подпараграфа; глава существует только в report и book, и иерархия не выбирается по размеру заголовка.

      Использует: 1. Три стандартных класса. Опирается на: D (Класс решает). Доказывается в уроке: Разделы, оглавление и приложения.

    3. Нумерация и оглавление. secnumdepth решает, какие уровни нумеруются, а tocdepth, какие попадают в оглавление; форма со звёздочкой не нумерует и не расходует номер.

      Использует: 7. Уровни рубрикации. Опирается на: C (Содержание и форма). Доказывается в уроке: Разделы, оглавление и приложения.

    4. Оглавление и списки. Оглавление набирает то, что предыдущий проход записал в файл .toc, и не предупреждает, когда оно устаревает.

      Использует: 7. Уровни рубрикации, 8. Нумерация и оглавление. Опирается на: A (Проходы). Доказывается в уроке: Разделы, оглавление и приложения.

    5. Приложения и части книги. \appendix меняет нумерацию того, что следует за ней; в book вступительная, основная и заключительная части имеют две нумерации страниц, а приложения идут перед \backmatter.

      Использует: 7. Уровни рубрикации, 5. Стили страницы. Опирается на: D (Класс решает). Доказывается в уроке: Разделы, оглавление и приложения.

  3. Участок 3 Перекрёстные ссылки

    • Размещать и называть метки.
    • Предвидеть, что напечатает ссылка после одного или двух проходов.
    • Загружать hyperref и cleveref в их порядке.
    • Ссылаться с названием и номером или по заголовку.
    1. Метки и ссылки. \label отмечает место, \ref и \pageref пишут его номер и страницу, за два прохода.

      Использует: 7. Уровни рубрикации. Опирается на: A (Проходы). Доказывается в уроке: Перекрёстные ссылки.

    2. Где ставится метка. После команды, присваивающей номер, и внутри того же окружения: после \section, после \caption; с префиксом, говорящим, что она обозначает.

      Использует: 11. Метки и ссылки. Опирается на: E (Что запоминает метка). Доказывается в уроке: Перекрёстные ссылки.

    3. Гиперссылки. hyperref превращает ссылки, оглавление и сноски в гиперссылки, а разделы в закладки, и загружается в конце пакетов.

      Использует: 11. Метки и ссылки, 9. Оглавление и списки. Опирается на: B (Преамбула и тело). Доказывается в уроке: Перекрёстные ссылки.

    4. Ссылки с названием. cleveref пишет название и номер; без русских названий он пишет английские («section»), а русские задаются командой \crefname; nameref ссылается по заголовку.

      Использует: 13. Гиперссылки, 12. Где ставится метка. Опирается на: E (Что запоминает метка), F (Порядок загрузки). Доказывается в уроке: Перекрёстные ссылки.

  4. Участок 4 Длинные документы

    • Выбирать между \input и \include для каждой части.
    • Предсказывать, что сохраняет \includeonly.
    • Организовывать папки и назначать главный документ.
    • Распознавать ошибки разделённых документов, шумные и молчаливые.
    1. Команда input. \input вставляет файл так, как если бы его текст был написан на её месте, не разрывая страницу и не создавая вспомогательных файлов.

      Опирается на: B (Преамбула и тело). Доказывается в уроке: Длинные документы.

    2. Команда include. \include начинает страницу до и после, пишет собственный вспомогательный файл для каждой части и не может быть вложенной.

      Использует: 15. Команда input, 7. Уровни рубрикации. Опирается на: A (Проходы). Доказывается в уроке: Длинные документы.

    3. Частичная компиляция. \includeonly набирает только выбранные части, а остальные нумерует по их вспомогательным файлам, которые должны происходить из полной компиляции, выполненной после их последнего изменения.

      Использует: 16. Команда include, 11. Метки и ссылки. Опирается на: A (Проходы). Доказывается в уроке: Длинные документы.

    4. Папки и главный документ. Основной файл в корне, части в папках, пути от основного файла, простые имена, а в Texmaker основной файл назначен главным документом.

      Использует: 16. Команда include. Опирается на: G (Основной файл). Доказывается в уроке: Длинные документы.

    5. Ошибки разделённых документов. \input без файла останавливает компиляцию; \include без файла лишь отмечает «No file»; часть с преамбулой завершает диссертацию на своём \end{document}.

      Использует: 16. Команда include, 18. Папки и главный документ. Опирается на: G (Основной файл), B (Преамбула и тело). Доказывается в уроке: Длинные документы.

  5. Участок 5 Макросы и собственная преамбула

    • Определять команды с аргументами и одним необязательным.
    • Различать определение, переопределение и предоставление и избегать потерянного пробела.
    • Определять собственные окружения.
    • Собирать преамбулу в файл или в пакет.
    1. Собственные команды. \newcommand определяет команду не более чем с девятью аргументами, первый из которых может быть необязательным со значением по умолчанию; она называет повторяющуюся функцию.

      Опирается на: C (Содержание и форма). Доказывается в уроке: Макросы и собственная преамбула.

    2. Занятые имена и пробелы. \newcommand отвергает существующее имя, а \renewcommand несуществующее; команда без аргументов поглощает следующий за ней пробел.

      Использует: 20. Собственные команды. Опирается на: B (Преамбула и тело). Доказывается в уроке: Макросы и собственная преамбула.

    3. Собственные окружения. \newenvironment определяет открывающую и закрывающую части; его аргументы существуют только в открывающей, а \NewDocumentEnvironment допускает их и в закрывающей.

      Использует: 20. Собственные команды. Опирается на: C (Содержание и форма). Доказывается в уроке: Макросы и собственная преамбула.

    4. Собственная преамбула. Преамбула выносится в файл, читаемый командой \input, или в пакет .sty, который не навязывает класс, язык и место hyperref.

      Использует: 20. Собственные команды, 21. Занятые имена и пробелы, 15. Команда input, 13. Гиперссылки. Опирается на: F (Порядок загрузки), C (Содержание и форма). Доказывается в уроке: Макросы и собственная преамбула.

К математике. Цепочка останавливается там, где архитектура завершена и её остаётся заполнить: нумерованные уравнения и теоремы, на которые будут ссылаться метками этого раздела, составляют предмет следующего.