Travailler avec des sous-fichiers

De nombreux manuels et cours sur LaTeX conseillent de travailler avec des sous-fichiers, permet­tant de scin­der ses docu­ments de travail en plusieurs fichiers (e.g. un fichier par chapitre pour l’écri­ture d’un livre).

Prendre l’ha­bi­tude d’une telle pratique peut-être une très bonne idée, mais il peut égale­ment être très inté­res­sant de pous­ser plus loin la réflexion. Dans la mesure où le docu­ment va être scin­der, il peut être inté­res­sant de pouvoir compi­ler chaque sous-fichier de manière indé­pen­dante. Pour cela j’ai écrit un petit package (que vous ne trou­ve­rez pas sur le CTAN) qui permet de compi­ler un fichier à l’in­té­rieur d’un plus géné­ral ou de manière indé­pen­dante, sans avoir à modi­fier à chaque fois le code source.

Concer­nant l’ap­pel des packages

Il est néces­saire d’écrire l’en­semble des appels de packages dans un fichier à part puisque ce dernier sera appelé par le docu­ment maître à la compi­la­tion, mais égale­ment par les sous-docu­ments lorsqu’on les compi­lera de manière indé­pen­dante.

Dans ce fichier vous pouvez appe­ler les packages que vous souhai­tez, aucun n’étant néces­saire au bon fonc­tion­ne­ment du package que j’ai écrit. Vous pouvez égale­ment y indiquer votre nom avec la commande \author{} et éven­tuel­le­ment une date avec la commande \date{}.

Avec le fichier maître…

Le fichier prin­ci­pal se construit globa­le­ment de la même manière que d’ha­bi­tude, seule­ment il est néces­saire d’ini­tia­li­ser un comp­teur parti­cu­lier qui servira lors de la compi­la­tion du docu­ment et d’ap­pe­ler le fichier de préam­bule créé préa­la­ble­ment. Le comp­teur en ques­tion s’ini­tia­lise de la manière suivante :

\newcounter{multipart}

Ainsi, un exemple mini­mal de fichier maître se présen­te­rait 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’in­té­grer le fichier multi­part.tex qui contient les indi­ca­tions néces­saires au bon fonc­tion­ne­ment du proces­sus (et que nous déve­lop­pe­rons plus bas). Ce fichier doit se trou­ver dans le même dossier que le fichier compilé. En cas d’uti­li­sa­tion de sous-dossiers pour les fichiers, il est néces­saire que ce fichier se trouve égale­ment dans ces dossiers. (Un simple lien symbo­lique permet de simu­ler la présence de ce fichier sans avoir à les mettre à jour à chaque modi­fi­ca­tion.)

Il convient ensuite d’ap­pe­ler la commande \debut­mul­ti­part{}{} qui demande deux argu­ments. Le premier corres­pond au titre du docu­ment. Il appa­raî­tra comme un titre de chapitre lorsque le docu­ment sera compilé en même temps que le fichier maître (qui corres­pond à un livre), mais il devien­dra le titre d’un article lorsque le fichier sera compilé seul (le docu­ment prenant alors la classe article). Le second argu­ment corres­pond simple­ment au chemin du fichier de préam­bule créé plus tôt (ce chemin est le chemin rela­tif depuis le sous-fichier, il servira lors de la compi­la­tion auto­nome).

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

En fin de fichier, il vous suffit d’in­diquer la fin du sous-fichier par la commande \finmul­ti­part{}.

Un exemple mini­mal serait le suivant :

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

Le corps de texte de mon document.

\finmultipart{}

Le package multi­part

Il ne nous reste pus qu’à créer (dans votre cas copier) le package en lui-même, dans un fichier multi­part.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’à compi­ler à votre conve­nance le docu­ment prin­ci­pal ou le sous-docu­ment pour obte­nir le fichier de votre choix.

Instal­lez LaTeX

LaTeX est un système de compo­si­tion de docu­ments. Il consiste en un ensemble de macro-commandes faci­li­tant l’uti­li­sa­tion du “proces­seur de texte” TeX.

Le prin­cipe de base de LaTeX est de sépa­rer le fond (le contenu) de la forme (la mise en page), le rédac­teur écrit donc son docu­ment en suivant certaines règles syntaxiques en se concen­trant unique­ment sur son contenu pour ensuite compi­ler son fichier afin d’ob­te­nir un docu­ment lisible et impri­mable (PDF, PS, DVI, etc.)

Instal­la­tion

Afin de pouvoir utili­ser LaTeX, il est néces­saire d’ins­tal­ler une distri­bu­tion (un ensemble de paquets). Sous GNU/Linux, la plus couram­ment utili­sée est TeX-Live, qui a l’avan­tage d’être très complète.

