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

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.

Avertissement

Ce qui suit est informatif car l’extension évoquée est considérée comme obsolète.

Antérieurement, l’extension includex apportait les fonctionnalités toutes reportées dans newclude. Son auteur l’a classé comme obsolète même si certaines personnes semblent toujours l’utiliser.

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 une commande \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 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 ? ».