🛠️

Pandocを利用してHTML、PDFを作成する

2024/05/06に公開

1. 概要

PandocはmarkdownなどからHTML、PDFなど様々な形式に変換してくれる便利なツールである。これを使用すればMarkdownで書かれた1つの文章から、HTMLで書かれた記事や\LaTeXを通したPDFの資料を作成することができる。Pandocはデフォルトのまま使用すると、HTMLでTex形式の数式が利用できなかったり、スタイルがシンプルすぎるのでテンプレートを利用する。今回、利用したテンプレートの覚書をここに残す。

https://pandoc.org/

2. 必要なパッケージ

  • Pandoc
  • \LaTeX
$ sudo apt install texlive-full
$ sudo apt install pandoc

3. MarkdownをHTMLドキュメントに変換

「easy-pandoc-templates」というテンプレートを使用してHTMLファイルを作成する。

https://github.com/ryangrose/easy-pandoc-templates

以下のコマンドで ~/.pandoc/templates 下にインストールする。

$ curl 'https://raw.githubusercontent.com/ryangrose/easy-pandoc-templates/master/copy_templates.sh' | bash

以下のコマンドでsample.mdをindex.htmlに変換

pandoc \
    sample.md \
    -o index.html \
    -f markdown+emoji \
    -t html -s \
    --mathjax \
    --template=easy_template

利用した引数の意味は次の通り

引数 意味
-f markdown+emoji 変換元の形式が絵文字を含むMarkdown
-t html HTMLに変換
-s standaloneで出力
--mathjax \LaTeX形式の数式を含む
--template=easy_template easy pandoc templatesを利用

4. MarkdownをPDFドキュメントに変換

「pandoc-latex-template」というテンプレートを使用してMarkdownをLatexを経由してPDFファイルに変換する。

https://github.com/Wandmalfarbe/pandoc-latex-template

READMEに従い、リリース (version 2.4.2) ページからEisvogel.zipをダウンロードして展開するとeisvogel.latexがあるので、これを $HOME/.pandoc/templates/などに移動。

以下のコマンドでsample.mdをindex.pdfに変換

pandoc \
    sample.md \
    -o sample.pdf \
    -f markdown \
    -V CJKmainfont=IPAexGothic \
    --pdf-engine=lualatex \
    --template=eisvogel \
    --listings

利用した引数の意味は次の通り

引数 意味
-f markdown 変換元の形式(Markdown)
-V CJKmainfont=IPAexGothic 利用する日本語フォント
--pdf-engine=lualatex \LaTeXエンジンを選択
--template=eisvogel pandoc-latex-template templatesを利用
--listings 文章にコードブロック等を含む場合

Discussion