的长版本是什么\edef
,, ... 当我们在它们前面添加时它们会起作用吗\xdef
,例如:\protected@edef
\long
\def
\long\def\macom{...}
\long\edef\macom{...}
\long\gdef\macom{...}
\long\xdef\macom{...}
\long\protected@edef\macom{...}
答案1
\long
\def
可以放在、\gdef
和前面\edef
,\xdef
因此前四个结构有效。然而 的扩展\protected@edef
是
\let\@@protect\protect
\let\protect\@unexpandable@protect
\afterassignment\restore@protect
\edef
因此\long
前面的a\protected@edef
会出现错误。
\def\protected@longedef{%
\let\@@protect\protect
\let\protect\@unexpandable@protect
\afterassignment\restore@protect
\long\edef}
为什么需要这个并不清楚,但它就在这里。