Pour l’ins­tal­ler, il existe plusieurs solu­tions :

  • avec un DVD :
    • télé­char­ger l’iso du DVD,
    • ache­ter un DVD auprès des asso­cia­tions d’uti­li­sa­teurs (TUG, TeX Users Group) comme GUTen­berg ;
  • par les dépôts de votre distri­bu­tion GNU/linux.

TeX-Live étant une distri­bu­tion LaTeX il est possible (au même titre qu’a­vec une distri­bu­tion GNU/Linux) de ne pas instal­ler l’en­semble des paquets.

Le paquet mini­mum à instal­ler est texlive. Ensuite, il est conseillé d’ins­tal­ler le support du français texlive-lang-french ainsi qu’un ensemble de paquets utiles pour une utili­sa­tion agréable de LaTeX texlive-latex-extra.

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

Autre­ment, il est aussi possible d’ins­tal­ler l’en­semble de la distri­bu­tion TeX-Live avec le paquet texlive-full (atten­tion, dans ce cas la taille de l’en­semble des paquet est très volu­mi­neuse !)

# apt-get install texlive-full

Aucune confi­gu­ra­tion n’est à réali­ser durant l’ins­tal­la­tion de la distri­bu­tion TeX-Live. Une fois ceci fait, l’uti­li­sa­tion de LaTeX peut commen­cer.

Logi­ciels utiles

Édition des fichiers

