La documentation de xstring
précise que, par défaut, les arguments de \StrSubstitute
doivent être purement développables (fully expandable en anglais). Ce n'est pas le cas de \dots
et donc votre utilisation de \StrSubstitute
n'est pas correcte.
Vous pouvez changer de mode de fonctionnement de xstring
avec la commande \noexpandarg
mais, dans ce cas-là, \test
ne sera pas développé avant application de \StrSubstitute
et donc il n'y aura pas de remplacement de **
par \dots^
(puisque \StrSubstitute
ne verra que \test
et pas le **
qui est dedans).
Suivant ce que vous voulez vraiment faire, vous aurez peut-être intérêt à écrire une macro à un argument #1
qui sera placé en premier argument de \StrSubstitute
(et à ce moment-là, vous aurez le contenu de #1
, si je puis dire, présent en premier argument de \StrSubstitute
prêt à faire les substitutions sans développer au préalable ses arguments --- du fait du \noexpandarg
).
Par ailleurs, je vous suggère de jeter un coup d'œil à regex
de expl3
(maintenant incorporé dans le noyau LaTeX) qui propose sans doute les outils les plus puissants pour les substitutions dans les listes de tokens.
Publiée
17 Mar '21, 22:51
fpantigny
1.3k●4●4
Taux d'acceptation :
37%