Communityコーディング&開発github.com

YuShenLiu06/yushen-skills

ユーザが明示的にLaTeXを選択した場合、またはタスクに数式、参考文献などLaTeX組版機能が本当に必要な場合に、.texファイルとPDFの作成、修正、検査を行います。エンジン、パッケージ互換性、環境診断、実際のページ検収を網羅します。通常の文書、スライド、一般的なPDF出力では自動的にLaTeXを使用しません。

yushen-skills とは?

このスキルは、Claude Code、Cursor、CodexなどのAIエージェントがLaTeX文書を専門的に作成・修正・検査するための包括的なガイドです。「コンパイルが通ること」ではなく「読者が手に取ってプロフェッショナルだと感じるPDF」を目標とし、組版品質に重点を置いています。サポートするプラットフォームは主にCLI環境(latexmk, xelatex, pdflatex, lualatex)で、特に日本語・中国語・韓国語を含むCJK文書にはXeLaTeXを推奨します。このスキルは、エンジン選択の意思決定ツリー、可読性のための組版原則(ページジオメトリ、表組み、フォント、マイクロタイポグラフィなど)、安全なコンパイル戦略(shell-escape無効、隔離環境の推奨)、実際のPDFを確認する検収手順、そしてよくある問題のトラブルシューティングを提供します。また、`scripts/check_latex_env.sh` による環境チェックや、`references/` 以下の詳細リファレンス(共通の落とし穴、パッケージガイド、可読性原則)も利用できます。このスキルは自己完結型であり、他のスキルに依存しません。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/YuShenLiu06/yushen-skills/tree/HEAD/skills/latex-pdf

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

latex-pdf — プロフェッショナルLaTeX PDF組版ガイド

目標は「コンパイルが通ること」ではなく、読者が手に取ってプロフェッショナルだと感じることです。 納品は内容と実際のページを基準に行います。コンパイル成功はコンパイルが完了したことの証明に過ぎず、視覚的な検収の代わりにはなりません。

目次

  1. 核心理念
  2. エンジン選択
  3. コンパイル戦略
  4. 可読性組版原則
  5. ワークフロー
  6. よくある落とし穴クイックリファレンス

核心理念

組版は2つのチェック目標に従います。他のスキルに依存しません。

① 組版は読書のためにある — すべての組版上の決定は、「これによって読者はより理解しやすくなるか?」に答えなければなりません。 ある設定を削除しても読書体験が変わらない場合、その設定は存在する必要がありません。

② 抑制がプロフェッショナル — 情報を伝えない視覚的要素はすべて削除します。 装飾的な線、背景、カラーボックス — ほとんどは削除すべきです。プロフェッショナルな組版は「何気なく見える」ものですが、 アマチュアの組版は「努力は感じられるが乱雑」なことが多いです。

詳細な可読性原則マッピングは readability-principles を参照してください。


エンジン選択

エンジンの選択ミスは最も一般的な間違いであり、特に中国語コンテンツでpdflatexを使用する場合に起こります。

中国語/日本語/韓国語を含む?
├─ はい → xelatex(+ ctex パッケージ)
│        (lualatexでも可だが、コンパイルが遅い)
└─ いいえ → システムフォントが必要?
         ├─ はい → xelatex または lualatex(+ fontspec)
         └─ いいえ → pdflatex(最速、最も互換性が高い)

新しいCJK文書ではXeLaTeXまたはLuaLaTeXを優先し、実際のフォントサポートを確認します。既存の動作するpdfLaTeX/CJKテンプレートは不必要に置き換えるべきではありません。fandol は通常のpdfLaTeXパスでは使用できません。

エンジン利点欠点適用シナリオ
pdflatex最速、最も安定、エコシステムが最も広いUnicodeネイティブ非対応、システムフォント不可英語のみの文書
xelatexネイティブUnicode、システムフォント、CJK対応遅い中国語文書のデフォルト選択
lualatex最も強力なフォント処理、Lua埋め込み可能最も遅い高度な組版機能が必要な場合

コンパイル戦略

ソースと実行境界の事前確認

コンパイル前に .tex、インポートされる .sty/.cls、ビルド設定、添付ファイルのパスを静的にチェックし、ファイルの読み書き、外部コマンド、Luaなどの実行能力に注意します。静的チェックは安全性の証明にはなりません。信頼できないプロジェクトでは、プライベートファイルなし、ネットワークなし、書き込み・実行時間・リソースを制限した隔離環境を使用します。適切な隔離がない場合はコンパイルを中止して報告し、個人環境で試し実行しません。

