
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, xparse
crea 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 xparse
trata argumentos largos/cortos argumento por argumento en lugar de cambiarlos todos de una sola vez.