Claude CodeでMarkdownを縦書き日本語PDFに変換する手順
Claude Codeに縦書きPDFを直接出力する機能はありません。LaTeXの日本語文書クラスjlreqのソースを書かせ、ローカルのTeX環境でコンパイルさせる手順を解説します。
Claude Codeで縦書きPDFを作るとは
Claude Code自体には、縦書きの日本語PDFを直接出力する機能はありません。Claude Codeはローカルのターミナルで動くコーディングエージェントで、ファイルを編集しコマンドを実行するのが役割です。縦書きPDFが手に入るのは、Claude CodeがLaTeXのソースコードを書き、手元のTeX環境でコンパイルまで自動で走らせてくれるからです。
つまり実態は「LaTeXを書かせて変換する」手順であり、Claude Code固有の変換エンジンが動いているわけではありません。この区別を最初に押さえておくと、うまくいかないときの切り分けが楽になります。詰まるのは大抵、Claude Codeの指示ではなくTeX環境側です。
日本語の縦書き組版を担うのは、LaTeXの文書クラスjlreqです。日本語組版処理の要件(JLReq)を土台にした文書クラスで、platex・uplatex・lualatexの3エンジンに対応しています。クラスオプションにtateを渡すだけで縦組みに切り替わります。
必要な準備 — TeX環境の用意
Claude Codeが書いたLaTeXソースをコンパイルするには、日本語組版に対応したTeX Live環境がローカルに要ります。macOSならbrew install --cask mactex-no-gui、Linuxなら各ディストリビューションのTeX Liveパッケージで揃います。jlreqクラス自体はTeX Liveに同梱されているため、追加インストールは通常不要です。
エンジンはLuaLaTeXを選ぶのが無難です。upLaTeXより新しいUnicode対応が進んでいて、lualatexコマンド1つで完結します。Claude Codeのbashツールでコンパイルまで通すなら、この環境構築だけ先に人間が済ませておく必要があります。Claude Codeはネットワーク越しにTeXパッケージを追加インストールできる保証がないため、環境が無い状態で丸投げするとjlreq.clsが見つからないエラーで止まります。
Claude Codeはターミナル・IDE拡張・デスクトップアプリ・Webのいずれの利用形態でも、ファイルの読み書きとコマンド実行を通じて動きます。今回のようにローカルのTeXコマンドを叩く手順は、ローカルにファイルシステムとシェルを持つターミナル利用が前提です。
ステップ1: 縦書き文書のひな型を書かせる
Claude Codeに次のように依頼します。
jlreqクラスを使い、tateオプションで縦書きのLaTeX文書(sample.tex)を作成してください。
タイトルは「縦書きサンプル」、本文に3段落程度のダミーの日本語文章を入れてください。
エンジンはlualatexを想定してください。Claude Codeは\documentclass[tate,lualatex]{jlreq}から始まるソースを書きます。エンジン名をクラスオプションに渡すか、コンパイル時のエンジン指定だけに任せるかはどちらでも動きますが、後続のコンパイルコマンドと矛盾しないよう明示しておくとやり直しが減ります。
ステップ2: コンパイルまで一気に頼む
ファイルを作らせたら、そのままコンパイルも依頼します。
lualatex sample.texlualatexはLuaTeX-jaという日本語処理パッケージと連携して動きます。jlreqはLuaTeX-jaを介してLuaLaTeXでの日本語組版に対応しているため、追加設定なしにこのコマンド1本でsample.pdfが生成されます。エラーが出た場合、Claude Codeにログをそのまま貼って「このエラーを解消してsample.texを直してください」と頼めば、.logファイルを読んで原因を切り分けてくれます。
ステップ3: 既存のMarkdownを縦書き文書に流し込む
すでにMarkdownの原稿がある場合は、それをjlreq形式のLaTeXに変換する作業もClaude Codeに任せられます。
draft.mdの内容を、jlreqクラス(tateオプション)のLaTeX文書に変換してください。
見出しは\section、\subsectionに、箇条書きはitemize環境に変換してください。
変換後にlualatexでコンパイルし、エラーが出たら自分で修正してください。Markdownの見出し階層をLaTeXのセクションコマンドに機械的に対応づけるだけなら、Pandocのような専用ツールを使う手もあります。ただしPandoc経由の変換は既定のテンプレートが横書き前提のことが多く、縦書き用のテンプレート調整が別途必要です。Claude Codeに直接LaTeXを書かせる方法は、その調整も含めて一度に依頼できるのが実務上の利点です。
upLaTeXでコンパイルする場合
LuaLaTeXではなくupLaTeXの環境しか無い場合も、jlreqはそのまま使えます。upLaTeXはDVIを経由するため、コンパイルは2段階になります。
uplatex sample.tex
dvipdfmx sample.dviuplatexでDVIファイルを作り、dvipdfmxでPDFに変換する流れです。Claude Codeに「upLaTeX + dvipdfmxでコンパイルしてください」と伝えれば、この2段階のコマンドを順番に実行してエラーを確認してくれます。LuaLaTeXより歴史が長く、既存の和文TeXドキュメント資産(pxrubricaによるルビ振りなど)との相性を優先したい場合はupLaTeX側を選ぶ理由になります。ソース内のクラスオプション(またはコンパイルコマンド)で指定したエンジンと、実際にコンパイルに使うコマンドは常に一致させます。
jlreqの主なクラスオプション
Claude Codeに縦書き文書を依頼するとき、どのオプションを指定すればよいかを把握しておくと、1回の指示で狙った版面に近づけられます。
| オプション | 効果 | 指定例 |
|---|---|---|
tate | 効果縦書きに切り替える | 指定例\documentclass[tate]{jlreq} |
book / report | 効果article相当をbook/report相当に変える | 指定例\documentclass[tate,book]{jlreq} |
paper=<用紙名> | 効果用紙サイズを指定(A系列・B系列・JIS B系列・レターに対応) | 指定例paper=b5paper |
jafontsize=<寸法> | 効果和文フォントサイズを欧文と別に指定 | 指定例jafontsize=10Q |
number_of_lines=<自然数> | 効果1ページあたりの行数を固定 | 指定例number_of_lines=20 |
これらはすべてクラスオプションとして\documentclass[tate,paper=b5paper,...]{jlreq}のようにカンマ区切りで並べます。Claude Codeへの依頼文にも同じ形式でオプション名を書けば、そのままソースに反映されます。
段落中に割注(わりちゅう、本文中に2行に分けて挿入する注記)を入れたい場合は\warichu{}コマンド、脚注ではなく傍注として出したい場合は\sidenote{}が使えます。どちらもjlreqが独自に提供するコマンドで、標準のLaTeX文書クラスには無い機能です。縦組みの実務文書(契約書の別記や辞書的な注釈)ではこの2つが役立つ場面が多く、Claude Codeへの依頼時に「割注で入れてください」と伝えるだけで対応する構文を選んで書いてくれます。
より細かい版面調整は\jlreqsetup{}というプリアンブル専用の設定コマンドに集約されています。クラスオプションだけでは指定しきれない項目(傍注の記号形式や見出しの体裁など)は\jlreqsetup側の項目名で上書きします。Claude Codeに依頼するときは、正しい項目名を自分で調べさせるより「傍注は記号形式にしてください、詳細な項目名は公式ドキュメントを確認してください」のように、実現したい結果と確認手段をセットで伝えるほうが、存在しない項目名を作文してしまう事故を防げます。
よくあるつまずき
「クラスが見つかりません」エラー: jlreq.clsをTeXシステムが探せていません。TeX Liveのバージョンが古いとjlreqが未収録のことがあるため、tlmgr install jlreqで個別に更新するか、TeX Live自体を最新化します。
縦中横(縦書き中の算用数字・アルファベットの横並び表記)が崩れる: jlreqには\tatechuyoko{}というコマンドがあり、\tatechuyoko{2026}のように囲むと、縦書きの中で数字だけを横向きに並べられます。Claude Codeに依頼するときも「西暦や桁数の多い数字は\tatechuyokoで囲んでください」と明示すると出力が安定します。
upLaTeXとLuaLaTeXの混在: jlreqはplatex・uplatex・lualatexのいずれでも動きますが、コンパイルコマンドとソース内のエンジン指定がずれるとビルドが通りません。Claude Codeに「エンジンはlualatexで統一してください」と最初に伝え、混在させないのが安全です。
フォントが埋め込まれていない: jlreq自体はフォントを指定する機能を持たず、LuaLaTeXで使うフォントはLuaTeX-ja側の既定に従います。既定のままなら、LuaTeX-jaに付属するTeX Live同梱の和文フォントが使われ、PDFにも埋め込まれます。フォントが変わって見えるのは、luatexja-fontspecなどでOSにインストールされたフォントを名前指定した場合で、その指定フォントが無い環境ではコンパイル自体が通らなくなります。配布用のPDFで見た目を安定させたいときは、フォント指定を追加せず既定のまま使うか、指定するなら閲覧側にも同じフォントが入っているかを確認します。
生成後にPDFを確認するときの注意
コンパイルが通っても、PDFビューアーの初期表示は横向きのままのことがあります。縦書き文書はページ内の文字が右から左へ流れるため、見開き表示や自動スクロールの挙動がビューアーによって異なります。特にブラウザ内蔵のPDFビューアーは縦書き文書のページめくり方向を横書き前提で扱うことがあるため、最終的な配布・印刷用途では専用のPDFビューアーかAdobe系のソフトで開き直し、ページ順とめくり方向が意図どおりかを確認しておくと安心です。
Claude Codeにコンパイルまで任せた場合も、コンパイルログでエラーの有無は追えますが、縦組みの版面が意図どおり美しく収まっているかという見た目の最終判断は人間の目視作業として残ります。ログが通った=版面も正しい、とは限らない点を踏まえ、初回のコンパイル後は必ずPDFを開いて確認する工程を挟みます。この切り分けも、冒頭で触れた「LaTeXを書かせて変換する」役割分担の一部です。
まとめ
Claude Codeが縦書きPDFを直接生成する専用機能を持っているわけではなく、実体は「jlreqクラスのLaTeXソースを書かせ、ローカルのLuaLaTeX環境でコンパイルさせる」手順です。この理解があれば、うまくいかないときにClaude Codeの指示を疑うべきか、TeX環境の不備を疑うべきかを迷わず切り分けられます。縦書きの小冊子や同人誌の原稿、社内向けの縦組み資料をMarkdownの下書きから作りたい場合は、先にTeX Live環境を整えたうえでClaude Codeに変換とコンパイルを一括で任せるのが最短ルートです。
手書きノートの数式をLaTeX化する用途ではClaudeで手書きノートをLaTeX教材に変換する方法が近い作業を扱っており、LaTeXソースを書かせる依頼の出し方は共通して参考になります。日本語処理そのものの精度傾向はClaudeの日本語精度を公式データとベンチマークで読む、多言語ベンチマークの詳細はClaudeの多言語性能を言語別データで見るで確認できます。