Skip to content

Latest commit

 

History

History
71 lines (61 loc) · 5.26 KB

GenerateStatement.md

File metadata and controls

71 lines (61 loc) · 5.26 KB

Введение

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