🐷

pandoc実行時のLaTeX エラーの意味と解決方法

に公開

はじめに

Linux上で、マークダウンをいい感じにPDFに変換して、非エンジニア系の人たちにある程度きれいに整形されたドキュメントとしてファイルを共有したいときにpandocはとても便利だと思います。環境準備で、Linux上でpandocをインストールしてさあ始めるぞ、と思ったときにいつもハマるのでメモがてらにハマりポイントをまとめます。

LaTeX エラーに遭遇

bash$ pandoc input.md  -o output.pdf

Error producing PDF.
! LaTeX Error: Unicode character  (U+1F9E0)
               not set up for use with LaTeX.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.

エラーの意味

このエラーは、LaTeX が日本語文字(Unicode: U+3084)を扱えず、PDF生成に失敗したことを意味します。

! LaTeX Error: Unicode character や (U+3084)
               not set up for use with LaTeX.

これは通常、pdflatex のような 非Unicode対応のLaTeXエンジンで日本語を含む文書を処理しようとした場合に発生します。

原因

  • pandoc実行時にデフォルトの LaTeX エンジンが pdflatex になっている
  • xelatexlualatex などの Unicode 対応エンジンを指定していない
  • 日本語フォントが指定されていない or インストールされていない

解決方法

1. xelatex を使用するように指定する

コマンドラインで --pdf-engine=xelatex を明示的に指定します。

pandoc input.md -o output.pdf --pdf-engine=xelatex

2. 日本語フォントを明示的に指定する

-V mainfont オプションで、日本語に対応したフォントを指定します。

pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Noto Sans CJK JP"

日本語フォントがインストールされていない場合は、以下でインストールできます(Ubuntu):

sudo apt install fonts-noto-cjk

3. Markdown ファイルに YAML メタデータを追加する

※この手順はオプションです。上記1,2をやっていれば不要。

Markdown の先頭に以下を追加しても同様の設定が可能です:

---
title: "日本語PDFテスト"
author: "山田太郎"
pdf-engine: xelatex
mainfont: "Noto Sans CJK JP"
fontsize: 12pt
---

補足:xelatex が入っていないときの対処

エラー例:

xelatex not found. Please select a different --pdf-engine or install xelatex

この場合は以下のコマンドで xelatex をインストールしてください(Ubuntu):

sudo apt update
sudo apt install texlive-xetex

動作確認用 最小ファイル例

test.md

---
title: "テスト"
author: "あなたの名前"
pdf-engine: xelatex
mainfont: "Noto Sans CJK JP"
---

こんにちは、やる気で頑張ろう!

実行コマンド

pandoc test.md -o test.pdf

まとめ

これでなどの日本語文字によるエラーは解消されるんじゃないかと思います!

Discussion