expl3 par y secuencias

expl3 par y secuencias

Después de explorar expl3, actualicé parte de mi código y me encontré con un problema interesante que no estaba prediciendo.

Recibo un error extraño que creo que se debe a que intento almacenar varios párrafos en una secuencia. No encontré nada en el manual de interface3, ¿alguien sabe alguna forma de solucionar este problema?

A continuación pongo mi método antiguo y mi nuevo método de seguimiento para almacenamiento de variables para aquellos que estén interesados.

Aquí está mi antiguo código.

\newcommand{\@supernote}{}
\newcommand{\supernote}[1]{\renewcommand\@supernote{#1}}

Y aquí está mi nuevo código.

\seq_new:N \itemsupernote
\NewDocumentCommand{\supernote}{sm} {
    \seq_put_right:Nn \itemsupernote {#2}
}

Llamar a la función funciona de la misma manera para ambos

\supernote{Here is my example

and here is the other half}

Aquí está mi error para el nuevo método en caso de que ayude.

runaway argument? {here is my example Paragraph ended before \supernote was omplete.
<to be read again> \par l.109 

Respuesta1

El problema no está en la capa de código (que es toda "larga"), sino en la configuración de su interfaz. Como el caso más común para los comandos de documentos es que solo deben tomar fragmentos cortos de texto, xparsecrea comandos "cortos" como estándar. Para hacer que un argumento sea "largo", es necesario marcarlo como tal con un+

\NewDocumentCommand \supernote { s +m }
  {
    \seq_put_right:Nn \itemsupernote {#2}
  }

Tenga en cuenta que xparsetrata argumentos largos/cortos argumento por argumento en lugar de cambiarlos todos de una sola vez.

información relacionada