Travailler avec de gros documents

Les livres, thèses et longs rapports alourdissent la boucle édition-compilation : les builds ralentissent, un fichier géant devient pénible, et maintenir numéros et références sur des centaines de pages est difficile. Ce chapitre ramène un long document à une forme que l’on peut continuer à écrire chaque jour : découper par chapitre, compiler seulement la partie en cours, et alterner volontairement entre mode draft et builds complets propres.

Ce qui devient difficile à grande échelle

Quand le document grossit, on rencontre : (1) des compilations complètes lentes, (2) un fichier unique trop long pour s’y repérer, (3) la difficulté de garder références croisées, numérotation et table des matières cohérentes entre chapitres, et (4) des erreurs difficiles à localiser. Tout cela se simplifie beaucoup dès que l’on découpe le document et que l’on ne traite que la partie nécessaire.

Découper en fichiers

La forme de base est un fichier par chapitre, relié par un fichier principal léger. On retrouve plus facilement son emplacement, on partage mieux le travail avec les coauteurs, et les diffs restent petits. Les mécanismes d’inclusion (\input / \include / subfiles) sont détaillés dans « Projets multi-fichiers » ; pour des chapitres, \include convient le mieux, car il force des sauts de page autour de chaque partie et lui donne son propre .aux.

Compiler seulement le chapitre en cours — \includeonly

Si le document est découpé avec \include, placer \includeonly{the-chapter-you-are-editing} dans le préambule ne traite que ce chapitre. Comme le .aux de chaque chapitre conserve les valeurs du dernier build complet, les numéros de page et références croisées des chapitres sautés restent corrects. Un build complet de plusieurs minutes devient un build partiel de quelques secondes. L’habitude importante est de faire d’abord un build complet. Si l’on saute des chapitres avant que leurs .aux existent, les références restent ?? ou les numéros de page deviennent obsolètes. Avec les builds incrémentaux de latexmk ou -pvc, l’attente devient presque nulle.

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

\includeonly n’est pas un mécanisme de finition. Les numéros de page et références dépendent d’anciens fichiers .aux ; avant la soumission, retirez-le et compilez tous les chapitres. Dans un document avec index, bibliographie et table des matières, le PDF partiel est une approximation de travail, pas le document final.

Itérer vite avec le mode draft

L’option draft de la classe de document aide pour les builds d’essai d’un gros document. (1) Elle marque les overfull boxes, les lignes qui débordent dans la marge, par une règle noire, ce qui rend les problèmes de mise en page visibles. (2) Elle remplace les images par un cadre indiquant le nom du fichier au lieu de les rendre, ce qui saute le traitement des images et accélère la compilation. Pour limiter cela aux images, utilisez \usepackage[draft]{graphicx}. Revenez à final pour la sortie réelle. Si vous voulez garder les images visibles mais signaler les débordements, utilisez \overfullrule=5pt.

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

Créer un rythme pour un long projet

Pour les gros documents, évitez le faux choix entre « toujours tout compiler parfaitement » et « ne compiler qu’un fragment ». Au quotidien, utilisez \includeonly et latexmk -pvc pour itérer sur le chapitre en cours. Aux jalons, retirez draft et compilez tout le document. Avant un week-end ou une soumission, supprimez les fichiers générés et faites un build propre. Ce rythme garde la boucle rapide tout en détectant tôt les problèmes du PDF final.

Autres tactiques

  • Réduisez l’attente avec les builds incrémentaux de latexmk ou -pvc (voir Builds automatisés).
  • Pour les figures lourdes, externalisez TikZ ou pré-rendez en PDF afin que les rebuilds restent légers.
  • Retirez temporairement les énormes sections de \includeonly, ou commentez-les.
  • Juste avant la finalisation, compilez tout en final pour stabiliser numérotation, table des matières, index et bibliographie.
  • Avant la soumission, retirez draft et \includeonly, reconstruisez le PDF et lisez aussi les warnings du log.