Pour éditer les fichiers néces­saires à l’écri­ture de vos docu­ments sous LaTeX (les fichiers portant l’ex­ten­sion .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 logi­ciel prévu pour l’édi­tion de fichiers LaTeX, qui va pouvoir propo­ser une colo­ra­tion syntaxique, un système d’auto-complé­tion, etc. Ainsi existent entre autres :

  • TeXma­ker (dispo­nible dans les dépôts d’Ubuntu avec le paquet texmaker) ;
  • TeXs­tu­dio (fork de TeXma­ker) ;
  • Kile (prévu pour KDE) ;

Vision­nage des docu­ments compi­lés

LaTeX compile vos docu­ments source et sort un docu­ment lisible et impri­mable. Ce docu­ment peut se trou­ver sous plusieurs formes (selon les besoins). Il est possible d’ob­te­nir un fichier DVI (.dvi) signi­fiant Device Inde­pendent, qui est la sortie par défaut de LaTeX, mais il est égale­ment possible d’ob­te­nir un fichier PDF (.pdf) ou un fichier PostS­cript (.ps).

Afin de les affi­cher, il est néces­saire d’avoir une vision­neuse. Sous GNU/Linux, il existe notam­ment Evince.

Person­na­li­sez LaTeX

LaTeX a la parti­cu­la­rité d’être un système plus ou moins person­na­li­sable, notam­ment au travers de défi­ni­tion de nouvelles commandes et envi­ron­ne­ments. J’uti­lise pour mes besoins person­nels (mise au propre de mes notes de cours d’uni­ver­sité) certaines commandes person­nelles et certains styles modi­fiés afin de corres­pondre à ce que je souhaite.

Avant toute chose, je vous conseille de vous écrire un fichier de préam­bule que vous utili­se­rez systé­ma­tique­ment sur tous vos docu­ments qui répondent aux mêmes besoins (chez moi mes cours), fichier que vous appel­le­rez en début de docu­ment, vous évitant d’avoir à tout réécrire à chaque fois. Ainsi, une fois ce fichier (preambule.tex chez moi) écrit, il vous suffit de l’ap­pe­ler avant le \begin{document} grâce à la commande :

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

Un préam­bule uniforme

À l’in­té­rieur de ce fichier vous appel­le­rez l’en­semble des paquets qui vous sont néces­saires (person­nel­le­ment j’y appelle égale­ment mon \documentclass[10pt, twoside]{book}). Voici les diffé­rents paquets que j’uti­lise :

  • fontenc (avec l’op­tion T1) et inputenc (avec l’op­tion utf8) pour l’en­co­dage des carac­tères ;
  • babel (avec les options english et french, dans cet ordre, la dernière option étant celle consi­dé­rée par défaut par LaTeX) pour la gestion de la langue française (les césures, les traduc­tions des titres, etc.) ;
  • sectsty permet­tant de modi­fier 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 docu­ment ;
  • fancyhdr permet­tant de person­na­li­ser les en-têtes et les pieds-de-page ;
  • fancybox afin de réali­ser des boîtes de meilleure qualité que ne le fait LaTeX nati­ve­ment ;
  • setspace pour modi­fier l’in­ter­ligne de mon docu­ment (avec l’en­vi­ron­ne­ment spacing sous la syntaxe \begin{spacing}{multiple_de_l'interligne_e.g._1.25}) ;
  • hyperref afin d’ob­te­nir des liens cliquables lors de la géné­ra­tion du pdf ;
  • eurosym pour avoir une symbole € de meilleure qualité ;
  • kpfonts qui permet d’uti­li­ser une police à mon goût plus jolie que la font par défaut (et qui a l’avan­tage, entre autres, de propo­ser les anciennes liga­tures et les chiffres elzé­vi­riens ;
  • subfig pour pouvoir défi­nir des figures subdi­vi­sées ;
  • array et multirow (dépen­dant de array) qui permettent respec­ti­ve­ment d’avoir des tableaux mieux dessi­nés et de pouvoir fusion­ner des lignes ;
  • lettrine pour affi­cher des lettrines en début de para­graphe (à l’aide de la commande \lettrine{}{}) ;
  • numprint insé­rant des espaces à chaque milliers aux chiffres notés avec la commande \numprint{} ;
  • nicefrac (avec l’op­tion nice) afin d’écrire des frac­tions en mode texte sous la forme ½ ;
  • color permet­tant de défi­nir des couleurs person­na­li­sées (avec la commande \definecolor{nom_de_la_nouvelle_couleur}{rgb}{valeur 1 entre 0 et 1, valeur 2, valeur 3} ;
  • url pour obte­nir des url cliquables ;
  • makeidx pour obte­nir un index à l’en­droit où est appe­lée la commande \printindex (à condi­tion que la commande \makeindex ait été appe­lée avant le début du docu­ment) ;
  • biblatex et csquotes afin de person­na­li­ser l’ap­pa­rence de la biblio­gra­phie.

Si cela vous inté­resse, mon fichier préambule.tex est dispo­nible ici.

Créer de nouvelles commandes

L’avan­tage de créer certaines commandes c’est qu’elles permettent de chan­ger le styles de certaines parties de textes sans avoir à véri­fier chaque occur­rence.

La créa­tion de nouvelles commandes n’est pas très compliqué. Il suffit de décla­rer dans le préam­bule de votre docu­ment (à l’aide de la commande \newcommand) le nom de votre commande, le nombre d’ar­gu­ments puis le trai­te­ment de ces argu­ments. 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 rela­ti­ve­ment souvent :

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

Décom­po­sons à présent cette défi­ni­tion.

  1. \newcommand, je commence par dire que je veux défi­nir une nouvelle commande ;
  2. {\siecle}, je déclare ensuite le nom à l’aide duquel j’ap­pel­le­rai ma commande ;
  3. [1], ma commande comprend un unique argu­ment (le numéro du siècle en l’oc­cur­rence) ;
  4. {\textsc{#1}\ieme{}~siècle}, vient ensuite le trai­te­ment de mon argu­ment :
    1. \textsc{#1}, je demande à ma commande de placer mon argu­ment en petites capi­tales,
    2. \ieme{}, puis j’ajoute l’abré­via­tion e,
    3. ~siècle, et je termine en acco­lant (à 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égu­liè­re­ment besoin d’écrire des noms d’au­teurs ou de personnes. Plusieurs contraintes se posaient à moi. Je voulais que :

  • les noms appa­raissent toujours selon le même style ;
  • la première fois le nom appa­raisse en entier (Prénom Nom) et qu’a­près n’ap­pa­raissent que l’ini­tiale du prénom suivie du nom (P. Nom) ;
  • les auteurs soient réper­to­riés au sein de l’in­dex situé à la fin de mon cours.

Bien sûr, tout ceci devait se faire auto­ma­tique­ment. J’ai donc créé1) une commande compre­nant trois argu­ments :

  1. le prénom ;
  2. l’ini­tiale du prénom ;
  3. le nom.

Avant toute expli­ca­tion, voici la commande en ques­tion

\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 prin­cipe de ma commande est le suivant :

  1. on teste d’exis­tence d’un comp­teur inti­tulé NomPrenom ;
  2. si le comp­teur existe :
    1. on l’in­cré­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’in­dex 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 comp­teur asso­cié et écrit donc le nom dans sa forme pleine puis, lorsqu’il le rencon­trera à nouveau, il verra que le comp­teur 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élec­tion de liens pour LaTeX

Vous pouvez trou­ver ici une sélec­tion de liens concer­nant LaTeX.

Écri­ture à plusieurs mains

Il existe deux sites permet­tant de compo­ser des docu­ments LaTeX en ligne et à plusieurs :

LaTeX en sciences humaines

Maïeul Rouquette a écrit quelques articles concer­nant l’uti­li­sa­tion de (La)TeX en sciences humaines et sociales sur son site.

Ajou­ter des titres à la table des matières

Pour pouvoir ajou­ter à la table des matières d’un docu­ment TeX un titre de chapitre, section, etc. non numé­roté, il suffit d’in­clure la ligne suivante à la suite de la décla­ra­tion de chapitre, section, etc.

\addcontentsline{toc}{chapter}{Introduction}