I. Introduction▲
Il nous est tous arrivé à un moment ou un autre d'avoir besoin dans un document de faire référence à un tableau, une figure, une section…
Et c'est à ce moment que l'on se dit : « mais comment fait-on ça sous LaTeX ? ».
Rassurez-vous, ce n'est pas très compliqué. Il suffit de connaître quelques commandes et LaTeX s'occupera pour vous du reste… enfin presque.
II. Les commandes de base▲
Sans ajouter aucune extension, LaTeX offre par défaut plusieurs commandes qui couvrent les besoins de base et permettent de gérer des références croisées sans efforts.
La liste ci-dessous vous donnera ces commandes de base.
\label{mot-clef}
: c'est avec cette commande que l'on note un endroit auquel on pourra par la suite faire référence.\ref
{mot-clef} : avec cette commande, on fait référence à la structure hiérarchique (section, sous-section…) dans laquelle se trouve notre mot-clef.\pageref
{mot-clef} : avec cette commande, il est possible de faire référence à la page contenant notre mot-clef.
Il est préférable de coller au mot-clef la commande \label{mot clef}
comme ci-dessous :
... une poule sur un mur\label{mur}
...
En procédant de cette façon, vous éviterez que le terme auquel vous voulez faire référence ne se trouve sur une autre page que la référence si celui-ci se situe proche d'un saut de page.
Il peut en effet être désagréable de voir une référence de ce type « comme indiqué section 1.1 page 3 » alors que celle-ci devrait être « comme indiqué section 1.1 page 2 »
ATTENTION !!! Compilez bien deux fois de suite afin que les références croisées soient parfaitement générées.
III. Un exemple vaut mieux qu'un long discours▲
Pour voir ce que permettent les commandes citées plus haut, nous allons utiliser le fichier de test ci-dessous.
% packages utilisés
\documentclass
[a4paper,12pt,french]{article}
\usepackage
[top=2cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage
[utf8]{inputenc}
\usepackage
[T1]{fontenc}
\usepackage
{lipsum}
\usepackage
[french]{babel}
\begin
{document}
\section
{ma première section}
\subsection
{ma première sous-section}
\lipsum
[1]\label{mareference}
\newpage
\section
{ma seconde section}
Comme vu \ref
{mareference} page \pageref
{mareference}
\end
{document}
Résultat de la double compilation |
|
Comme le montre le résultat de la double compilation ci-dessus, la commande \ref
{mareference} nous donne bien le numéro (ici 1.1) de la structure hiérarchique de notre document. Et la commande \pageref
{mareference} affiche bien le numéro de page (ici 1) comme attendu.
L'ennui c'est que nous n'avons que des références à la page et à la structure du document. C'est certes pratique, mais dans certains cas, cela s'avère ne pas convenir à notre propos.
Il pourrait être plus pratique pour nous de donner le libellé de la section (ici « ma première sous-section ») par exemple ou de présenter sous la forme « page précédente » en lieu et place de « page 1 » lorsqu'il est fait référence à la page immédiatement précédente.
Pour ce faire, il existe plusieurs extensions que l'on peut trouver facilement sur le CTAN à l'adresse http://ctan.org/ctan-portal/search/.
La liste des extensions que je vais vous présenter ici n'est en rien exhaustive. Libre à vous d'en utiliser d'autres. Il ne s'agit que des extensions les plus fréquemment utilisées.
IV. Améliorer la présentation des références croisées▲
IV-A. L'extension varioref▲
Cette extension ajoute un certain nombre de commandes permettant un affichage intelligent des références.
Voici les principales (pour la liste exhaustive reportez-vous à la documentation) :
\vref
{référence} : insère le numéro de section et remplace le numéro de page par « page précédente » ou « page suivante » si la référence se trouve à la page précédente ou suivante.\vpageref
{référence} : insère le numéro de page et le remplace par « page précédente » ou «page suivante » si la référence se trouve à la page précédente ou suivante.\vrefrange
{référence1}{référence2} : insère une référence à une plage de pages du type « tableau 2.5 à 2.8 pages 2-3 ».\fullref
{référence} : insère directement les références sous la forme « 2.1 page 2 ».\Vref
{référence} : est similaire à\vref
{référence} sauf que le premier caractère de la référence est mis en majuscule. Il ne doit pas s'agir d'un caractère accentué (sauf à utiliser la forme\'
{e}) ou d'un nombre (0 à 9) sinon un message d'erreur apparaîtra à la compilation.\Ref
{référence} : est similaire à\ref
{référence} sauf que le premier caractère de la référence est mis en majuscule. Il ne doit pas s'agir d'un caractère accentué (sauf à utiliser la forme\'
{e}) ou d'un nombre (0 à 9) sinon un message d'erreur apparaîtra à la compilation.
Comme on peut le voir, cette extension apporte un confort non négligeable quant à la présentation des références croisées.
Voici d'ailleurs un exemple afin de vous permettre de comparer.
Exemple avec l'extension varioref |
|
% packages utilisés
\documentclass
[a4paper,12pt,french]{article}
\usepackage
[top=2cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage
[utf8]{inputenc}
\usepackage
[T1]{fontenc}
\usepackage
{lipsum}
\usepackage
{varioref}
\usepackage
[french]{babel}
\begin
{document}
\section
{ma première section}
\subsection
{ma première sous-section}
\lipsum
[1]\label{mareference}
\newpage
\section
{ma seconde section}
Comme vu \fullref
{mareference}
Comme vu \vref
{mareference}
Comme vu \vpageref
{mareference}
\end
{document}
Voici un exemple de l'utilisation de \vrefrange
{référence1}{référence2}.
% packages utilisés
\documentclass
[a4paper,12pt,french]{article}
\usepackage
[top=2cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage
[utf8]{inputenc}
\usepackage
[T1]{fontenc}
\usepackage
{lipsum}
\usepackage
{varioref}
\usepackage
[french]{babel}
\begin
{document}
\section
{ma première section}
\subsection
{ma première sous-section}
\lipsum
[1]\label{maref1}
\newpage
\section
{ma seconde section}
\subsection
{ma seconde sous-section}
\lipsum
[1]\label{maref2}
\newpage
\section
{ma troisième section}
Comme vu \vrefrange
{maref1}{maref2}, bla\ldots
\end
{document}
IV-B. L'extension hyperref▲
Hyperref est une extension très utilisée lors de la génération de fichiers PDF, car elle permet de mettre des liens hypertextes dans une table des matières, ce qui permet de parcourir facilement un document. Les liens et les citations bibliographiques peuvent être colorés, nombres de paramètres d'un PDF peuvent être réglés grâce à cette extension. Comme toujours, je vous encourage à lire la documentation.
Cette extension contient une autre extension nommée nameref qui peut être appelée indépendamment d'hyperref. Donc, si vous avez chargé hyperref, vous en bénéficiez automatiquement, il est donc inutile de la recharger.
Grâce à nameref, vous pourrez faire référence à une section, sous-section… avec son libellé en lieu et place de son numéro. Ceci peut, selon le contexte, être utile lors de vos rédactions.
Une commande d'hyperref mérite attention. Il s'agit de \autoref
{mareference}. Elle permet de faire apparaître le nom de la structure hiérarchique du document dans le texte.
N'oublions pas la commande \url
{URL} qui permet d'insérer comme lien cliquable une adresse internet, ce qui peut être bien commode.
Exemple avec l'extension hyperref |
|
Par défaut les liens apparaissent entourés d'un cadre qui, normalement, n'est pas imprimé.
% packages utilisés
\documentclass
[a4paper,12pt,french]{article}
\usepackage
[top=2cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage
[utf8]{inputenc}
\usepackage
[T1]{fontenc}
\usepackage
{lipsum}
\usepackage
[french]{babel}
\usepackage
{hyperref}
\begin
{document}
\section
{ma première section}
\subsection
{ma première sous-section}
\lipsum
[1]\label{mareference}
\newpage
\section
{ma seconde section}
Comme vu à \nameref
{mareference}
Comme vu \autoref
{mareference}
Lisez \url
{http://www.developpez.net/forums/}
\end
{document}
IV-C. L'extension cleveref▲
Afin de parfaitement utiliser cette extension, il est impératif de bien lire la documentation. En effet, celle-ci permet de personnaliser les formats d'affichage des références quel que soit leur type.
Cette extension, outre une grande possibilité de personnalisation, offre des commandes et possibilités pour le moins intéressantes.
\cref
{label 1,...,label n} : permet d'obtenir des références de la forme « section (1) à (3) et (4) ».\Cref
{label 1,...,label n} : fait la même chose que la commande\cref
{label 1,...,label n} en mettant la première lettre du terme précédant les références en majuscule, ce qui donne, par exemple « Section (1) à (3) et (4) ».\cpageref
{label 1,...,label n} : permet d'obtenir des références de la forme « page (1) à (3) et (4) ». La version\Cpageref
{label 1,...,label n} mettra un « P » majuscule au mot « page ».\namecref
{label 1} : affichera le nom de la structure hiérarchique (section, sous-section...).\nameCref
{label 1} fera la même chose mais en mettant une majuscule au nom de la structure hiérarchique.
\namecrefs
{label 1} et \nameCrefs
{label 1} font exactement la même chose que les deux commandes précédentes mais en terminant par un « S » le nom de la structure hiérarchique pour qu'il soit au pluriel.
Il existe à chaque fois une commande comportant une majuscule identique à une autre n'en comportant pas. L'une ne met pas de majuscule au terme précédant les références, l'autre en met une.
Exemple avec l'extension cleveref |
|
% packages utilisés
\documentclass
[a4paper,12pt,french]{article}
\usepackage
[top=2cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage
[utf8]{inputenc}
\usepackage
[T1]{fontenc}
\usepackage
{lipsum}
\usepackage
{cleveref}
\usepackage
[french]{babel}
\begin
{document}
\section
{ma première section}
\subsection
{ma première sous-section}
\lipsum
[1]\label{mareference}
\newpage
\section
{ma seconde section}
Comme vu \cref
{mareference}
Comme vu \Cref
{mareference}
Comme vu \cpageref
{mareference}
Comme vu \Cpageref
{mareference}
Comme vu \namecref
{mareference}
Comme vu \nameCref
{mareference}
Comme vu \namecrefs
{mareference}
Comme vu \nameCrefs
{mareference}
\end
{document}
Exemple avec \cref, \Cref, \cpageref et \Cpageref.
% packages utilisés
\documentclass
[a4paper,12pt,french]{article}
\usepackage
[top=2cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage
[utf8]{inputenc}
\usepackage
[T1]{fontenc}
\usepackage
{lipsum}
\usepackage
{cleveref}
\usepackage
[french]{babel}
\begin
{document}
\section
{ma première section}
\subsection
{ma première sous-section}
\lipsum
[1]\label{maref1}
\newpage
\section
{ma seconde section}
\subsection
{ma seconde sous-section}
\lipsum
[1]\label{maref2}
\newpage
\section
{ma troisième section}
\subsection
{ma troisième sous-section}
\lipsum
[1]\label{maref3}
\newpage
\section
{ma quatrème section}
Comme vu \cref
{maref1,maref2,maref3}, bla\ldots
Comme vu \Cref
{maref1,maref2,maref3}, bla\ldots
Comme vu \cpageref
{maref1,maref2,maref3}, bla\ldots
Comme vu \Cpageref
{maref1,maref2,maref3}, bla\ldots
\end
{document}
V. Faire référence à une référence grâce aux liens hypertext▲
Il est possible de faire des liens internes au document, ce qui permet de se déplacer rapidement et facilement lorsqu'il s'agit d'un document important.
Il y a une restriction à garder à l'esprit : un lien ne peut avoir qu'une seule destination.
Voici la façon de faire avec l'extension hyperref.
\hyperlink
{depart}{\hypertarget
{retour}{mot 1}} … plus loin dans le texte … \hypertarget
{depart}{\hyperlink
{retour}{mot 2}}
Quel est l'intérêt de cette astuce ?
Imaginons que vous soyez enseignant et prépariez une liste d'exercices pour vos élèves avec à la fin du document les corrections. Tant pour vous que pour l'élève, il peut être vite fastidieux de faire défiler le document dans son intégralité afin d'aller lire la correction. Avec cette astuce, il est facile de créer un lien cliquable entre l'exercice et sa correction qui permet de naviguer de l'un à l'autre au sein du document.
Ainsi, il suffirait par exemple d'introduire le texte suivant au niveau de l'exercice \hyperlink
{exercice1}{\hypertarget
{solution1}{Voir la solution.}}.
Puis, \hypertarget
{exercice1}{\hyperlink
{solution1}{Retour énoncé.}} au niveau de la solution afin de permettre la navigation de l'un à l'autre.
VI. Conclusion▲
Comme vous l'avez vu au cours de cet article, poser et utiliser des références croisées n'est pas vraiment difficile.
Que celles-ci soient posées dans des notes de bas de page, des tableaux, du texte ou encore des flottants, la facilité à les créer et les utiliser avec LaTeX permet d'en user et abuser.
En plus des nombreuses possibilités qu'offre LaTeX, vous avez là encore l'avantage d'obtenir des documents de grande qualité avec un minimum d'efforts. Et donc, n'hésitez pas, lâchez-vous !
VII. Remerciements▲
Tout mes remerciements à -Nikopol- et f-leb pour la relecture technique, ainsi que ced pour la relecture orthographique.