Suggestion pour un code plus efficace, et une regex plus sûre.
Et si on présentait « \\index{ » sur une ligne séparée ?
Avec vim, pour faciliter à la fois la lecture et les modifications en masse, j’utilise la forme
d’écriture suivante pour les « \\footnote » (sauf si elles sont très brèves et tiennent sur une seule ligne, séparée et courte.)
1. Commentaire collé au mot qui appelle la note pour annuler l’espace parasite qu’ajouterait
le retour à la ligne,
2. appel de note en début de ligne suivante avec commentaire après l’accolade ouvrante ({%),
3. commentaire à la fin du texte de la note (c’est du luxe !),
4. fermeture du bloc note sur une ligne séparée, suivi de la ponctuation si on veut laisser
babel gérer les espaces au mieux, (poursuite du texte principal à la ligne suivante).
blabla, du texte%
\footnote{%
Le texte de la note qui peut être
très
très long...%
},
et la suite du texte.
J’indique ici par ^ le début de ligne.
blabla, du texte%
\footnote{%
Le texte de la note qui peut être
très
très long...%
},
et la suite du texte.
ligne:
On a ainsi un bloc isolé --- un bloc-note ;) ---, entre
^\footnote{%
et
^}
facile à repérer et
à identifier avec ses 3 « % » en fin de ligne .
Il faut faire attention à ne pas laisser d’espace avant la balise
\footnote, qui doit toujours commencer à la première colonne de la page.
Si l’appel de note est suivi d’une ponctuation, je la mets immédiatement après
l’accolade fermante du bloc-note, et de toute façon, le texte se poursuit
la ligne suivante.
Cette discussion m’incite a envisager d’appliquer une règle analogue pour les index, qui gagneraient à être simplement placés après une balise de commentaire % , au début de la ligne
suivante.
Dans ce cas, la regex sous vim pourrait gagner en précision et ne s’appliquer spécifiquement
qu’à la commande \index.
Pour cela, la regex, au lieu de s’appliquer à tout le fichier avec « :% » , s’appliquerait spécifiquement à toutes les lignes comprenant « \index{ » , en utilisant l’opérateur de sélection « :g/ »
La regex devient alors :
:g/\\index\{/s/s+s+/ !/g!
ou à peine moins précis (bien plus lisible pour comprendre l’exemple) :
:g/index/s/s+s+/ !/g !