mcpField
P
pandoc

pandoc

github.com/plindeドキュメント8487 回インストール28 週間前に更新
リポジトリ

pandoc について

Pandoc を使う人向けの文書変換スキルです。形式変換、出力設定、よくある表示上の問題への対処方法を案内します。

主な機能

  1. 01Markdown から Word、PDF、HTML への変換
  2. 02Word 文書から Markdown への変換
  3. 03文書メタデータと目次の設定
  4. 04組版や Unicode に応じた PDF エンジンの選択
  5. 05リスト、表、コードのハイライト問題の対処

活用シーン

  1. 01Markdown のレポートを Word 文書にする
  2. 02Unicode テキストを含む Markdown から PDF を生成する
  3. 03リストと改行を保った HTML を作成する

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/plinde/claude-plugins --skill pandoc

インストール後、Claude Code で/pandocを入力して読み込まれたか確認します。

詳細

Pandoc ドキュメント変換スキル

万能ドキュメントコンバーターの pandoc を使って、ドキュメントをさまざまな形式に変換します。

前提条件

# Check if pandoc is installed
pandoc --version

# Install via Homebrew if needed
brew install pandoc

よく使う変換

Markdown から Word(.docx)への変換
# Basic conversion
pandoc input.md -o output.docx

# With table of contents
pandoc input.md --toc -o output.docx

# With custom reference doc (for styling)
pandoc input.md --reference-doc=template.docx -o output.docx

# Standalone with metadata
pandoc input.md -s --metadata title="Document Title" -o output.docx
Markdown から PDF への変換
# Requires LaTeX - install one of:
#   brew install --cask basictex      # Smaller (~100MB)
#   brew install --cask mactex-no-gui # Full (~4GB)
# After install: eval "$(/usr/libexec/path_helper)" or new terminal

# Basic conversion (uses pdflatex)
pandoc input.md -o output.pdf

# With table of contents and custom margins
pandoc input.md -s --toc --toc-depth=2 -V geometry:margin=1in -o output.pdf

# Using xelatex (better Unicode support - box drawings, arrows, etc.)
export PATH="/Library/TeX/texbin:$PATH"
pandoc input.md --pdf-engine=xelatex -V geometry:margin=1in -o output.pdf

PDF エンジンの選択:

エンジン使用する場面
pdflatexデフォルト。ASCII 文字のみの場合
xelatexUnicode 文字(矢印、罫線文字、絵文字)を使う場合
lualatex複雑な組版や OpenType フォントを使う場合
Markdown から HTML への変換

重要: 改行とリストを正しく処理するため、必ず -f gfm(GitHub Flavored Markdown)を使ってください。標準 Markdown では、連続した行がひとつの段落にまとめられます。

