Questions de compilation de sous-fichiers

Oct 05 2020

Alors disons que j'ai un document:

% Preamble
\usepackage{subfiles}
% Preamble
\begin{document}
    \maketitle
    \subfile{FileA}
    \subfile{FileB}
    \subfile{FileC}
\end{document}

Quelques questions:

  1. Supposons que le fichier ne soit pas encore compilé, et je compile disons FileA. Le titre apparaîtra-t-il un jour ou devrai-je exécuter le fichier principal pour que le titre apparaisse?
  2. D'après ce que je vois, les sous-fichiers sont compilés indépendamment du reste des sous-fichiers, c'est-à-dire en ne compilant que cette section, tandis que la compilation du fichier principal est la même que si j'utilise \inputou si j'utilise tout le code TeX des sous-fichiers. Existe-t-il un moyen de compiler certains sous-fichiers simultanément tout en laissant les autres sous-fichiers intacts (comme dans, les résultats des sous-fichiers ne changent pas au lieu de n'apparaître dans le pdf)?
  3. Si je compile un sous-fichier et que les résultats de plusieurs sous-fichiers se trouvent sur la même page que ce sous-fichier, les résultats des sous-fichiers suivants seront-ils «écrasés» par ceux dus à la compilation de ce sous-fichier?
  4. Je viens de compiler un sous-fichier, pour une raison quelconque, le temps de compilation est le même que celui de la compilation du fichier principal. Est-ce censé se produire?
  5. Modifier à 4: Je viens de fermer le fichier principal et d'exécuter le sous-fichier, il s'avère que le résultat est de compiler le fichier entier au lieu du seul sous-fichier, ce qui semble contradictoire avec le fait que les sous-fichiers soient «compilables seuls». Quelqu'un peut-il élaborer?

J'utilise TeXStudio d'ailleurs.

Réponses

1 gernot Oct 06 2020 at 18:18

Trop long pour les commentaires.

Question 1: le titre apparaît dans le document contenant la \maketitlecommande. S'il se trouve dans le fichier principal et que vous compilez un sous-fichier, le titre n'apparaîtra pas, car le sous-fichier ne prend que le préambule du fichier principal et ignore le reste.

Concernant la question 2: Cette question n'est pas spécifique à subfiles, et la réponse est fondamentalement «non». Autant que je sache, aucun des processeurs TeX n'effectue de mise en cache et ne compose que les parties qui ont changé. Certains paquets offrent la possibilité de mettre en cache le résultat de calculs intensifs pour la prochaine exécution (comme l'externalisation dans pgfplots). À plus grande échelle, vous pouvez utiliser des outils pour créer un projet, comme make, antet bien d'autres, pour ne compiler que les parties d'un projet qui ont changé. Mais pour les fichiers TeX, il appellera toujours un processeur tex qui compose le fichier entier.

Re question 3: Je pense que c'est une idée fausse de ce que font TeX et le paquet de sous-fichiers. Lors de la composition du document principal, il chargera les texsources des sous-fichiers, en ignorant tout pdf. Ainsi, la composition de l'un des sous-fichiers générera de nouveaux pdfs pour les sous-fichiers, mais ne modifiera pas le pdf du fichier principal. TeXStudio peut masquer le fait que vous éditez en fait des texfichiers qui sont composés à la volée pdfpour être visualisés.

Question 4: Lors de la composition d'un sous-fichier, le temps de traitement est nettement plus court que lors de la composition du fichier principal. Cependant, dans la plupart des situations, vous ne le remarquerez pas, car le démarrage du programme et l'ouverture des fichiers prennent beaucoup plus de temps que la composition du texte. Vous ne verrez des économies en temps réel que lorsque le fichier principal est énorme et / ou que certaines parties contiennent des graphcis à forte intensité de calcul.

Re question 5: C'est probablement un problème TeXStudio et / ou d'utilisation. TeXStudio compose probablement toujours le jeu de fichiers en tant que fichier 'actuel', et il ne savait probablement pas que vous vouliez qu'il ne compose que le sous-fichier.

Recommandation générale: commencez avec un seul fichier tex. S'il devient trop grand, structurez-le à l'aide de \inputou \include. Seulement si vous avez vraiment besoin de pouvoir composer une partie du document indépendamment, commencez à expérimenter avec des packages comme subfiles.