Travailler avec des sous-fichiers

De nombreux manuels et cours sur LaTeX conseillent de travailler avec des sous-fichiers, permettant de scinder ses documents de travail en plusieurs fichiers (e.g. un fichier par chapitre pour l’écriture d’un livre).

Prendre l’habitude d’une telle pratique peut-être une très bonne idée, mais il peut également être très intéressant de pousser plus loin la réflexion. Dans la mesure où le document va être scinder, il peut être intéressant de pouvoir compiler chaque sous-fichier de manière indépendante. Pour cela j’ai écrit un petit package (que vous ne trouverez pas sur le CTAN) qui permet de compiler un fichier à l’intérieur d’un plus général ou de manière indépendante, sans avoir à modifier à chaque fois le code source.

Concernant l’appel des packages

Il est nécessaire d’écrire l’ensemble des appels de packages dans un fichier à part puisque ce dernier sera appelé par le document maître à la compilation, mais également par les sous-documents lorsqu’on les compilera de manière indépendante.

Dans ce fichier vous pouvez appeler les packages que vous souhaitez, aucun n’étant nécessaire au bon fonctionnement du package que j’ai écrit. Vous pouvez également y indiquer votre nom avec la commande \author{} et éventuellement une date avec la commande \date{}.

Avec le fichier maître…

Le fichier principal se construit globalement de la même manière que d’habitude, seulement il est nécessaire d’initialiser un compteur particulier qui servira lors de la compilation du document et d’appeler le fichier de préambule créé préalablement. Le compteur en question s’initialise de la manière suivante :

\newcounter{multipart}

Ainsi, un exemple minimal de fichier maître se présenterait comme suivant :

\documentclass{book}
\input{preambule} % le fichier indépendant qui contient l'appel des packages et la définition de l'auteur grâce à la commande \author{}
\newcounter{multipart}
\title{Le titre}

\begin{document}
\maketitle
\input{le sous-fichier}
\end{document}

… et les fichiers esclaves

Il s’agit à présent de nous arrêter sur les sous-fichiers. Il s’agit tout d’abord d’intégrer le fichier multipart.tex qui contient les indications nécessaires au bon fonctionnement du processus (et que nous développerons plus bas). Ce fichier doit se trouver dans le même dossier que le fichier compilé. En cas d’utilisation de sous-dossiers pour les fichiers, il est nécessaire que ce fichier se trouve également dans ces dossiers. (Un simple lien symbolique permet de simuler la présence de ce fichier sans avoir à les mettre à jour à chaque modification.)

Il convient ensuite d’appeler la commande \debutmultipart{}{} qui demande deux arguments. Le premier correspond au titre du document. Il apparaîtra comme un titre de chapitre lorsque le document sera compilé en même temps que le fichier maître (qui correspond à un livre), mais il deviendra le titre d’un article lorsque le fichier sera compilé seul (le document prenant alors la classe article). Le second argument correspond simplement au chemin du fichier de préambule créé plus tôt (ce chemin est le chemin relatif depuis le sous-fichier, il servira lors de la compilation autonome).

À la suite de cela vous n’avez qu’à écrire votre document (avec un premier niveau de titre commençant à la section).

En fin de fichier, il vous suffit d’indiquer la fin du sous-fichier par la commande \finmultipart{}.

Un exemple minimal serait le suivant :