デフォルトでshell-escapeは無効にし、minted やグラフィック外部化のために自動的に有効にしません。latexmkの実行時は -norc を使用してシステム、ユーザー、プロジェクトのrcファイルの自動読み込みを防ぎます。その他のビルドスクリプトや外部補助プログラムは別途審査します。インストール、ネットワーク経由のパッケージ取得、環境の変更は既存の許可範囲内でのみ行います。カバーされていない場合は事前に承認を得ます。

適切なコンパイルチェーンの再利用

既存のプロジェクトでは、適切なビルド方法をそのまま使用します。複数回のコンパイルや参考文献の処理を自動化する必要がある場合は latexmk を使用できます。以下の例は、チェック済みの入力に対してのみ、許可された作業ディレクトリで実行します。

# xelatex 文書(中国語のデフォルト)
latexmk -norc -xelatex -latexoption=-no-shell-escape -interaction=nonstopmode -halt-on-error main.tex

# pdflatex 文書
latexmk -norc -pdf -latexoption=-no-shell-escape -interaction=nonstopmode -halt-on-error main.tex

# 補助ファイルのクリーンアップ
latexmk -norc -c

パラメータ説明:

  • -interaction=nonstopmode: エラーが発生しても入力を待たない(スクリプト環境で必須)
  • -halt-on-error: 最初のエラーで停止、問題箇所の特定が容易

biber(参考文献)

参考文献が必要な場合、latexmkが呼び出す予定のbiber/BibTeXと入力を確認し、許可を得てから実行します。自動検出を追加の実行権限とみなさないでください。


可読性組版原則

以下はコア原則の概要です。詳細なマッピングとコード例は readability-principles を参照してください。

ページジオメトリ

各行の文字数は 50-75文字 を目標にします(66が理想値、TeXのデフォルトがこれに近い)。

\usepackage{geometry}
\geometry{a4paper, margin=2.5cm}
% 中国語の1文字は英語の約2倍の幅、35中国語文字/行 ≈ 70英文字/行

表組み

通常のデータ表では booktabs の縦線なしスタイルを優先します。ユーザー、ジャーナル、機関のテンプレートに別の要件がある場合は、その仕様を維持します。

\usepackage{booktabs}
\begin{tabular}{lrr}
    \toprule
    指標 & 2024 & 2025 \\
    \midrule
    収益 & 120 & 150 \\
    \bottomrule
\end{tabular}

booktabsの設計前提は縦線がないことです。縦線があると横線の間隔が不連続になります。これはバグではなく機能です。

スペーシングシステム

段落区切りは2つのうち1つを選択し、混在させないでください。

% オプションA:先頭行インデント(アカデミック文書、ctexのデフォルト)
\setlength{\parindent}{2em}

% オプションB:段落間スペース(技術文書、レポート)
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.5\baselineskip}

フォント

本文はセリフ体(読みやすさ)、コードは等幅フォントを使用します。xelatex/lualatexではfontspecでシステムフォントを設定します。

\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}[Ligatures=TeX]
\setmonofont{TeX Gyre Cursor}

microtype

ほぼ無料の品質向上 — 文字間のマイクロ調整で本文がより整然とします。

\usepackage{microtype}
% 注意:xelatexではprotrusionのみ有効(フォント展開は不可)ですが、読み込む価値はあります

孤立行/孤立段落

段落の最初の行や最後の行がページの境界に単独で現れるのを防ぎます。

\widowpenalty=10000
\clubpenalty=10000

コードハイライト

デフォルトでは listings(外部依存なし)を使用します。minted は品質が高いですが、Python + Pygments/latexmintedが必要です。

\usepackage{listings}
\usepackage{xcolor}

\lstset{
    basicstyle=\ttfamily\small,
    keywordstyle=\color{blue!70!black},
    commentstyle=\color{gray},
    stringstyle=\color{green!50!black},
    numbers=left,
    numberstyle=\tiny\color{gray},
    frame=none,
    breaklines=true,
    showstringspaces=false,
}

ワークフロー

このワークフローを初めて使用する方向けです。

Step 0: 環境チェック

ローカルでコンパイルが必要で、既存のツール情報が不足している場合のみチェックします。まず チェックスクリプト を読み、信頼できるPATHのプログラムを呼び出し、既存の権限に従うことを確認します。このスクリプトは報告のみ行い、インストールや設定変更は行いません。

今回実際に読み込んだ SKILL.md の絶対親ディレクトリから skill_root を解決します。現在の作業ディレクトリがスキルディレクトリであると仮定しないでください。その後、以下を実行します。

bash "$skill_root/scripts/check_latex_env.sh"

