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

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

В этом уроке мы научимся определять собственные команды и окружения и собирать их в преамбулу, которую можно использовать повторно. Урок объясняет, почему стоит называть функции текста, а не повторять их внешний вид; представляет \newcommand с обязательными аргументами и с необязательным аргументом, имеющим значение по умолчанию, команды \renewcommand и \providecommand, а также ошибку, возникающую, когда имя уже занято; кратко показывает \NewDocumentCommand, современный интерфейс, встроенный в ядро LaTeX; разбирает пробел, теряющийся после команды без аргументов; определяет окружения с помощью \newenvironment, с их кодом открытия и закрытия; и учит выносить преамбулу в отдельный файл, будь то файл, читаемый командой \input, или пакет .sty, с вниманием к порядку загрузки пакетов и к лаконичности целого.

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

  1. Обосновывать определение собственной команды функцией, которую она называет, а не экономией набора.
  2. Определять команды с обязательными аргументами и с необязательным аргументом и предсказывать результат каждой формы их использования.
  3. Различать \newcommand, \renewcommand и \providecommand и истолковывать ошибку, вызванную уже занятым именем.
  4. Предвидеть и предотвращать потерю пробела после команды без аргументов.
  5. Определять окружения с аргументами и распознавать, какая часть определения может их использовать.
  6. Организовывать собственную преамбулу в отдельном файле или в пакете, решать, что из этого уместнее, и упорядочивать загрузку пакетов.

Зачем определять собственные команды

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

Выигрыш тройной. Во-первых, смысл: \ponyatie{сущее} говорит, чем является слово, тогда как \textit{сущее} говорит лишь, как оно выглядит, и исходный текст читается как размеченный текст, а не как перечень типографских распоряжений. Во-вторых, единообразие: если векторы всегда пишутся через \vect, не может случиться так, что по недосмотру одни выйдут полужирными, а другие со стрелкой. В-третьих, соглашение меняется в одном месте: если диссертационный совет, журнал или научный руководитель потребуют другое обозначение, достаточно изменить одну строку преамбулы, и изменение коснётся всего документа. Отсюда следует критерий: собственной команды заслуживает то, что выполняет узнаваемую функцию и повторяется; не заслуживает её единичная настройка, которая пишется на своём месте и не повторяется.