為什麼即使在 \ExplSyntaxOn... \ExplSyntaxOff 中的文字參數中也會忽略空格?

為什麼即使在 \ExplSyntaxOn... \ExplSyntaxOff 中的文字參數中也會忽略空格?

我已經看到了解決方法使內部空間得到認可\ExplSyntaxOn... \ExplSyntaxOff。但我想知道為什麼即使對於(LaTeX3)宏參數無疑需要文字也無法識別空格,例如⟨text⟩⟨more text⟩在:

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

答案1

空間被賦予了忽略的catcode,因此它根本不產生令牌,用於~產生普通的空間令牌

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

另一種選擇是做其他事情,但無論那是什麼,它都可能會遇到相同的問題,因為\verb它涉及catcode更改,因此在頂層工作,但不在另一個命令的參數內,或者它會涉及一些複雜的預編譯掃描以刪除或不刪除空格標記,這意味著有時您需要隱藏%行尾的空格,L3 語法旨在避免這種情況。

請注意,在此上下文中,~不是創建不可破壞的空格構造的活動字符,它只是帶有空格catcode的字符,該字符創建空格標記,就像來自文檔設置中的空格一樣。

相關內容