大規模 LaTeX プロジェクトの管理:構成・章別プレビュー・命名規則
大規模 LaTeX プロジェクトの負担は、変更先が分からない、処理が遅い、パッケージが分散して衝突する、といった問題から生じます。ファイルの役割、共通設定、部分確認、命名規則を整理しましょう。
役割ごとにディレクトリを分ける
章・表・画像を分け、内容が分かる名前を付けます。
project/
├── main.tex % 文書クラスと章の順序
├── preamble.tex % パッケージと独自コマンド
├── chapters/
│ ├── intro.tex
│ ├── method.tex
│ └── results.tex
├── tables/ % \input で読み込む表のソース
└── figures/
次の主ファイルを使うには、指定の場所に preamble.tex と3つの章ファイルを用意します。
% main.tex
\documentclass[11pt]{article}
\input{preamble}
% 章別プレビュー時だけ有効にする。最終出力ではコメントのまま
% \includeonly{chapters/method}
\begin{document}
\include{chapters/intro}
\include{chapters/method}
\include{chapters/results}
\end{document}
主ファイルにはクラス・共通設定・章の順序をまとめ、本文の変更は通常 chapters/ 内で行います。
パッケージの入口を1つにする
複数の場所で異なるオプションを指定すると Option clash for package ... になることがあります。preamble.tex に集約します。
% preamble.tex —— 文書全体のパッケージをここに集約
\usepackage{amsmath,amssymb}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage[hidelinks]{hyperref}
主ファイルの \begin{document} より前で読み込みます。順序にも意味があり、hyperref は通常後方に置きます。各章で同じパッケージを再読込しないようにします。
\includeonly で一部を確認する
プレビューでは対象の章を限定できます。ただし、省略した章の番号・参照は既存の補助情報に依存し、各プラットフォームのタスクで保持されるとは限りません。
対象は \include で、\input には作用しません。省略した章の情報がなければ参照が ?? になります。
% method の章だけを確認
\includeonly{chapters/method}
今回更新されるのは対象の章だけです。長さが変わると省略部分のページ番号が古くなることがあるため、提出前に制限を解除して全体をコンパイルします。
ラベルに種類別の接頭辞を付ける
| 対象 | 接頭辞 | 例 |
|---|---|---|
| 節 | sec: | \label{sec:method} |
| 図 | fig: | \label{fig:pipeline} |
| 表 | tab: | \label{tab:ablation} |
| 数式 | eq: | \label{eq:update} |
ラベルの重複は処理を止めない場合もありますが、警告や誤参照を起こします。接頭辞で検索しやすくし、同じ名前は使わないでください。
フロート内の \label は \caption の後に置きます。逆にすると以前のカウンターを拾い、エラーなしで番号を誤ることがあります。
パス・参照・全体の結果を確認する
変更後は読み込むファイルの実在、参照先、全体コンパイルの必要性を確認します。
| メッセージ | 原因 | 対処 |
|---|---|---|
There were multiply-defined labels. | ラベルの重複 | 検索・改名し、全体の参照を更新する |
Reference 'fig:x' undefined | ラベル情報がない、または章を省略 | 全体を処理し、ラベル位置を確認 |
Label(s) may have changed. | 参照情報が変わった | 繰り返し処理を待ち、残る場合は調べる |
Option clash for package hyperref. | オプションが衝突 | preamble.tex に集約 |
\include cannot be nested. | 章内で再び \include を使用 | 章内は \input にする |
関連記事:重複コードの整理、コンパイルの問題、安全な AI 修正。
まとめ
- 主ファイル・章・表・画像を役割別に整理する。
- パッケージの入口を1つにする。
- 部分確認と全体確認を使い分ける。
- 種類別の接頭辞と一意なラベルを使う。
ディレクトリ全体を EasyLaTeXに取り込み、主ファイルに main.tex を指定できます。