info###latexinfo.ru

Как сделать, чтобы подпись к блоку автоматически менялась с «Задача» на «Задачи», если указано несколько элементов через запятую?

Часто при оформлении документов возникает задача: чтобы подпись перед списком (например, «Задача» или «Задачи») автоматически менялась в зависимости от количества элементов. В 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{сделать тест}

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


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

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

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

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

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