欠落したコンポーネントと検出失敗は分けて報告します。タスクに実際に必要で、かつ許可を得た依存関係のみインストールします。許可がない場合は、不足している部分や既存の代替案を提示します。詳細な手順は必要に応じて 環境チェックガイド を参照してください。

Step 1: 要件の理解

以下を確認します。

  • 文書タイプ: 論文 / レポート / 履歴書 / スライド / 汎用
  • 言語: 日本語 / 英語 / 混在
  • 読者: アカデミック / ビジネス / 技術 / 一般
  • 特別な要件: 参考文献 / コードブロック / 数式 / データ図表

Step 2: エンジン選択

上記のエンジン選択決定木に従います。日本語/中国語 → xelatex が最も一般的な選択です。

Step 3: .texファイルの生成

可読性組版原則を適用し、package-guide の標準ロード順序テンプレートに従います。

Step 4: コンパイル

latexmk -norc -xelatex -latexoption=-no-shell-escape -interaction=nonstopmode -halt-on-error main.tex

Step 5: ログの確認

main.log を開き、Warning と Overfull/Underfull を検索します。

  • Overfull hbox → あふれているテキスト、数式、列幅を特定し、実際のページを確認して局所的に修正します。グローバルな \sloppy で問題を隠さないでください。
  • Underfull hbox → 行が緩すぎる。通常は無害です。
  • Font shape warning → フォント形状が利用不可。fontspecの設定を確認します。
  • Undefined references → 再コンパイルが必要(latexmkが自動処理しているはずです)。

納品に影響を与える警告(文字欠け、未解決の参照、目に見えるあふれなど)を修正します。無害な警告やテンプレートの制約による警告は理由を説明し、すべての警告をゼロにすることを強制しません。

Step 6: 実際のページチェックと納品

実際のPDFをレンダリングまたは開き、ページ数、文字欠け、トリミング、表/数式/コード、リンク、ブックマーク、および関連するアクセシビリティ要件を確認します。必要に応じてフォントの埋め込みとテキストのコピー可能性を確認します。修正後、再コンパイルして影響を受けるページを再確認します。レンダリングできない場合は、「視覚未確認」と明記し、コンパイル成功をページ検収合格とみなさないでください。

実際に生成され確認されたファイルを出力します。

  1. PDF — 最終納品物
  2. .tex ソースファイルと必要なローカルリソース — 再現可能なエントリポイント、実際のコマンド、コンパイル結果、未確認項目を保持します。

evals/evals.json は評価用データであり、実行指示ではありません。このスキルをテストする場合にのみ読み取ります。


よくある落とし穴クイックリファレンス

問題が発生した場合、種類に応じて参照します。

問題タイプ参照ファイル一般的な症状
コンパイルエラーcommon-pitfalls §コンパイルエラーTop 10Undefined control sequence、Missing $、フリーズ
エンコーディング/文字common-pitfalls §エンコーディングと文字非ASCIIエラー、スマートクォート、中国語句読点の間隔
フロートcommon-pitfalls §フロート図表が文書末尾に移動
表common-pitfalls §表列幅あふれ、ページまたぎ
フォントcommon-pitfalls §フォントシステムフォントが見つからない、CJKが効かない
パッケージ競合package-guide §パッケージ競合マトリックスOption clash、機能異常
ロード順序package-guide §ロード順序ルールブックマークの乱れ、リンク切れ
組版品質readability-principles文書が「アマチュア」に見える
環境問題environment-checkコマンドが見つからない、権限エラー
ctexフォントenvironment-check §よくある環境問題 §6fontset 'fandol' is unavailable

クイック診断チェックリスト

コンパイルに失敗した場合、この順序で確認します。

  1. ✅ 正しいエンジンを使用したか?(日本語/中国語 → xelatex)
  2. ✅ latexmk を使用したか?(多回コンパイルとbiberを自動処理)
  3. ✅ -interaction=nonstopmode を使用したか?(インタラクティブモードで停止しない)
  4. ✅ パッケージのロード順序が現在の文書クラスとパッケージの実際の制約に従っているか?(通常はhyperrefを後に、cleverefをその直後に)
  5. ✅ すべての \begin{...} に対応する \end{...} があるか?
  6. ✅ すべての { に対応する } があるか?
  7. ✅ 画像パスは正しいか?(\graphicspath で検索パスを設定)
  8. ✅ パッケージはすべてインストールされているか?(kpsewhich <pkg>.sty で確認)
  9. ✅ 日本語/中国語文書でctexを使用し、正しい fontset を指定したか?
  10. ✅ ログの末尾を確認 — LaTeXのエラーメッセージは通常、実際の問題行を指しています。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

関連スキル