Latex3: xparse : mange le jeton d'espace tout en recherchant un argument facultatif non fourni

Créé le 8 juil. 2018  ·  6Commentaires  ·  Source: latex3/latex3

Salut,

Avec xparse plus ou moins récent, une définition de fonction telle que
\NewDocumentCommand \foobar { m o } { ... }
entraîne un comportement étrange lorsque \foobar est appelé sans l'argument optionnel. Le comportement étrange est que le jeton espace suivant (au moins) est mangé. Cela ne s'est pas produit dans TL 2016 (Debian stretch), mais se produit dans TL 2018 (Debian unstable, xparse 2018-04-30 ; j'ai également ajouté manuellement xparse.sty 2018-05-12 pour les tests, même problème). Voici un MWE :

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xparse}
\usepackage{expl3}

\ExplSyntaxOn

\NewDocumentCommand \foobar { m o }
  { #1 -#2- }

\ExplSyntaxOff

\begin{document}
Hell\foobar{o} .
\end{document}

Notez qu'il y a un jeton d'espace entre le \foobar{o} et le point suivant. Dans TL 2018 (Debian unstable, xparse 2018-04-30, et aussi avec xparse.sty 2018-05-12 ajouté manuellement), le fichier PDF résultant après l'exécution de pdflatex contient Hello—NoValue—. (il n'y a pas d'espace avant le période). Dans TL 2016 cependant (Debian stretch, alias "stable"), la sortie est ce à quoi je m'attendais, c'est-à-dire Hello—NoValue— . (un espace avant le point).

Merci!

bug expl3 xparse

Tous les 6 commentaires

Nous le savons et des travaux sont en cours.

Un changement délibéré a été apporté à la façon dont nous traitons les arguments facultatifs de fin : cela revient à la nécessité de désactiver le saut d'espace dans certains cas. Cependant, lorsque des commandes avec des arguments facultatifs de fin sont utilisées _dans le corps du document_, cela révèle un problème avec les fonctions expl3 peek : elles ne réinsèrent pas les espaces « ignorés » si aucune correspondance n'est trouvée. Nous trions actuellement une syntaxe appropriée pour étendre les fonctions peek pour gérer cela.

(Dans LaTeX2e, les seules commandes avec des arguments facultatifs de fin sont destinées au préambule, donc la question de savoir comment gérer ce scénario ne se pose pas.)

Je m'attendrais à ce que quelque chose de concret soit réglé lors de la réunion TUG2018 à la fin de la semaine prochaine.

Merci beaucoup pour votre réponse, c'est super de voir que le problème fait l'objet d'un examen aussi minutieux. :)

@blefloch examine et réfléchit aux problèmes de support de bas niveau ici.

Je n'ai pas résolu les problèmes de bas niveau de peek mais je suis en train de commettre un correctif dans xparse .

Merci d'avoir corrigé ça !

Salut,

Je confirme qu'après avoir installé les derniers packages l3kernel et l3 de CTAN, le problème a disparu. Merci beaucoup!

Cette page vous a été utile?
0 / 5 - 0 notes