Please умеет генерировать .pdf-условия для задач, используя pdflatex
.
Для Windows рекомендуется установить MiKTeX
Для ОС на базе Linux - пакет texlive и texlive-lang-cyrillic (в зависимости от дистрибутива пакеты могут называться по-разному, примеры приведены для Debian)
После установки убедитесь, что в терминале можно запустить команду pdflatex
Поддерживается два режима генерации условий - создание условия для определенной задачи и создание общего условия для всех задач контеста. Они отличаются незначительно.
Для создания условия задачи необходимо перейти в папку с ней и выполнить команду please generate statement
. При этом будут сгенерированы тесты с тегом sample
и вставлены в условие.
Чтобы создать условие для контеста необходимо выполнить команду please generate statement for <название контеста>
, например, please generate statement for abacaba
. В данном примере будет создан файл с названием abacaba.pdf
и сохранен в текущую папку.
В режиме создания условия контеста поддерживаются переменные в шаблонах. В конфигурационном файле контеста в секции statement
, которая выглядит примерно так:
statement = {
template = contest.tex
name = Новогодний контест
date = 1 января 2012
location = Санкт-Петербург
}
В данном случае будет использоваться шаблон под названием contest.tex
, в нем автоматически будут сделаны следующие замены:
#{tpl_template} => contest.tex
#{tpl_name} => Новогодний контест
#{tpl_date} => 1 января 2012
#{tpl_location} => Санкт-Петербург
Можно передавать любое количество своих параметров, но в стандартном шаблоне используются только tpl_name, tpl_date и tpl_location.
На данный момент поддерживается только один шаблон для задач (statement.tex
). В него передаются следующие переменные (пока их значения переопределить нельзя):
#{title} => название задачи (поле name)
#{input_file} => название входного файла (или стандартный ввод)
#{output_file} => название выходного файла (или стандартный вывод)
#{time_limit} => лимит по времени (готовая строка, пока что только на русском языке)
#{memory_limit} => лимит по памяти (только на русском языке)
#{id} => идентификатор задачи (обычно - буква A, B, C, ...)
#{text} => текст задачи
#{example} => таблица с примерами
#{notes} => примечания
Файл с условием задачи (по умолчанию default.ru.tex
) выглядит таким образом:
Условие
\InputFile
Формат входного файла
\OutputFile
Формат выходного файла
\Note
Примечания к задаче
При этом после генерации условия секция \Note будет расположена после примеров.
При генерации условия одной задачи ей будет присвоен пустой ID (но текущий olymp.sty
преобразует его в A).
При генерации условия для контеста задачам будут присвоены ID, заданные в конфигурационном файле контеста. При этом сами задачи будут отсортированы в том же порядке, что и в контесте.
Надо перейти в папку .statements
, скопировать в нее все из <please-dir>/templates/
и попробовать выполнить команду pdflatex <название документа>
, например, pdflatex default.ru.tex