前回 (といってももうはるか3年も前ですが)、markdown to pdf on CLI という記事で、pandoc/latex の docker image に tlmgr install collection-langjapanese で30分ほどかけて日本語PDF環境を作った話を書きました。
実はあの記事を書いてから割とすぐ、楽にMarkdownをそれっぽいPDFに変換する の frozenbonito/pandoc-eisvogel-ja を見つけました。pandoc + Eisvogel テンプレート + 日本語フォント焼き込み済みの docker image なので、
1
| |
これ一発。表紙も目次も出ます。爾来、今に至るもずっとこちらを愛用しています。以上。
...で終わってしまうのもなんですんで、そういえばきょうび、この界隈はどうなってるんだろう? と思って軽く見渡してみました。
2026年の様子
一番の変化は Typst の台頭のようです。LaTeX 代替の組版システムで、pandoc が --pdf-engine=typst を直接サポートしたので、
1 2 | |
で TeX 環境なしの日本語PDFが出る時代になっていました。tlmgr に22分かけた身からすると隔世の感があります。日本語の組版にこだわるなら CSS 組版の Vivliostyle が健在で、技術同人誌方面は大体これみたいですね。
あと身も蓋もない変化として、AI に「これPDFにして」と言うと agent が勝手に pandoc なり headless Chrome なりを使って出してくる、というのがあります。ツール選定という行為自体が消えつつある、のが AI 時代の今、ということでしょうか。
3年前に動かなかった md-to-pdf、今なら動くのか
前回の記事で「どうしようもないエラーが出る」と切り捨てた md-to-pdf、2026年の今ならどうなのか。試してみました。
1 2 3 4 5 | |
一発では動かない。そこは3年前と同じなんですが、理由が進化していて、puppeteer が Chrome を自動ダウンロードしなくなったため、なんですね。エラーメッセージの指示どおりに
1 2 3 4 | |
今度は4秒で完了。出てきたPDFは GitHub 風スタイルで、日本語の本文・表・コードブロックとも問題なしでした。「一発では動かない」は3年経っても変わらないですが、エラーメッセージが親切になったので自己解決できる。時代は少しずつ良くなっています。
古い Linux でも動くのか
Typst は Rust 製で musl の static build が配られていて、pandoc の公式バイナリも static link なので、原理的には glibc の古い年代物の Linux でも「置くだけ」で動くはずです。docker が使えない・使いたくない環境でこそ試す価値があります。手元の古めの環境で試してみました。
mkdir -p ~/md2pdf/bin && cd ~/md2pdf
curl -sLO https://github.com/typst/typst/releases/latest/download/typst-x8664-unknown-linux-musl.tar.xz
tar xf typst-x8664-unknown-linux-musl.tar.xz && cp typst-*/typst bin/
# pandoc は GitHub releases の linux-amd64 tarball (static link) を同様に bin/ へ
export PATH=~/md2pdf/bin:$PATH
time pandoc sample.md -o out.pdf --pdf-engine=typst -V mainfont=IPAMincho
1
| |
glibc 2.23 という年代物の環境で動きました。初回はフォントキャッシュ構築込みで5秒、以後は1秒級。日本語フォントはシステムに入っているものを typst がそのまま拾ってくれるので (typst fonts で一覧できます)、うちは IPAMincho を指定しただけ。無いマシンでも otf を1個置いて TYPST_FONT_PATHS で指せば済みます。disk 占有は typst + pandoc 合わせて210MB (ほぼ pandoc の static binary です。配布は tar.gz で30MBほどなのに、展開すると5倍に膨らむのは Haskell の static binary らしいところ)。eisvogel-ja の docker image が1.29GBなので、6分の1で済みます。出来上がりの PDF も、表紙情報・見出し・表・コードブロックとも文句なしでした。
結論
今日から pandoc + typst で生きていこうと思います。
凄いですね、ベルリン工科大 Martin Haug さんと Laurenz Mädje さん。「LaTeX のコンパイル遅すぎ・エラー不親切すぎ」に切れて作った、と?! あの Knuth 先生に挑むというその心意気に拍手喝采です。
そういえば、知人が何を使って md to pdf しているのか、気になっています。今度聞いてみます。
