扫描标记和平衡文本,花括号有哪些选项?

扫描标记和平衡文本,花括号有哪些选项?

\scantokens以平衡文本作为参数,并且据我所知,括号必须是明确的。我对下面的代码感到困惑,第一行没有问题,而第二行却导致“文件已结束...”错误。为什么?

\toks0=\scantokens{{abc}}            
\toks0=\expandafter{\scantokens{abc}}

我相信\scantokens是可扩展的,因为我在 中使用过它\edef。在这种情况下,它通常必须在前面加上\endlinechar-1 \everyeof{\noexpand}

我猜想 的使用\expandafter会产生某种文件写入/读取状态,需要类似地使用\endlinechar\noexpand。但似乎上述两行都会导致相同的错误。非常感谢您的帮助。

答案1

在第一种形式中\scantokens,首先完成的{abc}是平衡文本,但是第二种形式是{交错的,并且在扫描标记分配的平衡文本时会看到隐式的文件结束标记。

luatex 提供的这个功能\scantokens几乎完全没用,\scantextokens它是相同的,但没有 eof 错误。

\toks0=\scantextokens{{abc}}            
\toks0=\expandafter{\scantextokens{abc}}

相关内容