Ich habe Workarounds gesehen fürdie Räume darin erkannt haben\ExplSyntaxOn... \ExplSyntaxOff
. Aber ich frage mich, warum Leerzeichen selbst bei (LaTeX3-)Makroargumenten, die zweifellos Text erwarten, nicht erkannt werden, z. B. ⟨text⟩
und ⟨more text⟩
in:
\msg_new:nnnn { ⟨module⟩ } { ⟨message⟩ } { ⟨text⟩ } { ⟨more text⟩ }
Antwort1
Leerzeichen wird mit dem Catcode „Ignorieren“ versehen, sodass überhaupt kein Token erstellt wird. Verwenden Sie es, ~
um ein normales Leerzeichen-Token zu erstellen .
\msg_new:nnnn { ⟨module⟩ } { ⟨message⟩ } { ⟨text⟩ } { ⟨more ~ text⟩ }
Die Alternative wäre, etwas anderes zu tun, aber was auch immer das wäre, es hätte wahrscheinlich dieselben Probleme, \verb
da es Catcode-Änderungen mit sich bringt und daher auf der obersten Ebene funktioniert, aber nicht innerhalb der Argumente eines anderen Befehls, oder es würde einen komplizierten Vorscan erfordern, um Leerzeichen-Token zu entfernen oder nicht, was bedeuten würde, dass Sie manchmal Leerzeichen am %
Zeilenende verbergen müssen, was durch die L3-Syntax vermieden werden soll.
Beachten Sie, dass in diesem Kontext ~
nicht das aktive Zeichen eine nicht umbrechbare Leerzeichenkonstruktion erstellt, sondern einfach ein Zeichen mit dem Leerzeichen-Catcode, das ein Leerzeichen-Token erstellt, als ob es sich um ein Leerzeichen im Dokument-Setup handelt.