\input{./multipart}
\debutmultipart{Mon titre de chapitre (d'article)}{../preambule}

Le corps de texte de mon document.

\finmultipart{}

Le package multipart

Il ne nous reste pus qu’à créer (dans votre cas copier) le package en lui-même, dans un fichier multipart.tex.

\ifdefined\debutmultipart
\else
  \newcommand{\debutmultipart}[2]{%
    % Définition du titre du document
    \ifdefined\titre
      \renewcommand{\titre}[0]{#1}
    \else
      \newcommand{\titre}[0]{#1}
    \fi
    % si le compteur 'multipart' existe...
    \ifcsname c@multipart\endcsname\stepcounter{multipart}
      % ...alors c'est que le document est chargé par le document principal
      % et le préambule a déjà été chargé par le document principal
      % le titre est donc un chapitre
      \chapter*{\titre{}}
      \addcontentsline{toc}{chapter}{\titre{}}
    \else    
    % ...sinon c'est que le document est compilé en autonomie

      % on définit le type du document
      \documentclass[a4paper]{article}

      % on charge le préambule
      \input{#2}

      % le titre est donc le titre du document
      \title{\titre{}}

      % on commence le contenu
      \begin{document}

      % on met en place le titre du document
      \maketitle
    \fi
  }

  \newcommand{\finmultipart}[0]{%
    % si le compteur 'principal' existe...
    \ifcsname c@multipart\endcsname \stepcounter{multipart}    
      % ...alors ne rien faire car le document continue dans le document principal
    \else
      % sinon on termine le contenu
      \end{document}
    \fi
  }
\fi

Voilà, il ne vous reste plus qu’à compiler à votre convenance le document principal ou le sous-document pour obtenir le fichier de votre choix.

Installez LaTeX

LaTeX est un système de composition de documents. Il consiste en un ensemble de macro-commandes facilitant l’utilisation du “processeur de texte” TeX.

Le principe de base de LaTeX est de séparer le fond (le contenu) de la forme (la mise en page), le rédacteur écrit donc son document en suivant certaines règles syntaxiques en se concentrant uniquement sur son contenu pour ensuite compiler son fichier afin d’obtenir un document lisible et imprimable (PDF, PS, DVI, etc.)

Installation

Afin de pouvoir utiliser LaTeX, il est nécessaire d’installer une distribution (un ensemble de paquets). Sous GNU/Linux, la plus couramment utilisée est TeX-Live, qui a l’avantage d’être très complète.

Pour l’installer, il existe plusieurs solutions :

  • avec un DVD :
    • télécharger l’iso du DVD,
    • acheter un DVD auprès des associations d’utilisateurs (TUG, TeX Users Group) comme GUTenberg ;
  • par les dépôts de votre distribution GNU/linux.

TeX-Live étant une distribution LaTeX il est possible (au même titre qu’avec une distribution GNU/Linux) de ne pas installer l’ensemble des paquets.

Le paquet minimum à installer est texlive. Ensuite, il est conseillé d’installer le support du français texlive-lang-french ainsi qu’un ensemble de paquets utiles pour une utilisation agréable de LaTeX texlive-latex-extra.

# apt-get install texlive texlive-lang-french texlive-latex-extra

Autrement, il est aussi possible d’installer l’ensemble de la distribution TeX-Live avec le paquet texlive-full (attention, dans ce cas la taille de l’ensemble des paquet est très volumineuse !)

# apt-get install texlive-full

Aucune configuration n’est à réaliser durant l’installation de la distribution TeX-Live. Une fois ceci fait, l’utilisation de LaTeX peut commencer.

Logiciels utiles

Édition des fichiers

Pour éditer les fichiers nécessaires à l’écriture de vos documents sous LaTeX (les fichiers portant l’extension .tex, .bib, etc.), un simple éditeur de texte peut suffire (p.ex. Gedit, Kate, nano, vim, emacs, etc.), mais il est plus utile et plus agréable d’avoir un logiciel prévu pour l’édition de fichiers LaTeX, qui va pouvoir proposer une coloration syntaxique, un système d’auto-complétion, etc. Ainsi existent entre autres :

  • TeXmaker (disponible dans les dépôts d’Ubuntu avec le paquet texmaker) ;
  • TeXstudio (fork de TeXmaker) ;
  • Kile (prévu pour KDE) ;

Visionnage des documents compilés

LaTeX compile vos documents source et sort un document lisible et imprimable. Ce document peut se trouver sous plusieurs formes (selon les besoins). Il est possible d’obtenir un fichier DVI (.dvi) signifiant Device Independent, qui est la sortie par défaut de LaTeX, mais il est également possible d’obtenir un fichier PDF (.pdf) ou un fichier PostScript (.ps).

Afin de les afficher, il est nécessaire d’avoir une visionneuse. Sous GNU/Linux, il existe notamment Evince.

Personnalisez LaTeX

LaTeX a la particularité d’être un système plus ou moins personnalisable, notamment au travers de définition de nouvelles commandes et environnements. J’utilise pour mes besoins personnels (mise au propre de mes notes de cours d’université) certaines commandes personnelles et certains styles modifiés afin de correspondre à ce que je souhaite.

Avant toute chose, je vous conseille de vous écrire un fichier de préambule que vous utiliserez systématiquement sur tous vos documents qui répondent aux mêmes besoins (chez moi mes cours), fichier que vous appellerez en début de document, vous évitant d’avoir à tout réécrire à chaque fois. Ainsi, une fois ce fichier (preambule.tex chez moi) écrit, il vous suffit de l’appeler avant le \begin{document} grâce à la commande :

\input{votre/chemin/vers/votre/fichier/preambule.tex}

Un préambule uniforme

À l’intérieur de ce fichier vous appellerez l’ensemble des paquets qui vous sont nécessaires (personnellement j’y appelle également mon \documentclass[10pt, twoside]{book}). Voici les différents paquets que j’utilise :

  • fontenc (avec l’option T1) et inputenc (avec l’option utf8) pour l’encodage des caractères ;
  • babel (avec les options english et french, dans cet ordre, la dernière option étant celle considérée par défaut par LaTeX) pour la gestion de la langue française (les césures, les traductions des titres, etc.) ;
  • sectsty permettant de modifier les styles des sections (j’y ajoute la commande \allsectionsfont{\color{grey}{}\fontseries{n}\selectfont} ;
  • graphicx pour la gestion des tâches graphiques ;
  • geometry pour la mise en page de mon document ;
  • fancyhdr permettant de personnaliser les en-têtes et les pieds-de-page ;
  • fancybox afin de réaliser des boîtes de meilleure qualité que ne le fait LaTeX nativement ;
  • setspace pour modifier l’interligne de mon document (avec l’environnement spacing sous la syntaxe \begin{spacing}{multiple_de_l'interligne_e.g._1.25}) ;
  • hyperref afin d’obtenir des liens cliquables lors de la génération du pdf ;
  • eurosym pour avoir une symbole € de meilleure qualité ;
  • kpfonts qui permet d’utiliser une police à mon goût plus jolie que la font par défaut (et qui a l’avantage, entre autres, de proposer les anciennes ligatures et les chiffres elzéviriens ;
  • subfig pour pouvoir définir des figures subdivisées ;
  • array et multirow (dépendant de array) qui permettent respectivement d’avoir des tableaux mieux dessinés et de pouvoir fusionner des lignes ;
  • lettrine pour afficher des lettrines en début de paragraphe (à l’aide de la commande \lettrine{}{}) ;
  • numprint insérant des espaces à chaque milliers aux chiffres notés avec la commande \numprint{} ;
  • nicefrac (avec l’option nice) afin d’écrire des fractions en mode texte sous la forme ½ ;
  • color permettant de définir des couleurs personnalisées (avec la commande \definecolor{nom_de_la_nouvelle_couleur}{rgb}{valeur 1 entre 0 et 1, valeur 2, valeur 3} ;
  • url pour obtenir des url cliquables ;
  • makeidx pour obtenir un index à l’endroit où est appelée la commande \printindex (à condition que la commande \makeindex ait été appelée avant le début du document) ;
  • biblatex et csquotes afin de personnaliser l’apparence de la bibliographie.

Si cela vous intéresse, mon fichier préambule.tex est disponible ici.

Créer de nouvelles commandes

L’avantage de créer certaines commandes c’est qu’elles permettent de changer le styles de certaines parties de textes sans avoir à vérifier chaque occurrence.

La création de nouvelles commandes n’est pas très compliqué. Il suffit de déclarer dans le préambule de votre document (à l’aide de la commande \newcommand) le nom de votre commande, le nombre d’arguments puis le traitement de ces arguments. La syntaxe est la suivante :

\newcommand{\nomdemacommande}[nombre_d'arguments]{traitement des arguments}

Comment faire ?

Comme rien ne vaut un bon exemple, voici une commande que j’ai écrite et qui me sert relativement souvent :

\newcommand{\siecle}[1]{\textsc{#1}\ieme{}~siècle}

Décomposons à présent cette définition.

  1. \newcommand, je commence par dire que je veux définir une nouvelle commande ;
  2. {\siecle}, je déclare ensuite le nom à l’aide duquel j’appellerai ma commande ;
  3. [1], ma commande comprend un unique argument (le numéro du siècle en l’occurrence) ;
  4. {\textsc{#1}\ieme{}~siècle}, vient ensuite le traitement de mon argument :
    1. \textsc{#1}, je demande à ma commande de placer mon argument en petites capitales,
    2. \ieme{}, puis j’ajoute l’abréviation e,
    3. ~siècle, et je termine en accolant (à l’aide d’un espace insécable) le mot siècle.

Ainsi, pour écrire xxe siècle, il me suffit d’écrire en code LaTeX \siecle{xx}, ce qui me fait gagner du temps et me permet d’être sûr d’écrire les siècles toujours de la même manière.

Des noms uniformes

Au sein de mes cours, j’ai régulièrement besoin d’écrire des noms d’auteurs ou de personnes. Plusieurs contraintes se posaient à moi. Je voulais que :

  • les noms apparaissent toujours selon le même style ;
  • la première fois le nom apparaisse en entier (Prénom Nom) et qu’après n’apparaissent que l’initiale du prénom suivie du nom (P. Nom) ;
  • les auteurs soient répertoriés au sein de l’index situé à la fin de mon cours.

Bien sûr, tout ceci devait se faire automatiquement. J’ai donc créé1) une commande comprenant trois arguments :

  1. le prénom ;
  2. l’initiale du prénom ;
  3. le nom.

Avant toute explication, voici la commande en question

\newcommand{\nom}[3]{%
\ifcsname c@#3#1\endcsname\stepcounter{#3#1}%
#2~\textsc{#3}%
\else%
\newcounter{#3#1}%
#1~\textsc{#3}\fi%
\index{#3, #1}%
}

Le principe de ma commande est le suivant :

  1. on teste d’existence d’un compteur intitulé NomPrenom ;
  2. si le compteur existe :
    1. on l’incrémente de un,
    2. on écrit le nom sous la forme P. Nom,
  3. sinon :
    1. on le crée,
    2. on écrit le nom sous la forme Prénom Nom ;
  4. enfin on ajoute à l’index une entrée sous la forme Nom, Prénom.

Ainsi, lorsque LaTeX rencontre pour la première fois un nom, il ne trouve pas de compteur associé et écrit donc le nom dans sa forme pleine puis, lorsqu’il le rencontrera à nouveau, il verra que le compteur existe déjà, il saura donc qu’on a déjà écrit ce nom, il l’écrira donc sous sa forme abrégée.

Sélection de liens pour LaTeX

Vous pouvez trouver ici une sélection de liens concernant LaTeX.

Écriture à plusieurs mains

Il existe deux sites permettant de composer des documents LaTeX en ligne et à plusieurs :

LaTeX en sciences humaines

Maïeul Rouquette a écrit quelques articles concernant l’utilisation de (La)TeX en sciences humaines et sociales sur son site.

Ajouter des titres à la table des matières

Pour pouvoir ajouter à la table des matières d’un document TeX un titre de chapitre, section, etc. non numéroté, il suffit d’inclure la ligne suivante à la suite de la déclaration de chapitre, section, etc.

\addcontentsline{toc}{chapter}{Introduction}