# RECOMMENDED: GitHub Flavored Markdown with full styling
pandoc -f gfm -s -H <(cat << 'STYLE'
<style>
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;max-width:800px;margin:0 auto;padding:2em;line-height:1.6}
h1{border-bottom:2px solid #333;padding-bottom:0.3em}
h2{border-bottom:1px solid #ccc;padding-bottom:0.2em;margin-top:1.5em}
h3{margin-top:1.2em}
ul,ol{margin:0.5em 0 0.5em 1.5em;padding-left:1em}
ul{list-style-type:disc}ol{list-style-type:decimal}
li{margin:0.3em 0}ul ul,ol ul{list-style-type:circle;margin:0.2em 0 0.2em 1em}
table{border-collapse:collapse;width:100%;margin:1em 0}
th,td{border:1px solid #ddd;padding:8px;text-align:left}
th{background-color:#f5f5f5}
code{background-color:#f4f4f4;padding:2px 6px;border-radius:3px}
pre{background-color:#f4f4f4;padding:1em;overflow-x:auto;border-radius:5px}
blockquote{border-left:4px solid #ddd;margin:1em 0;padding-left:1em;color:#666}
</style>
STYLE
) input.md -o output.html

# Quick version (minimal styling)
pandoc -f gfm -s input.md -o output.html

# With hard line breaks (newlines become <br>)
pandoc -f markdown+hard_line_breaks -s input.md -o output.html

# Self-contained (embeds images/CSS)
pandoc -f gfm -s --embed-resources --standalone input.md -o output.html

形式オプション:

オプション使用する場面
-f gfmデフォルトの選択肢。リスト、改行、表を正しく処理します
-f markdown+hard_line_breaksすべての改行を <br> に変換します
-f commonmarkCommonMark に厳密に準拠する場合
印刷して PDF 化するための HTML(LaTeX 不要)

LaTeX が使えない場合は、スタイルを適用した HTML を作成し、ブラウザーから印刷して PDF にします。

# Create inline CSS file
cat > /tmp/print-style.css << 'EOF'
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
       max-width: 800px; margin: 0 auto; padding: 2em; line-height: 1.6; }
h1 { border-bottom: 2px solid #333; padding-bottom: 0.3em; }
h2 { border-bottom: 1px solid #ccc; padding-bottom: 0.2em; margin-top: 1.5em; }
h3 { margin-top: 1.2em; }
/* Lists - critical for proper rendering */
ul, ol { margin: 0.5em 0 0.5em 1.5em; padding-left: 1em; }
ul { list-style-type: disc; }
ol { list-style-type: decimal; }
li { margin: 0.3em 0; }
ul ul, ol ul { list-style-type: circle; margin: 0.2em 0 0.2em 1em; }
ul ol, ol ol { margin: 0.2em 0 0.2em 1em; }
ul ul ul, ol ul ul { list-style-type: square; }
/* Tables */
table { border-collapse: collapse; width: 100%; margin: 1em 0; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f5f5f5; }
/* Code */
code { background-color: #f4f4f4; padding: 2px 6px; border-radius: 3px; }
pre { background-color: #f4f4f4; padding: 1em; overflow-x: auto; border-radius: 5px; }
/* Other */
blockquote { border-left: 4px solid #ddd; margin: 1em 0; padding-left: 1em; color: #666; }
@media print { body { max-width: none; } }
EOF

# Convert with embedded styles (ALWAYS use -f gfm)
pandoc -f gfm input.md -s --toc --toc-depth=2 -c /tmp/print-style.css --embed-resources --standalone -o output.html

# Open and print to PDF (Cmd+P > Save as PDF)
open output.html
Word から Markdown への変換
# Extract markdown from docx
pandoc input.docx -o output.md

# With ATX-style headers
pandoc input.docx --atx-headers -o output.md

便利なオプション

オプション説明
-s / --standaloneヘッダーとフッターを含む独立したドキュメントを生成します
--toc目次を生成します
--toc-depth=N目次の深さ(デフォルト:3)
-V key=valueテンプレート変数を設定します
--metadata key=valueメタデータ項目を設定します
--reference-doc=FILEスタイル設定に FILE を使用します(docx/odt)
--template=FILEカスタムテンプレートを使用します
--highlight-style=STYLE構文ハイライトを設定します(pygments、tango など)
--number-sectionsセクションの見出しに番号を付けます
-f FORMAT入力形式(自動検出されない場合)
-t FORMAT出力形式(自動検出されない場合)

形式識別子

形式識別子
Markdownmarkdown、gfm(GitHub)、commonmark
Worddocx
PDFpdf
HTMLhtml、html5
LaTeXlatex
RSTrst
EPUBepub
ODTodt
RTFrtf

Google Docs のワークフロー

書式を保ったまま Markdown を Google Docs に取り込むには:

# 1. Convert to docx
pandoc document.md -o document.docx

# 2. Upload to Google Drive
# 3. Right-click > Open with > Google Docs

Google Docs は .docx ファイルを適切にインポートし、次の要素を保持します:

  • 見出し
  • 太字/斜体
  • リスト(箇条書きと番号付き)
  • 表
  • リンク
  • コードブロック(等幅フォント)

PSI ドキュメントの変換

表や複雑な書式を含む PSI ドキュメントの場合:

# Convert PSI markdown to Word
pandoc PSI-document.md \
  --standalone \
  --toc \
  --toc-depth=2 \
  -o PSI-document.docx

# Open for review
open PSI-document.docx

トラブルシューティング

リストや行がつながってしまう(HTML)

箇条書き、番号付きリスト、または連続する行がひとつの段落にまとまる場合:

原因: 標準 Markdown では、連続した行がひとつの段落として扱われます。リストの前には空行が必要です。

対処法: GitHub Flavored Markdown(-f gfm)を使います:

# Always use -f gfm for reliable formatting
pandoc -f gfm -s input.md -o output.html

# For documents where newlines should be <br> tags
pandoc -f markdown+hard_line_breaks -s input.md -o output.html

この問題が起きる理由:

  • 標準 Markdown:Line 1\nLine 2 → <p>Line 1 Line 2</p>(結合される)
  • GFM:リストの検出が改善され、特殊なケースにも対応します
  • +hard_line_breaks:Line 1\nLine 2 → Line 1<br>Line 2(改行が保持される)
表が正しく表示されない

Pandoc で表を表示するには、Markdown の表構文を正しく記述する必要があります:

| Header 1 | Header 2 |
|----------|----------|
| Cell 1   | Cell 2   |
コードブロックのハイライトが表示されない

言語識別子を付けたフェンス付きコードブロックを使います:

```python
def example():
    pass

### PDF Generation Fails

**"pdflatex not found"** - Install LaTeX:
```bash
# Smaller option (~100MB)
brew install --cask basictex

# Full option (~4GB)
brew install --cask mactex-no-gui

# After install, update PATH
eval "$(/usr/libexec/path_helper)"
# Or open a new terminal

Unicode 文字(罫線文字、矢印、絵文字)のエラー:

# Use xelatex instead of pdflatex
export PATH="/Library/TeX/texbin:$PATH"
pandoc input.md --pdf-engine=xelatex -o output.pdf

LaTeX が使えない場合 — HTML から PDF に印刷するワークフローを使います:

pandoc input.md -s --toc -o output.html
open output.html
# Then Cmd+P > Save as PDF

セルフテスト

# Verify pandoc installation
pandoc --version | head -1

# Test basic conversion
echo "# Test\n\nHello **world**" | pandoc -f markdown -t html

コメント