expl3 par e sequências

expl3 par e sequências

Depois de explorar o expl3, atualizei parte do meu código para ele e me deparei com um problema interessante que não estava prevendo.

Recebo um erro estranho que acho que é ao tentar armazenar vários parágrafos em uma sequência. Não encontrei nada no manual da interface3, alguém sabe como contornar isso?

Coloquei meu método antigo e meu novo método de trilha para armazenamento de variáveis ​​abaixo para quem estiver interessado.

Aqui está meu código antigo.

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

E aqui está meu novo código.

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

Chamar a função funciona da mesma maneira para ambos

\supernote{Here is my example

and here is the other half}

Aqui está o meu erro para o novo método, caso ajude.

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

Responder1

O problema não está na camada de código (que é 'longa'), mas na configuração da sua interface. Como o caso mais comum para comandos de documento é que eles devem receber apenas pequenos trechos de texto, xparsecria comandos 'curtos' como padrão. Para tornar um argumento 'longo' você precisa marcá-lo como tal com um+

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

Observe que xparseele lida com argumentos longos/curtos argumento por argumento, em vez de alternar todos eles de uma só vez.

informação relacionada