Description du problème
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 \restorestanzaline
que 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.