Polygen使用小结
Polygen作为Codeforces的题目管理平台,其实在各种比赛的出题工作中都有着广泛的应用。
该平台能维护题目和比赛,并直接导入到Codeforces,如果有自己架设的OJ,同样也能在生成题面/数据、做一些规范检查等方面对出题有所帮助。
关于题目
网上有这方面的大概资料,参考这篇文章即可 codeforces的polygon平台使用指北 。
关于比赛
先平台上新建比赛,将需要的题目和出题人拉入比赛,就可以开始制作一场比赛了。
接下来主要介绍一下如何生成题面,Polygen自带一个$Preview Statements as PDF$(预览pdf格式的题面的功能)。
主要是用平台自带的$Latex$模版来生成一套完整的比赛题面。
带有中文的题面会显示乱码或者出错,为了使它支持中文,我们需要将比赛中所有题目的$files$里的$tutorials.ftl$文件替换成如下代码:
\documentclass [11pt, a4paper, oneside] {article}
\usepackage {CJK}
\usepackage [T2A] {fontenc}
\usepackage [utf8] {inputenc}
\usepackage [english, russian] {babel}
\usepackage {amsmath}
\usepackage {amssymb}
\usepackage <#if contest.language?? && contest.language="russian">[russian]<#elseif contest.language?? && contest.language="ukrainian">[ukrainian]</#if>{olymp}
\usepackage {comment}
\usepackage {epigraph}
\usepackage {expdlist}
\usepackage {graphicx}
\usepackage {ulem}
\usepackage {import}
\usepackage{ifpdf}
\ifpdf
\DeclareGraphicsRule{*}{mps}{*}{}
\fi
\begin {document}
\begin{CJK}{UTF8}{gbsn}
\contest
{${contest.name!}}%
{${contest.location!}}%
{${contest.date!}}%
\binoppenalty=10000
\relpenalty=10000
\renewcommand{\t}{\texttt}
<#if shortProblemTitle?? && shortProblemTitle>
\def\ShortProblemTitle{}
</#if>
<#list statements as statement>
<#if statement.path??>
\graphicspath{{${statement.path}}}
<#if statement.index??>
\def\ProblemIndex{${statement.index}}
</#if>
\import{${statement.path}}{./${statement.file}}
<#else>
\input ${statement.file}
</#if>
</#list>
\end{CJK}
\end {document}
接下来比赛还需要一个封面,这个可以直接修改$constest$的$Properties/Files$中的$statements.ftl$文件。
比如我们可以简单地在$\begin{document}$之后加入如下代码来增加一个封面。
\title{\Huge\textbf{{{ The Test Contest }}}} \date{} \author {Test University } \maketitle \includegraphics[width=7in]{statements-logo.png}
这里的封面有比赛名,作者,logo。
值得注意的是如果需要导入图片需要在$Properties/Files$中上传(题目中的图片同理)。
总的来说,主要还是用$Latex$模版来生成题面,需要做一些修改就学着去改$Latex$即可。
最后的效果如图:
如果需要对封面再进行一些设计,我推荐直接使用$Photoshop$进行编辑。
比如这样: