Latex3: xparse: come el token de espacio mientras busca un argumento opcional no proporcionado, final

Creado en 8 jul. 2018  ·  6Comentarios  ·  Fuente: latex3/latex3

Hola,

Con xparse más o menos reciente, una definición de función como
\NewDocumentCommand \foobar { m o } { ... }
da como resultado un comportamiento extraño cuando se llama a \foobar sin el argumento opcional. El comportamiento extraño es que la siguiente ficha de espacio (al menos) se come. Esto no sucedió en TL 2016 (Debian stretch), pero sucede en TL 2018 (Debian inestable, xparse 2018-04-30; también agregué manualmente xparse.sty 2018-05-12 para pruebas, mismo problema). Aquí hay 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}

Tenga en cuenta que hay un token de espacio entre \foobar{o} y el siguiente período. En TL 2018 (Debian inestable, xparse 2018-04-30, y también con xparse.sty 2018-05-12 agregado manualmente), el archivo PDF resultante después de ejecutar pdflatex contiene Hello—NoValue—. (no hay espacio antes de la período). Sin embargo, en TL 2016 (Debian stretch, también conocido como "estable"), la salida es la que esperaba, es decir Hello—NoValue— . (un espacio antes del período).

¡Gracias!

bug expl3 xparse

Todos 6 comentarios

Sabemos de esto y hay trabajo en curso.

Se realizó un cambio deliberado en relación con la forma en que tratamos los argumentos opcionales finales: esto se reduce a la necesidad de permitir que el salto de espacio se desactive en algunos casos. Sin embargo, cuando se usan comandos con argumentos opcionales finales _ en el cuerpo del documento_, esto revela un problema con las funciones expl3 peek : no reinsertan espacios 'omitidos' si no se encuentran coincidencias. Actualmente estamos clasificando una sintaxis apropiada para extender las funciones peek para lidiar con esto.

(En LaTeX2e, los únicos comandos con argumentos opcionales finales están pensados ​​para el preámbulo, por lo que no surge la cuestión de cómo manejar este escenario).

Espero que se solucione algo concreto durante la reunión TUG2018 a fines de la próxima semana.

Muchas gracias por su respuesta, es bueno ver que el problema está bajo un escrutinio tan estricto. :)

@blefloch está revisando y pensando en los problemas de soporte de bajo nivel aquí.

No he resuelto los problemas de peek bajo nivel, pero estoy comprometiendo una solución en xparse .

¡Gracias por arreglar esto!

Hola,

Confirmo que después de instalar los últimos paquetes l3kernel y l3 de CTAN, el problema desapareció. ¡Muchas gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

dbitouze picture dbitouze  ·  3Comentarios

dbitouze picture dbitouze  ·  8Comentarios

josephwright picture josephwright  ·  31Comentarios

dbitouze picture dbitouze  ·  4Comentarios

dbitouze picture dbitouze  ·  14Comentarios