Pandoc(パンドック)

1. Pandoc とは何か?

1.1 概要

Pandoc は、さまざまなマークアップ言語や文書フォーマットを 相互に変換 できるオープンソースのコマンドラインツールです。開発は John MacFarlane 氏を中心に進められており、強力な機能セットとコミュニティに支えられ、継続的にメンテナンスされています。

  • 対応フォーマットの一例
    • Markdown (CommonMark / GFM / etc…)
    • LaTeX
    • HTML / HTML5
    • DOCX (Microsoft Word)
    • ODT (OpenDocument)
    • EPUB
    • PDF (LaTeX エンジン経由、ほかオプションも有)
    • AsciiDoc
    • reStructuredText
    • Texinfo
    • Org mode (Emacs)
    • …など多数

このように、多岐にわたる入力・出力フォーマットをサポートしているため、「マークダウンで書いた文章を PDF に変換したい」「LaTeX を Word に変換したい」「Org mode から Markdown に」など、文書変換に関するあらゆるニーズに応えます。

1.2 誕生の背景

従来、マークアップ言語ごとに専用のコンバーターを使う という状況が一般的でした。
しかし、この方法だと「A 言語から B 言語に変換する」ツールと、「A 言語から C 言語に変換する」ツールの両方を探してインストールし、さらにフォーマットごとに細かいクセを把握する必要がありました。

そこで、「あらゆるフォーマット間の変換を 1 つのツールで済ませたい」 という思いから、Pandoc の開発が始まりました。現在では 「ドキュメント変換の万能ツール」 として広く認知されています。

1.3 Pandoc の代表的な特徴

  1. 豊富な入力・出力フォーマット
    • 多種多様なマークアップ言語やオフィス文書形式に対応。
    • プラグインや Lua フィルタを使えばさらに拡張可能。
  2. 高い拡張性
    • フィルタ機能やテンプレート機能で自由度が高い。
    • カスタム CSS, Lua フィルタ, テンプレートでドキュメントの外観を柔軟に制御。
  3. 学術文書にもビジネス文書にも対応
    • LaTeX ベースの論文作成、Word や PDF 出力によるビジネス用途まで幅広く利用可能。
    • BibTeX や CSL を使った文献管理・参考文献リスト生成もサポート。
  4. オープンソース & クロスプラットフォーム
    • Windows / macOS / Linux で使える。
    • GitHub 上でソースを公開しており、誰でも貢献可能。

2. Pandoc のインストール

2.1 パッケージマネージャー経由

  • macOS: Homebrew を使用して brew install pandoc
  • Windows: Chocolatey や Scoop などで choco install pandoc / scoop install pandoc
  • Linux (Debian/Ubuntu系): sudo apt-get install pandoc
  • Linux (RedHat系): sudo dnf install pandoc / sudo yum install pandoc

また、公式の リリースページ からバイナリをダウンロードしてインストールすることもできます。

2.2 Docker イメージ

Docker を利用している場合、pandoc/core の公式イメージがあるため、docker pull pandoc/core で環境を作れます。
LaTeX などの依存ツールもまとめて使えるイメージも公開されているので、PDF 出力用に整った環境を簡単に構築できます。


3. Pandoc の基本的な使い方

Pandoc はコマンドラインツールとして機能します。最も基本的な使い方は、

pandoc 入力ファイル -o 出力ファイル

です。ファイル拡張子から自動的にフォーマットを推定します。たとえば、

pandoc README.md -o README.pdf

とすると、Markdown から PDF に変換を行います。
ただし、PDF 出力には内部的に LaTeX エンジン(pdflatex など)か、もしくは wkhtmltopdf などのツールを導入しておく必要があります。

3.1 入出力フォーマットの指定

自動推定がうまくいかない場合や、明示的に指定したい場合は -f (from) と -t (to) オプションを使います。

pandoc -f markdown -t html input.md -o output.html
  • -f markdown : 入力形式は Markdown
  • -t html : 出力形式は HTML

3.2 メタデータの埋め込み

Markdown の冒頭部分に YAML 形式でメタデータを記述し、Pandoc による変換時にタイトルや著者名などを反映させることができます。

---
title: "Pandoc の解説"
author: "山田 太郎"
date: "2025-01-01"
---

たとえば PDF を生成する際に、このメタデータがタイトルページやヘッダ/フッタに反映されます。


4. 主な対応フォーマット一覧と特徴

4.1 Markdown

Pandoc は 独自拡張を含む Markdown をサポートしています。表や脚注、数式ブロック、引用文献など、標準 Markdown にはない機能を使うことが可能です。
Pandoc Markdown 独自の拡張例:

  • fenced_code_blocks (コードブロックの囲み)
  • footnotes (脚注)
  • table_captions (表のキャプション)
  • link_attributes (リンクに属性を付与)
  • など多数

