Comment constituer un recueil d’articles à partir de plusieurs documents sources ?#
Cette question se pose, par exemple, si une personne prépare les comptes-rendus d’une conférence dont les articles ont été soumis en LaTeX.
Les solutions les plus simples sont les classes combine de Peter Wilson et subfiles de Federico Garcia mais de nombreuses approches ont été proposées. Chacune offre ses propres avantages. En particulier, plusieurs solutions nettement plus légères (par exemple, includex et docmute) sont bien adaptées aux documents moins formels.
1. Avec la classe combine#
La classe combine définit les outils (dont une commande \import
)
pour importer des documents entiers et fournit des moyens de spécifier
les caractéristiques importantes de la mise en page du document, de la table
des matières globale, etc. L’ensemble des fonctionnalités est assez complexe.
Une extension auxiliaire, combinet
(fournie avec combine
et documentée dans le même manuel), permet d’utiliser les commandes \title
,
\author
et autres des documents importés et de les faire figurer
dans la table des matières globale. La structure de base d’un document combiné
serait :
\documentclass[...]{combine}
...
\begin{document}
...
⟨Éléments introductifs⟩
...
\begin{papers}
% titre et auteur du premier article, qui iront dans la table des matières
% globale.
\coltoctitle{...}
\coltocauthor{...}
\label{art1}
\import{art1}
...
\end{papers}
...
⟨Remerciements, etc.⟩
...
\end{document}
2. Avec la classe subfiles#
La classe subfiles est utilisée dans les fichiers isolés d’un projet multi-fichiers tandis que l’extension subfiles sert dans le fichier parent. La structure de ce fichier parent est la suivante :
\documentclass{⟨selon vos besoins⟩}
...
\usepackage{subfiles}
...
\begin{document}
...
\subfile{⟨nom d'un fichier enfant⟩}
...
\end{document}
En parallèle, les fichiers enfants appelés par le fichier parent ont pour structure :
\documentclass[⟨nom du fichier parent⟩]{subfiles}
\begin{document}
...
\end{document}
Des réglages peuvent être définis pour que les fichiers enfants appelés par le fichier parent soient composés en utilisant des paramètres différents (le format de page par exemple) de ceux utilisés lorsqu’ils sont composés en tant que partie du fichier principal.
3. Avec l’extension newclude#
Les extensions newclude de Matt Swift, faisant partie de l’ensemble frankenstein, propose différents outils. Il convient de noter que newclude reste « en développement » depuis 1999.
L’extension vous permet d’inclure avec la commande \includedoc
des articles complets (de la même manière que vous incluez avec \include
des fichiers de chapitre dans un document classique). Mais elle ne tient compte
que de ce qui est indiquée entre les commandes \begin{document}
et \end{document}
. Par conséquent, cette extension ne fait pas
tout le travail à votre place : vous devez analyser les extensions utilisées
dans chaque article et vous assurer qu’un ensemble cohérent est chargé
dans le préambule du rapport principal.
Enfin, cette extension nécessite moredefs, qui fait également partie de l’ensemble frankenstein.
4. Avec l’extension docmute#
L’extension docmute propose une boîte d’outils simple et élégante.
Une fois l’extension chargée, tout ce qui se trouve entre \documentclass
et \begin{document}
dans tout fichier inséré par une commande \input
ou \include
est ignoré, puis ce fichier est traité
jusqu’à son \end{document}
. Ici encore, l’utilisateur doit s’assurer que
toutes les appels aux extensions et autres configurations sont effectuées
dans le document parent.
5. Avec l’extension standalone#
L’extension standalone (stand-alone signifiant « autonome ») développe les idées de docmute. Elle a été conçue pour répondre aux besoins des utilisateurs qui génèrent des images à partir des extensions graphiques récentes (notamment pgf/tikz) pour lesquelles le temps de compilation des graphiques est tel qu’une compilation séparée est parfois souhaitable. Cette extension fournit donc un moyen de développer des graphiques de manière pratique, en les détachant du développement du document dans son ensemble. Et son intérêt pour notre présent sujet est évidente.
L’utilisateur inclut l’extension standalone dans le document principal et chaque sous-fichier utilise la classe standalone. En interne, cette classe utilise la classe article pour la composition en mode autonome, mais il peut être demandé d’en utiliser une autre.
La vraie différence avec l’extension docmute repose sur la flexibilité. Ainsi, vous pouvez demander que les préambules des documents inclus soient rassemblés, afin de pouvoir construire un bon préambule pour le document parent.
6. Avec l’extension subdocs#
Une approche de « compilation commune » est proposée par l’extension subdocs. Le fichier du pilote contient la commande suivante.
\subdocuments[options]{fichier1,fichier2,...}
Ici, les arguments facultatifs fournissent des options de mise en page,
telles que la présence ou pas de commandes \clearpage
ou \cleardoublepage
entre les différents fichiers. Chacun des sous-fichiers exécutera
\usepackage[parent]{subdocs}
pour déclarer le nom, parent
,
du fichier appelant. Chacun des sous-fichiers lit tous les fichiers .aux
,
de sorte que des tables des matières peuvent être produites.
7. Avec l’extension pdfpages#
Une approche complètement différente consiste à utiliser
l’extension pdfpages et à inclure les articles soumis au format PDF
dans un document PDF produit par pdfLaTeX. L’extension définit une commande
\include
qui prend des arguments similaires à ceux de la commande
\includegraphics
. Avec des mots-clés dans l’argument facultatif
de la commande, vous pouvez spécifier les pages que vous souhaitez inclure
à partir du fichier nommé et divers détails de la mise en page
des pages incluses. Voir par exemple la question
« Comment obtenir des commentaires ou des plages de document compilables sous conditions ? ».