problemset.toml の書き方

必要であれば、HTML・PDF に適用されるテンプレートを指定するためのファイル problemset.toml を作成します。このファイルが無い場合は、デフォルトのテンプレートが使用されます。

problemset.toml は、 ss-manager run を実行するときの WORKING_DIR の階層と一致しているときにのみ参照されます。

Tip

Rime を使用したことがある方向け: このファイルは Rime で言うところの PROJECT ファイルに似た位置づけです。 PROJECT と同じ階層に保存することを推奨します。

書き方の一例は次のとおりです。より具体的な例は リポジトリ内のサンプル をご覧ください。

[template]
    template_path = "./templates/default.html"
    sample_template_path = "./templates/sample_default.html"
    preprocess_path = "./templates/preprocess.py"
    postprocess_path = "./templates/postprocess.py"

[pdf]
    [pdf.common]
        encoding = "UTF-8"
        page-size = "A4"
        margin-top = 24
        margin-right = 16
        margin-bottom = 16
        margin-left = 16
        enable-local-file-access = ""
        disable-smart-shrinking = ""
        debug-javascript = ""
    [pdf.problem]
        javascript-delay = 1000
    [pdf.problemset]
        javascript-delay = 10000
        header-center = "Practice Contest, YYYY-MM-DD"
        header-font-name = "Times New Roman"
        header-font-size = 12
        header-spacing = 12
        footer-center = "[page] / [toPage]"
        footer-font-name = "Times New Roman"
        footer-font-size = 10
        footer-spacing = 8

設定項目それぞれについて説明します。

[template]
template_path

HTML および PDF 出力で使用されるテンプレート HTML へのパスを指定します。指定されていない場合、デフォルトのテンプレートが適用されます。

テンプレートでは、問題文本文に相当する部分に {@problem.statement} 文を記述する必要があります。詳細は sample/templates/default.html などをご覧ください。

sample_template_path

入出力例の部分に使われるテンプレート HTML へのパスを指定します。指定されていない場合、デフォルトのテンプレートが適用されます。

テンプレートの書き方は sample/templates/sample_default.html などをご覧ください。

preprocess_path

Markdown ファイルに関して前処理を行う Python スクリプト へのパスを指定します。Markdown が HTML 形式にレンダリングされる前に適用したい処理を記述してください。指定されていない場合、前処理は行われません。

Markdown ファイルの中身は標準入力で与えられ、前処理の結果は標準出力で返す必要があります。終了コードが 0 以外であった場合は異常終了とみなし、エラーになります。詳細は sample/templates/icpc_domestic/preprocess.py をご覧ください。

postprocess_path

HTML ファイルに関して後処理を行う Python スクリプト へのパスを指定します。HTML 形式にレンダリングされた後に適用したい処理を記述してください。指定されていない場合、後処理は行われません。

HTML ファイルの中身は標準入力で与えられ、後処理の結果は標準出力で返す必要があります。終了コードが 0 以外であった場合は異常終了とみなし、エラーになります。詳細は sample/templates/icpc_domestic/postprocess.py をご覧ください。

[pdf]

PDF 出力時の wkhtmltopdf (PDF にレンダリングする際に使用されるサードパーティライブラリ) の設定を書きます。設定項目の詳細については wkhtmltopdf のリファレンス をご覧ください。

[pdf.common]

各問題のファイルにも、問題セットのファイルにも適用されてほしい設定をここに記載します。

[pdf.problem]

各問題のファイルにのみ適用されてほしい設定をここに記載します。

[pdf.problemset]

問題セットのファイルにのみ適用されてほしい設定をここに記載します。