大規模文書の扱い

書籍・学位論文・長い報告書は、編集とコンパイルの往復を重くします——ビルドが遅い、1 つの巨大ファイルは扱いにくい、数百ページにわたって番号や参照を保つのが大変。この章では、長い文書を 毎日書き続けられる形 に分解します。章ごとにファイルを分け、いま作業している部分だけを組み、draft モードやクリーンビルドを使い分けます。

大きな文書の悩みどころ

規模が大きくなると、(1) 通しのコンパイルに時間がかかる、(2) 1 ファイルが長すぎて 目的の箇所を探しにくい、(3) 章をまたぐ 相互参照・番号・目次 の整合を保つのが面倒、(4) エラーの場所が 特定しづらい——といった問題が出ます。いずれも「分割」と「必要な部分だけ処理する」で大きく和らぎます。

ファイルを分割する

基本は 章ごとに 1 ファイル、そして薄い本体ファイルがそれらをまとめる構成です。目的の箇所を探しやすく、共著者と分担しやすく、差分も小さくなります。取り込みの仕組み(\input\includesubfiles)は「複数ファイル構成」で詳しく扱っていますが、章単位なら \include が向きます(前後で改ページし、章ごとに .aux を持つため)。

編集中の章だけコンパイル — \includeonly

\include で分割していれば、プリアンブルに \includeonly{編集中の章} と書くことで、その章だけを処理できます。各章の .aux が前回の通しビルドの値を保持しているので、処理しない章のページ番号や相互参照も正しいまま。数分かかる通しビルドが数秒の部分ビルドになります。大事なのは、最初に一度は全章を通して組むことです。まだ .aux がない章を飛ばすと、参照が ?? のままになったり、ページ番号が古い値で止まったりします。さらに latexmk の差分ビルドや -pvc と組み合わせれば、待ち時間はほぼゼロに近づきます。

latex
% プリアンブルで編集中の章だけに絞る / restrict to the chapter you’re editing
\includeonly{chapters/ch3}

ただし \includeonly は仕上げのための仕組みではありません。ページ番号や参照は過去の .aux に依存するため、提出前には必ず \includeonly を外し、全章を通してビルドします。索引・文献・目次まで含む文書では、部分ビルドで見えている PDF は「作業中の近似値」であり、最終版そのものではないと区別しておきます。

draft モードで速く回す

文書クラスの draft オプションは、大規模文書の試し組みに効きます。(1) 行があふれている箇所(overfull hbox)を余白の黒い罫線で示す ので、レイアウトの崩れを見つけやすい。(2) 画像を実際に描画せず、枠とファイル名のプレースホルダに置き換える ため、画像処理が省かれて コンパイルが速くなります。画像だけに効かせたいときは \usepackage[draft]{graphicx}。仕上げでは final に戻します。なお、画像は表示したまま overfull だけ見たいなら \overfullrule=5pt が使えます。

latex
\documentclass[draft]{report}   % 画像を省き overfull を表示 / skip images, show overfull rules
% 画像だけ draft にする場合 / scope it to images only:
\usepackage[draft]{graphicx}

長い文書のリズムを作る

大規模文書では「毎回すべてを完全に組む」か「ずっと部分ビルドだけで進める」かの二択にしないほうが安定します。普段は \includeonlylatexmk -pvc で担当章だけを速く回し、節目ごとに draft を外して全体を組み、週末や提出前には生成物を消してクリーンビルドします。待ち時間を短くしつつ、最終 PDF の破綻を早く見つけるためのリズムです。

その他のコツ

  • latexmk の差分ビルドや -pvc で待ち時間を最小化(→ 自動ビルド)。
  • 重い図は TikZ の外部化や事前 PDF 化で、再コンパイルを軽くする。
  • 巨大な部分は一時的に \includeonly から外す/コメントアウトする。
  • 仕上げの直前に final で通しビルドし、番号・目次・索引・文献を確定させる。
  • 提出前は draft\includeonly を外した状態で PDF を作り直し、ログの warning まで読む。