Markdown から出力先を PDF / DOCX / HTML 等々に自在に変換できるため、「下書きは Markdown で書き、必要に応じて Word や PDF にする」 というワークフローを組む人が多いです。

4.2 LaTeX

Pandoc は内部で LaTeX のパーサおよび出力が可能。

  • Markdown → LaTeX : そのまま .tex に変換し、後から pdflatex などを回せる。
  • LaTeX → Word / PDF / HTML : 既存の LaTeX 文書をさらに別フォーマットへ。

LaTeX コマンドの一部をサポートしていない場合もあるため、大規模な LaTeX 文書を変換する際は注意が必要ですが、論文執筆やアカデミックな用途でも多用されています。

4.3 HTML / HTML5

Pandoc は HTML から Markdown や DOCX、PDF などへの逆変換も扱えます。
単純な HTML だけでなく、一部のタグや属性を Pandoc 独自に解釈・変換してくれます。
Web コンテンツを一括で PDF 化したい場合などに便利です。

4.4 DOCX (Microsoft Word) / ODT (LibreOffice)

Pandoc は Word 文書への出力と読み込みの両方をサポートしています。

  • Markdown → DOCX : ビジネスドキュメントを Markdown で書いて Word に出力。
  • DOCX → Markdown : 既存の Word 文書を Markdown に変換し、バージョン管理下で扱えるテキストベースに移行。

ODT 形式も同様に扱えるため、LibreOffice を利用している場合もスムーズに変換可能です。

4.5 EPUB

Pandoc で簡単に電子書籍(EPUB)を作成できます。

  • Markdown → EPUB : メタデータや表紙画像を指定したり、目次を自動生成したりできる。
    Kindle や他の eBook リーダーでの閲覧用に手軽に書き出し可能です。

4.6 PDF

Pandoc が直接 PDF を出力する場合、基本的には LaTeX エンジンpdflatex, xelatex, lualatex)を経由します。また、オプションで wkhtmltopdfweasyprint を使った HTML 経由の PDF 化も可能です。
LaTeX ベースの場合、スタイルのカスタマイズも LaTeX テンプレートを通じて行うことができます。


5. Pandoc の高度な機能

5.1 テンプレート機能

Pandoc は出力時に テンプレート を適用して、ドキュメントの見た目や構造をカスタマイズできます。
たとえば PDF 出力用の LaTeX テンプレートを自作し、会社のロゴ入りヘッダを埋め込んだり、スタイルを統一したりできます。

  • テンプレートは、pandoc -D <フォーマット> コマンドでデフォルトテンプレートを確認可能。 pandoc -D latex > default.latex これを編集して --template=ファイル で指定すると、独自テンプレートが適用されます。

5.2 フィルタ (Filter) / Lua フィルタ

Pandoc は 独自のフィルタ 機能を備えており、ドキュメント変換の前後にテキストや AST(抽象構文木)を操作することが可能です。

  • Pandoc フィルタ : Haskell や Python, Ruby, Node.js 等で書ける拡張機能。
  • Lua フィルタ : Lua スクリプトで AST を直接いじれる。より高速で Pandoc 本体との相性がよい。

用途例: 図や表の番号付けをカスタマイズ、特定のマクロを別の構文へ置き換える、文献スタイルを変更するといったことが容易になります。

5.3 文献管理・引用 (Citeproc)

Pandoc は 参考文献の管理・自動生成 にも対応しています。

  • YAML メタデータで bibliography: refs.bib を指定し、BibTeX ファイルや CSL JSON を読み込み。
  • テキスト中に [引用キー][@author2020] のように書くと、ビブリオグラフィの挿入や引用番号のフォーマットを自動処理。
  • --citeproc オプションを使うと、CSL スタイル(APA, MLA, Chicago など)に基づいた出力が行われます。

アカデミックな文書執筆にも大変便利です。

5.4 数式サポート

Markdown から PDF や DOCX に変換する際、数式 (MathJax / LaTeX 数式) が使えます。

  • インライン数式: $ a^2 + b^2 = c^2 $
  • ブロック数式:
    “` ∫01×2 dx=13\int_{0}^{1} x^2 \, dx = \frac{1}{3} “`

LaTeX 変換を経由するため、PDF 出力の場合は LaTeX 同等の数式クオリティで表示されます。


6. 代表的な使用例

6.1 マークダウンで論文を書く

  1. Markdown で文章・数式・図表・参考文献を記述。
  2. Pandoc で PDF (via LaTeX) に一発変換。
  3. 学会やジャーナルに提出用の LaTeX テンプレートに合わせて整形も可能。

