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

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