info###latexinfo.ru

Ответы на вопросы: Макросы

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

Пример: пользовательское окружение для примечаний.

Определим окружение mynote, предназначенное для вставки примечаний к тексту:

\newenvironment{mynote}{
\itshape\textbf{Примечание.}
}{}

Вот так его можно использовать к тексте:

Некоторый фрагмент текста документа, в котором изложена основная информация.

\begin{mynote}
Пример примечания к тексту. Можно оформить длинное пояснение, охватывающее несколько абзацев.

Это второй абзац примечания.
\end{mynote}

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

\begin{mynote}
И еще одно примечание.
\end{mynote}

Далее продолжается основной текст.

В документе после компиляции все примечания будут отображены курсивом с заголовком Примечание:


Как скрыть все примечания

Чтобы полностью исключить содержимое окружения mynote из документа PDF, добавьте в преамбулу (после определения окружения) следующие строки:

\usepackage{verbatim} % подключение пакета для работы с comment
\let\mynote=\comment
\let\endmynote=\endcomment

Эти команды «переназначают» окружение mynote на comment из пакета verbatim, которое игнорирует весь текст между \begin{comment} и \end{comment}. После этого все блоки \begin{mynote}...\end{mynote} будут полностью пропущены при сборке PDF:


Как снова показать комментарии

Чтобы вернуть отображение комментариев, достаточно:

  • закомментировать строки с \let\mynote=\comment и \let\endmynote=\endcomment, или
  • удалить их из преамбулы.

После перекомпиляции документа все примечания снова появятся.

Области применения

Такой приём удобен для:

  • подготовки двух версий документа — с решениями (или ответами) и без;
  • временных черновых заметок или планов;
  • создания шаблонов с пояснениями.


Подробнее

Часто при оформлении документов возникает задача: чтобы подпись перед списком (например, «Задача» или «Задачи») автоматически менялась в зависимости от количества элементов. В LaTeX это можно реализовать с помощью условных проверок из пакета xstring.

1. Автоматическое определение числа — команда \autoPlural

Определим команду \autoPlural (макрос), которая анализирует аргумент: если в нём есть запятая, значит, перечислено несколько элементов — используем форму множественного числа.

\usepackage{xstring} % подключение пакета
\newcommand*{\autoPlural}[1]{%
\IfSubStr{#1}{,}{Задачи}{Задача}%
}

Звёздочка в \newcommand* означает, что команда не должна содержать разрывов строк в аргументе. Проверка \IfSubStr ищет запятую — простой способ определения множественности.

Пример использования:

\autoPlural{сделать тест, написать текст} % Задачи

\autoPlural{сделать тест} % Задача

В результате на странице получим текст:


2. Команда с условным выводом \taskList

Усложним задачу: пусть список выводится только при наличии элементов, а при пустом аргументе — ничего не появляется.

\newcommand{\taskList}[1]{%
\IfStrEq{#1}{}{}{% если #1 пустой — ничего, иначе:
\textit{\autoPlural{#1}:} #1.%
}%
}

Пример использования:

\taskList{сделать тест, написать текст}

\taskList{}

\taskList{сделать тест}

В результате в тексте получится:


Пустая строка для второго случая не выводится.

Такой подход удобен при автоматизации шаблонов:

  • генерация отчетов;
  • описание задач, этапов, целей;
  • единый стиль оформления списков.

Ограничения макроса: если в одном элементе есть дополнительные запятые (например, «настроить сервер, проверить доступ»), то команда ошибочно выведет множественное число.



Подробнее

Находясь на нашем сайте, вы принимаете условия использования файлов cookies. Более подробная информация здесь.