Comment numéroter les lignes d’un document ?#

1.  Dans du texte classique#

1.1.  Avec l’extension lineno#

L’extension lineno permet d’obtenir cette numérotation en modifiant la routine de sortie Il suffit d’insérer la commande \linenumbers là où on souhaite activer la numérotation. Cette méthode marche raisonnablement bien, y compris quand la taille de caractère et l’interligne sont modifiés (par exemple pour les titres), mais n’est pas sans faille ; l’utilisateur doit donc rester vigilant.

\documentclass[french]{article}
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{lineno}

  \title{À la recherche\dots}
  \author{M. P.}
  \date{1913}

\begin{document}
\linenumbers
\maketitle
\section{Le coucher}
Longtemps, je me suis couché de bonne heure. Parfois, à peine ma bougie 
éteinte, mes yeux se fermaient si vite que je n'avais pas le temps de me 
dire : \og{}Je m'endors.\fg{} Et, une demi-heure après, la pensée qu'il 
était temps de chercher le sommeil m'éveillait\dots
\end{document}

Si on souhaite numéroter les lignes d’une partie du document seulement, on peut utiliser l’environnement linenumbers :

\begin{linenumbers}
Longtemps, je me suis couché
de bonne heure...
\end{linenumbers}

Par défaut, la numérotation se poursuit tout le long du document, mais il est possible de la faire revenir à 1 à chaque nouvelle page, avec l’option pagewise. Voici d’ailleurs quelques autres options de l’extension :

  • left pour afficher les numéros dans la marge de gauche (comportement par défaut) ;

  • right pour afficher les numéros dans la marge de droite ;

  • switch pour afficher les numéros dans la marge extérieure ;

  • modulo pour numéroter toutes les cinq lignes.

La documentation de lineno propose de nombreuses autres options de configuration.

Si vous placez une étiquette dans votre document avec \linelabel{ICI}, vous pourrez faire référence à son numéro de ligne avec \ref{ICI}.

Astuce

Cette fonctionnalité peut être étendue aux notes de bas de page avec l’extension fnlineno :

\documentclass[french]{article}
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{lineno,fnlineno}

  \title{À la recherche\dots}
  \author{M. P.}
  \date{1913}

\begin{document}
\linenumbers
\section{Le coucher}
Longtemps, je me suis couché de bonne heure\footnote{Vers 18h ou 19h,
rarement plus tard sauf en cas d'impératif mondain.}.
Parfois, à peine ma bougie éteinte, mes yeux se fermaient
si vite que je n'avais pas le temps de me dire :
\og{}Je m'endors.\fg{} Et, une demi-heure après,
la pensée qu'il était temps de chercher le sommeil m'éveillait\dots
\end{document}

1.2.  Avec l’extension reledmac#

Les éditions critiques de textes font souvent appel à la numérotation des lignes de texte. Pour ce type de travaux, l’extension reledmac offre une solution complète. Cette extension remplace edmac et ledmac, devenues obsolètes.

1.3.  Avec l’extension vruler#

L’extension vruler évite de nombreux problèmes associés à la numérotation des lignes, en permettant de placer sur les pages une règle rectangulaire contenant la numérotation. L’effet est tout à fait correct lorsqu’il est appliqué à un texte d’apparence uniforme, mais il reste médiocre dans les textes qui impliquent des ruptures telles que les mathématiques interpolées ou les figures.

1.4.  Avec l’extension numline#

Avertissement

L’extension numline est classée comme obsolète. Ce qui suit est informatif.

L’extension numline, à l’image de lineno, retraite également la routine de sortie. L’utilisateur doit donc rester prudent.

2.  Dans du texte en mode verbatim#

2.1.  Avec les extensions moreverb ou fancyvrb#

Dans ce cas particulier, les extensions moreverb ou fancyvrb, dédiées au mode verbatim, peuvent être utilisées. Chacune propose un environnement dédié et paramétrable :

  • l’environnement listing de moreverb demande comme argument obligatoire le numéro de la première ligne numérotée ;

  • le riche environnement Verbatim de fancyvrb dispose de l’option numbers=left pour activer la numérotation à gauche. L’option numbers=right place la numérotation à droite.

\documentclass[french]{article}
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{moreverb}
  \usepackage{fancyvrb}

\begin{document}
\section*{Le coucher (avec \textsf{moreverb})}
\begin{listing}{1}
Longtemps, je me suis couché de bonne heure. Parfois, à 
peine ma bougie éteinte, mes yeux se fermaient si vite 
que je n'avais pas le temps de me dire : « Je m'endors ». 
Et, une demi-heure après, la pensée qu'il était temps de
chercher le sommeil m'éveillait...  
\end{listing}

\section*{Le coucher (avec \textsf{fancyvrb})}
\begin{Verbatim}[numbers=left]
Longtemps, je me suis couché de bonne heure. Parfois, à 
peine ma bougie éteinte, mes yeux se fermaient si vite 
que je n'avais pas le temps de me dire : « Je m'endors ». 
Et, une demi-heure après, la pensée qu'il était temps de
chercher le sommeil m'éveillait...  
\end{Verbatim}
\end{document}

Ces exemples restent ici simples. Les extensions proposent bien plus de fonctionnalités.

Voir aussi sur ce sujet « Comment inclure un fichier verbatim ? ».

2.2.  Avec la classe memoir#

La classe memoir fournit les fonctionnalités nécessaires avec l’environnement boxedverbatim. Cet environnement est paramétrable. L’exemple ci-dessous en illustre deux :

  • \linenumberfrequency{⟨nombre⟩} qui indique le ⟨nombre⟩ de lignes consécutives nécessaires pour qu’un numéro soit affiché (avec la valeur 1, chaque ligne est numérotée).

  • \nobvbox qui indique de ne pas mettre de filet autour de l’environnement.

\documentclass[french]{memoir}
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page

  \linenumberfrequency{1}     % Numérotation de chaque ligne
      
\begin{document}
\section*{Le coucher}
\begin{boxedverbatim}
Longtemps, je me suis couché de bonne heure. Parfois, à 
peine ma bougie éteinte, mes yeux se fermaient si vite 
que je n'avais pas le temps de me dire : « Je m'endors ». 
\end{boxedverbatim}

\nobvbox % Pour retirer le filet autour de l'environnement
\begin{boxedverbatim}
Et, une demi-heure après, la pensée qu'il était temps de
chercher le sommeil m'éveillait...  
\end{boxedverbatim}
\end{document}