Por que os espaços são ignorados mesmo em argumentos textuais dentro de \ExplSyntaxOn... \ExplSyntaxOff?

Por que os espaços são ignorados mesmo em argumentos textuais dentro de \ExplSyntaxOn... \ExplSyntaxOff?

Eu vi soluções alternativas parater os espaços reconhecidos dentro\ExplSyntaxOn... \ExplSyntaxOff. Mas eu me pergunto por que os espaços não são reconhecidos mesmo para argumentos de macros (LaTeX3), sem dúvida esperando texto, por exemplo, ⟨text⟩e ⟨more text⟩em:

\msg_new:nnnn { ⟨module⟩ } { ⟨message⟩ } { ⟨text⟩ } { ⟨more text⟩ }

Responder1

o espaço recebe um código de gato ignorado para que não crie nenhum token, use ~para criar um token de espaço normal

\msg_new:nnnn { ⟨module⟩ } { ⟨message⟩ } { ⟨text⟩ } { ⟨more ~ text⟩ }

A alternativa seria fazer outra coisa, mas seja lá o que for, provavelmente teria os mesmos problemas, pois \verbenvolve alterações de código de gato e, portanto, funciona no nível superior, mas não dentro dos argumentos de outro comando, ou envolveria alguns pré-complicados. scan para remover ou não tokens de espaço, o que significaria que às vezes você precisa ocultar espaços em branco no %final da linha, o que a sintaxe L3 foi projetada para evitar.

Observe que neste contexto ~não é o caractere ativo que cria uma construção de espaço inquebrável, é simplesmente um caractere com o catcode de espaço que cria um token de espaço como se fosse de um espaço na configuração do documento.

informação relacionada