Skip to content

Latest commit

 

History

History
85 lines (57 loc) · 3.1 KB

README.md

File metadata and controls

85 lines (57 loc) · 3.1 KB

PDF本の作成

ここでは、競技マニュアルの邦訳版を元に、PDF本を作成します。

flowchart LR
    SOURCE@{ shape: docs, label: "邦訳版.md" }
    PANDOC@{ shape: subproc, label: "変換アプリ\nmd --> pdf" }
    PDF本@{ shape: doc, label: "PDF本" }

    SOURCE --> PANDOC --> PDF本
Loading

変換アプリ

マークダウンファイルからPDF本を作成するための変換アプリとして、 Pandocを利用しました。

準備

Pandocの実行環境を容易に構築できる様に、 Dockerによる仮想環境を作りました。 先ずは以下の手順で、Dockerの実行環境を用意します:

  1. Dockerのインストール

  2. 実行用dockerイメージを作成する。

    1. docker pull pandoc/latex:latest-ubuntu
    2. docker build -t pandoc .

    補足: イメージベースとしてpandoc/latex:latest-ubuntuを指定しているのは、 arm64版を使いたいため(だけ)です。 その制約がなければpandoc/latexでも良いですが、 その際は多少Dockerfileを書き換える必要があります。

実行

ホストOS上で、makedocを実行します。

cd pandoc
./makedoc [all|clean]

成功するとディスクゴルフ大会のための競技マニュアル.pdfファイルが作成されます。

版の更新

原文が更新され新しい版のPDF本を作成する際は、以下を適宜変更します:

デバッグ

  • 下記の通りターゲットOS上でbashを立ち上げると便利です。 なお、PandocのカスタムフィルターにPythonを利用している関係で、 一度/home/venv/bin/activateを読み込んで、Pythonの実行環境を設定します。

    docker run --rm --entrypoint="bash" -v $(pwd):/data -v $(pwd)/../cm:/source -it pandoc
    source /home/venv/bin/activate # Python実行環境の設定
    make [all|clean] 等
  • Pandocのフィルターを作成するには、 先ずPandocがどのようにマークダウンファイルを分析しているか知ることが重要で、 print-all.pyは大いに役立ちました。

    e.g. pandoc --filter filters/print-all.py -o foo.pdf testdata/foo.md

参照

Pandocの環境作りは、以下を参考にしました: