ここでは、競技マニュアルの邦訳版を元に、PDF本を作成します。
flowchart LR
SOURCE@{ shape: docs, label: "邦訳版.md" }
PANDOC@{ shape: subproc, label: "変換アプリ\nmd --> pdf" }
PDF本@{ shape: doc, label: "PDF本" }
SOURCE --> PANDOC --> PDF本
マークダウンファイルからPDF本を作成するための変換アプリとして、 Pandocを利用しました。
Pandocの実行環境を容易に構築できる様に、 Dockerによる仮想環境を作りました。 先ずは以下の手順で、Dockerの実行環境を用意します:
-
実行用dockerイメージを作成する。
docker pull pandoc/latex:latest-ubuntu
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 User's Guide
- Panflute User's Guide - Pandocカスタムフィルター用Pythonライブラリ
Pandocの環境作りは、以下を参考にしました: