日本語のMarkdownをPDFに変換する

2023-04-02

Markdown 形式でメモしていると,Markdown のプレビューが可能なソフトウェアを使用する必要があります.

フォーマットを自由に変更したいとき,あるいは書類として作成したいときには PDF に変換するのがおすすめです.

Pandoc

Markdown から PDF に変換するには,Pandoc というソフトウェアを利用します.

Pandoc は Markdown→PDF 以外にもさまざまな文書の変換を提供しています.

以前に,Markdown からパワーポイントや PDF でスライドを生成したときにも利用しました.

https://blog.mktia.com/md-to-slide

利用環境

本記事は Unix 環境を前提に説明しています.Windows 環境では本記事の通りに進められないため,ご留意ください.

また,Pandoc で PDF に変換する際に TeX の機能を利用するため,TeX の環境構築が必要です.

以下の記事や公式ドキュメントなどを参考に,予め環境を用意してください.

https://blog.mktia.com/install-tex-on-mac

変換方法

文書に日本語が含まれない場合,PDF への変換は以下のコマンド一行で実行できます.

terminal

$ pandoc path/to/example.md -s -o path/to/output.pdf

オプションのうち,-s はスタンドアローンでの起動,-o は出力先のパス,ファイル名の指定になります.

文書に日本語が含まれる場合はフォントが対応せず,エラーが表示される場合は,TeX を利用して変換しなければならないため,--pdf-engine を指定します.

xelatex または lualatex を指定するようにとコマンドで案内されますが,いずれにおいても以下のエラーが表示されることがあります.

[WARNING] Missing character: There is no は (U+306F)(U+306F) in font [lmroman10-regular]:mapping=t

この場合は,オプションでドキュメントクラスや使用するフォントを指定します.

terminal

$ pandoc path/to/example.md -s -o path/to/output.pdf --pdf-engine=lualatex -V documentclass=ltjsarticle -V luatexjapresetoptions=hiragino-pron

上記以外にもさまざまなパターンがあるようなので,詳細は以下記事をご覧ください.

参考:メモ: Pandoc+LaTeX で気軽に日本語 PDF を出力する - Qiita

(Option)コマンド化

毎回長いコマンドを打たなくても良いように,コマンドを登録します.

※予め ~/bin のパスを通しています.

terminal

$ nano ~/bin/md2pdf

md2pdf

pandoc $1 -s -o $2.pdf --pdf-engine=lualatex -V documentclass=ltjsarticle -V luatexjapresetoptions=hiragino-pron

実行権限も追加しておきます.

terminal

$ chmod +x ~/bin/md2pdf

上記の設定を行うと,以下のように呼び出すことができます.

terminal

$ md2pdf path/to/example.md path/to/output