6.2 Markdown → Word 変換

  • 顧客レビューや社内の業務資料で Word が必須という場合に、Pandoc がとても役立ちます。
  • まずは軽快に Markdown で執筆し、提出段階で pandoc input.md -o output.docx するだけで Word 文書が完成。

6.3 HTML をまとめて PDF に

  • Web マニュアルやブログ記事を一括で PDF 化して配布したい場合に Pandoc を利用。
  • pandoc *.html -o manual.pdf のように複数ファイルをまとめて変換し、目次やリンクも引き継いだ PDF を作成可能。

6.4 Word → Markdown / HTML

  • 既存の Word 文書をテキストベースの管理下に置きたい、GitHub リポジトリでレビューしたい… という際、pandoc input.docx -o output.md でシンプルに変換。
  • 過去にメールで受け取った Word ファイルを素早くウェブ公開用の HTML に変換するなど、多彩な場面で威力を発揮。

7. トラブルシューティング

7.1 変換で崩れる要素がある

  • 一部の特殊な LaTeX コマンドや Word の機能は Pandoc ではサポート外の場合があります。
  • Lua フィルタマクロ置換 で補完するか、テンプレートの修正が必要なことも。
  • Word での段組みや複雑なレイアウトは、Pandoc で 100% 正確に再現するのは難しいことがあります。

7.2 日本語 PDF の文字化け・フォント問題

  • 文字化けやフォント未設定が原因でエラーが発生することがあるため、LaTeX 環境では platex, uplatex, xelatex, lualatex など日本語対応エンジンを設定しておく必要あり。
  • Pandoc のコマンドラインに --pdf-engine=xelatex などを指定し、さらにフォント指定を \setmainfont{...} で行うなど、LaTeX テンプレート側の設定がポイントになります。

7.3 画像の埋め込みや相対パスの不一致

  • Markdown 文書中に相対パスで画像を指定した場合、Pandoc 実行場所によってうまく画像が読み込めないケースがある。
  • -i のディレクトリ指定や、--resource-path オプションを利用して解決するか、絶対パスで指定する。

8. Pandoc をより活用するためのヒント

8.1 Makefile やビルドスクリプトで効率化

  • 複数のドキュメントを定期的に変換するなら、Makefile や shell スクリプト・PowerShell などでコマンドを自動化すると便利。
  • CI/CD パイプラインに Pandoc を組み込めば、リポジトリにプッシュしたタイミングで最新の PDF / DOCX が生成されるようにできる。

8.2 共同執筆のワークフロー

  • GitHub や GitLab 上で、Markdown + Pandoc ベースのドキュメント執筆を行い、Pull Request でレビュー。
  • リリース時に Pandoc で最終版の PDF / HTML / DOCX を一括生成・配布。
  • Word や PDF の編集履歴ではなく、テキストベースの差分を追えるため、コラボレーション効率が高まる。

8.3 Pandoc + Mermaid

  • Mermaid 記法で作った図を Markdown 内に埋め込み、Pandoc 経由で最終的に PDF / DOCX / HTML に含める方法もある。
  • 一部ツールチェーンやフィルタを追加で導入する必要があるが、テキストベースで図を管理でき、ドキュメントと図の整合性が取りやすい。

9. まとめ

Pandoc は、学術・ビジネス・技術文書を問わず、さまざまな文書を自由自在に変換 できる非常にパワフルなツールです。
ポイントを要約すると:

  1. 幅広いフォーマットを双方向に変換:Markdown・LaTeX・HTML・DOCX・ODT・EPUB・PDF 等、あらゆる形式を相互に変換できる。
  2. コマンド一つで完結する利便性pandoc input.md -o output.pdf のように単純なコマンドで済む。
  3. テンプレート・フィルタ・Lua フィルタなど高度な機能:外観や変換過程を細部まで制御可能。
  4. 学術からビジネスまで多彩な活用領域:論文執筆、書籍・マニュアル作成、社内ドキュメントの統一などに重宝。
  5. オープンソース・クロスプラットフォーム:Windows / macOS / Linux どれでも利用でき、コミュニティも活発。

「Markdown で書いた文章を、PDF や Word で提出しなければならない…」というケースや、
「既存の Word 文書を Markdown に変換して Git 管理したい…」というケース、
「LaTeX を書くのが少し面倒なので Markdown + Pandoc + LaTeX で楽をしたい…」など、
Pandoc はあらゆるシーンで時間と手間を大きく削減してくれます。

ぜひ Pandoc を導入し、手軽な使い方から始めてみてください。最初は簡単な Markdown → PDF / DOCX 変換などで流れを掴み、慣れてきたらフィルタやテンプレート機能を活用していくと、Pandoc の真の力を実感できるはずです。