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

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

Указанные tex-файлы сохранены в кодировке UTF-8.

В файле _gentest.tex нужно обратить внимание лишь на строчку \newcommand{\numberOfVariants}{40}. Число 40 означает количество вариантов контрольной работы, которые необходимо нагенерировать. В результирующем PDF-файле каждый вариант получит свой номер, хотя при этом тексты некоторых вариантов могут быть идентичны.

В файле variant.tex следует обратить внимание на строчку \pagebreakafter{4} — в ней указано, сколько вариантов умещается на одной странице, этот параметр нужно выставлять вручную. Самое же важное — это команды \p и \c — они и предназначены для задания различных вариантов одной и той же задачи. Рассмотрим для примера такую задачу: \begin{task} Сравните числа \p2\c{25 и 46}\c{32 и 54}. \end{task}

Команда \pЧИСЛО или \p{ЧИСЛО} означает, что сразу после неё последует соответствующее количество различных модификаций текста, который нужно напечатать. Сам текст идёт в командах \c{…}. То, что написано в первой/второй/третьей/… такой команде, будет включено в первый/второй/третий/… вариант контрольной, по циклу. В приведённом выше примере в вариантах 1,3,5,7,… задача будет выглядеть как «Сравните числа 25 и 46», а в вариантах с чётными номерами она будет иметь вид «Сравните числа 32 и 54».

Всё становится ясно при сравнении файла variant.tex и результата _gentest.pdf из прилагаемого архива.

Для компиляции потребуются пакеты LaTeX’а ifthen и calc. Также желательно установить пакеты nopageno и indentfirst, если их нет.

Исходный код шаблона

Ниже приведён GitHub Gist того же самого кода, что и в gentest.zip