我们真的应该使用 csname 吗?

我们真的应该使用 csname 吗?

随着时间的推移我已经看到了csname但我从来没有必须学到现在为止。

但在阅读了@egreg的(精彩!)回答后\csname 和 \endcsname 到底起什么作用?,我不太确定这是否是好的编码。

这是一个表现出奇怪行为的测试:

  1. \csname endcsname
  2. \csname endcsname \endcsname
  3. \csname backslash endcsname\endcsname

前两个按预期工作。即它们生成了错误,但最后一个没有错误。我很想知道我错过了什么!?

(当然,也有优点:您可以重复使用代码,并且可以调整空间等等)

答案1

  1. \csname endcsname
  2. \csname endcsname \endcsname
  3. \csname backslash endcsname\endcsname

\endcsname1如果在后续标记之前有非字符标记(扩展后),则会出现缺失错误\endscsname

endcsname<space>2 将定义要执行的命令\relax然后执行它,这是通过 访问的任何未定义命令的行为\csname

3 同样定义backslash<space>endcsname\relax

标题中的实际问题(假设您的意思是“\csname不是cscode”)可能是“否”。也就是说,它是一个非常专业的命令,在某些内部宏定义上下文中很有用,但不应在文档中使用。

相关内容