Accueil > LaTeX > (r)(e)led(mac/par) > Mixer numérotation continue et discontinue

Mixer numérotation continue et discontinue

lundi 13 mai 2013, par Maïeul

Une personne souhaitait mélanger dans un texte deux types de numérotation de lignes, l’une continue, l’autre discontinue. Il n’est pas possible de faire cela directement avec les commandes eledmac, mais avec un peu d’astuce, on peut résoudre le problème.

Description du problème

Alterner numérotation continue et discontinue

Le demandeur travaille sur un texte alternant poésie et vers. Il souhaitait que la numérotation de le prose recommence à 1 en début de chaque passage, mais que la numérotation des vers soit continue, comme dans l’exemple joint.

Chaque bloc de vers / de prose correspond à un \beginumbering...\endnumbering.

On ne peut utiliser \pausenumbering ...  \resumenumbering [1] puisque nous alternons numérotation continue et numérotation discontinue.

Solution : principe

Le principe de la solution est assez simple :
 à la fin de chaque série de vers, sauvegarder le numéro de la ligne dans un compteur.
 en début de chaque série de vers, exceptée la première, changer la numérotation, en utilisant le compteur.

Nous allons donc définir deux commandes dans le préambule : \savestanzaline, que nous placerons entre \& et \endnumbering et \restorestanzalineque nous placerons entre \beginnumbering et \stanza [2], selon l’exemple ci-dessous :

\beginnumbering  
\restorestanzaline 
\stanza  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi &  
Questo è il testo in versi  
\&  
\savestanzaline 
\endnumbering  

Reste à définir ces commandes, ce qui n’est pas une mince affaire.

Solution : mise en œuvre

Dans notre préambule, mettre les lignes suivantes :

Commentaire :

  • l. 1 et l. 5 : nos commande manipulent des commandes avec des @ dans le nom. On a donc besoin de makeatletter et \makeatother les encadrant.
  • l. 2 : on déclare un compteur \@stanzaline. C’est un compteur TeX et non LaTeX. Ce choix ce justifie :
    • Par économie : on n’a pas besoin de toutes fonctionalités d’un compteur TeX.
    • Par simplicité : un compteur LaTeX aurait posé des soucis lors de son appel pour modifier les numéro de lignes.
  • l. 3 : la commande \savestanzaline assigne à \@stanzaline la valeur du compteur \line@num, que eledmac utilise pour compter les lignes. Le \global permet que l’assignement dépasse le cadre de la section numérotée [3].
  • l. 4 : la commande \setlinenum est utilisé pour modifier le numéro de la ligne. Elle est appelée avant que la numérotation ne commence. On indique simplement que le numéro de ligne souhaité correspond au compteur \@stanzaline.

Et voici donc comment l’on peut mélanger deux types de numérotation de lignes.


[1Qui permettent d’arrêter un passage numéroté sans pour autant réinitialiser la numérotation.

[2Sauf pour le premier bloc de vers.

[3Celle qui est comprise entre \beginnumbering et \endnumbering.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)