Макросы, которые сохраняют честность обозначений
newcommand, NewDocumentCommand, общий файл макросов.
Макросы, которые сохраняют честность обозначений
В каждой статье есть повторяющиеся обозначения: действительные числа, оператор ожидания, абсолютное значение с полосками правильного размера. Если вы наберете \mathbb{R} в сорока местах, а ваш советник позже предпочтет \mathbf{R}, вам придется внести сорок изменений, и вы пропустите одно. Макрос превращает это обозначение в одну именованную команду, определенную один раз. Измените определение, и весь документ последует за ним. Именно так вы сохраняете честность обозначений: источник не может рассинхронизироваться сам с собой.
Определение команд с помощью newcommand
\newcommand{\R}{\mathbb{R}}\newcommand{\E}[1]{\mathbb{E}\left[#1\right]}\newcommand{\abs}[1]{\left\lvert #1 \right\rvert}Первое определение является самым простым: \R теперь является чистым сокращением, и ввод \R в любом месте дает \mathbb{R}.
Вторая форма принимает аргумент. [1] после имени объявляет, что \E принимает один аргумент, а #1 отмечает, где этот аргумент находится в расширении. Таким образом, \E{X} становится \mathbb{E}\left[X\right]. Определение требует больше, чем просто краткости: пара \left[ и \right] заставляет скобки расти, чтобы соответствовать всему, что находится внутри, поэтому \E{\frac{X}{n}} автоматически получает высокие скобки. Макрос \abs делает то же самое с \lvert и \rvert, правильной парой вертикальных полос для абсолютного значения. Вы можете объявить до девяти аргументов и называть их от «#1» до «#9».
Если команда уже существует, \newcommand отказывается ее переопределять и останавливается с ошибкой, что защищает вас от незаметного нарушения чего-либо. Чтобы намеренно заменить существующую команду, используйте вместо нее \renewcommand.
Современный интерфейс
Текущий LaTeX также предоставляет более расширенную команду определения:
\NewDocumentCommand{\citepair}{mm}{\cite{#1}, \cite{#2}}\NewDocumentCommand использует строку спецификации аргумента вместо счетчика. Здесь mm означает два обязательных аргумента, поэтому \citepair{knuth84}{lamport94} ссылается на оба ключа. Язык спецификации идет дальше, чем \newcommand: o объявляет необязательный аргумент в квадратных скобках, s определяет вариант со звездочкой, а O{default} присваивает необязательному аргументу значение по умолчанию. Для всего, что выходит за рамки простой замены, используйте этот интерфейс.
Поделитесь определениями
Сохраняйте общий файл macros.sty для всех глав. Поместите свои определения в этот один файл, загрузите в него \usepackage{макросы} из каждого документа, и каждая глава диссертации, а также слайды и бумажная версия будут согласованы в обозначениях. Когда соавтор присоединяется, он читает один короткий файл, чтобы изучить ваши соглашения, вместо того, чтобы реконструировать их на основе текста. Это естественным образом сочетается с настройкой нескольких файлов.
Совет по именованию: давайте макросам осмысленные имена, такие как \abs или \norm, а не имена, основанные на внешнем виде, такие как \bigbars. В названии должно быть указано, что означает обозначение, поэтому определение может свободно изменять его внешний вид. И не стоит определять макрос для того, что вы используете дважды; выплата начинается примерно с третьего использования.