¿Por qué se ignoran los espacios incluso en argumentos textuales dentro de \ExplSyntaxOn... \ExplSyntaxOff?

¿Por qué se ignoran los espacios incluso en argumentos textuales dentro de \ExplSyntaxOn... \ExplSyntaxOff?

He visto soluciones paratener los espacios reconocidos dentro\ExplSyntaxOn... \ExplSyntaxOff. Pero me pregunto por qué los espacios no se reconocen incluso para los argumentos de macros (LaTeX3) que sin duda esperan texto, por ejemplo, ⟨text⟩y ⟨more text⟩en:

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

Respuesta1

Al espacio se le asigna un código cat de ignorar, por lo que no constituye un token en absoluto; utilícelo ~para crear un token de espacio normal.

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

La alternativa sería hacer otra cosa, pero sea lo que fuere, probablemente tendría los mismos problemas porque \verbimplica cambios de código cat y, por lo tanto, funciona en el nivel superior pero no dentro de los argumentos de otro comando, o implicaría algunas tareas previas complicadas. escanear para eliminar o no tokens de espacio, lo que significaría que a veces es necesario ocultar espacios en blanco al %final de la línea, lo cual la sintaxis L3 está diseñada para evitar.

Tenga en cuenta que en este contexto ~no es el carácter activo el que crea una construcción de espacio irrompible, es simplemente un carácter con el código cat de espacio que crea un token de espacio como si fuera un espacio en la configuración del documento.

información relacionada