X(Twitter) Zenn GitHub RSS 共有

Pandocメモ

作成日時:2025-09-02
更新日時:2025-09-02

概要

DLsiteに小説を投稿する際、Markdownで書いた原稿をPDFに変換した。

Pandocインストール

手持ちのOSがWindowsなので、wslで実行。

# texインストール
sudo apt install texlive-full

# pandocインストール
sudo apt install pandoc

# 日本語フォント確認
fc-list | grep "jp"

# 無ければ好きなフォントをインストール
sudo apt install fonts-noto-cjk

# (自分でテンプレートを作成する場合)テンプレート作成
pandoc -D latex > mytemplate.tex

# 生成
pandoc -f markdown sample.md -o output.pdf \
    --pdf-engine=lualatex \
    # -Vでコマンド中に設定を記載できる
    # templateのTeXに記載しているなら無用
    # -V documentclass=ltjsarticle \
    # -V CJKmainfont="Noto Serif CJK JP" \
    --template=mytemplate.tex

テンプレートは自分で作ってもいいし、ネットで拾ってもいい。
pandoc-templates.org

おすすめのテンプレはこれ。
GitHub - Wandmalfarbe/pandoc-latex-template: A pandoc LaTeX template to convert markdown files to PDF or LaTeX.
examplesを見れば、大体やりたいことが載ってる。

YAMLマター

MarkdownのYAMLマターに余白とか表紙とかの設定を記載できる。
latexに直で書いてもいいし、生成コマンドの引数で渡してもよい。

papersize: a5
geometry:
  - top=1cm
  - bottom=2cm  
  - left=0.8cm
  - right=0.8cm

改行

\newpage

リンクの記載

[文言](#見出し)

結合

pandoc file1.md file2.md file3.md -o combined.pdf

# pdfとの結合
# インストール(Ubuntu/Debian)
sudo apt install pdftk

# 結合
pdftk file1.pdf file2.pdf file3.pdf cat output merged.pdf

md-to-pdf

Pandocを使うまでもない簡易的な変換ならばこれを使う。

思ったこと

あたりまえだけども、MarkdownもLaTeXもただのフォーマットである。
pandocやptex2pdf、VS Codeのプレビューなどにおいて、フォーマットのルールに基づきレンダリング/変換されるだけ。
LaTeXは外部ファイルのデータを表現できる。
pandocがLaTeXテンプレートをもとにMarkdownをPDFに変換するのは、Markdownを外部データとして取り扱い、LaTexのフォーマットで解釈してPDFに変換しているだけ。