\edef、\xdef、\protected@edef 的长版本

\edef、\xdef、\protected@edef 的长版本

的长版本是什么\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}

为什么需要这个并不清楚,但它就在这里。

相关内容