TeX в daysper

Последняя правка 3791 день назад
Материал из Daysper manual
Перейти к навигации Перейти к поиску

Про работе с условиями (команды statement, contest statements и т.п.) daysper автоматически компилирует TeX-условия. Основной TeX-файл при этом генерируется автоматически: в него input'ится пролог, после чего import'ятся файлы с условиями задач (и, если необходимо, включаются другие команды TeX, см. описания команд).

Для настройки работы с TeX'ом необходимо создать файл пролога (см. ниже) и указать необходимые команды компиляции (см. также ниже).

Пример[править | править код]

Пример TeX-файла, сгенерированного daysper по команде contest statements:

\input{../_prologue.tex}
\import{../../problems/firesafe/statement/}{firesafe.tex}
\import{../../problems/domino/statement/}{domino.tex}
\pagebreak
\import{../../problems/points/statement/}{points.tex}
\pagebreak
\import{../../problems/bridges/statement/}{bridges.tex}
\import{../../problems/topsort2t/statement/}{topsort2t.tex}
\end{document}

(Команды \pagebreak были вставлены с помощью параметров, начинающихся с $, в секции contest-problems файла daysper.ini.)

Работа с любым форматом условий[править | править код]

Обратите внимание, что такой вид файла никак не предполагает какого-либо конкретного формата условий задач (т.е., например, не требует использования определенного классового файла типа olymp.sty), никак не ограничивает используемые пакеты и т.п. В прологе (см. ниже) вы можете написать любые необходимые команды, использовать требуемый класс, подключить нужные стилевые файлы и т.д.

Пролог[править | править код]

Первая строка генерируемого TeX-файла всегда имеет вид

\input{tex-prologue}

где вместо tex-prologue подставляется значение параметра tex-prologue файла daysper.ini. Этот файл должен содержать все команды, которые должны находиться в TeX-файле до непосредственно подключения условий задач.

В частности, пролог должен начинаться командой \documentclass с необходимым классом, подключать все требуемые пакеты, и содержать команду \begin{document} (как правило, заканчиваться этой командой). Кроме того, поскольку условия задач подключаются командой \import (см. ниже), в прологе, как правило, должна быть строка \usepackage{import}.

Если в прологе вам надо использовать относительные пути, то учитывайте, в каком каталоге будет происходить компиляция (см. в описаниях команд).

Команды компиляции[править | править код]

Команды, используемые для компиляции TeX-файла, указываются в секции tex-commands файла daysper.ini. Значение каждого параметра этой секции задает очередную команду; собственно название параметра не учитывается. При компиляции в конец каждой команды приписывается имя компилируемого файла без расширения.

Пример: если в daysper.ini написано

[tex-commands]
1=latex
1a=latex
2=dvips 
3=dvipdfmx

то в сгенерированном daysper'ом скрипте генерации условий будет следующий код

latex filename 
latex filename
dvips filename
dvipdfmx filename

(для наглядности из этого скрипта удалены проверки кода возврата команд, они там будут присутствовать на самом деле).

Если вам надо передавать командам TeX'а особые параметры, то указывать надо их именно здесь. Например, если вы хотите верстать условия в альбомной ориентации, то, помимо указания соответствующих опций в прологе (указывающих TeX'у, что надо создавать dvi-файл в альбомной ориентации), надо передавать соответствующие параметры командам dvips и/или dvipdfm, например, так:

[tex-commands]
1=latex
1a=latex
2=dvips -tlandscape
3=dvipdfmx -l

Условия задач[править | править код]

Daysper ожидает условия задач в файле statement/id.tex в каталоге задачи, где id — идентификатор задачи. Путь от каталога, где происходит компиляция, до каталога с задачей, daysper прописывает сам (за счет параметра basepath в секции contest файла, а также за счет указания при необходимости путей в параметрах в секции contest-problems файла daysper.ini).

\import[править | править код]

Для подключения условий daysper использует команду \import; это обозначает, что у вас, как правило, должен быть установлен и подключен в прологе пакет import.

Использование пакета import решает известную проблема, состоящую в том, что по умолчанию TeX все ссылки на другие файлы всегда считает относительно того файла, компиляцию которого запустили, а не того, который он читает в данный момент. Т.е. если в главном TeX-файла написано

\input{../problems/aplusb/statement/aplusb.tex}

то TeX будет читать файл aplusb.tex, но так, что, если в нём есть ссылки на другие файлы (например, картинки), то путь к ним должен быть указан относительно главного файла. Это не всегда удобно, а иногда совсем не удобно. В частности, если вы пишите условие задачи, вам совсем не хочется думать о том, где будет находиться главный файл, из которого будет input'иться ваше условие, и совсем не хочется править условие, если главный файл надо переложить в другое место.

Пакет import позволяет вместо этого писать в главном файле

\import{../problems/aplusb/statement/}{aplusb.tex}

и в файле aplusb.tex указывать все пути относительно файла aplusb.tex, а не относительно главного TeX-файла.

Таким образом, в файле с условием задачи все ссылки на другие файлы должны быть прописаны относительно самого файла с условием (т.е. подкаталога statements каталога задачи).