随着时间的推移我已经看到了csname
但我从来没有必须学到现在为止。
但在阅读了@egreg的(精彩!)回答后\csname 和 \endcsname 到底起什么作用?,我不太确定这是否是好的编码。
这是一个表现出奇怪行为的测试:
\csname endcsname
\csname endcsname \endcsname
\csname backslash endcsname\endcsname
前两个按预期工作。即它们生成了错误,但最后一个没有错误。我很想知道我错过了什么!?
(当然,也有优点:您可以重复使用代码,并且可以调整空间等等)
答案1
\csname endcsname
\csname endcsname \endcsname
\csname backslash endcsname\endcsname
\endcsname
1如果在后续标记之前有非字符标记(扩展后),则会出现缺失错误\endscsname
endcsname<space>
2 将定义要执行的命令\relax
然后执行它,这是通过 访问的任何未定义命令的行为\csname
。
3 同样定义backslash<space>endcsname
为\relax
标题中的实际问题(假设您的意思是“\csname
不是cscode
”)可能是“否”。也就是说,它是一个非常专业的命令,在某些内部宏定义上下文中很有用,但不应在文档中使用。