在 中latex.ltx
,\protected@write
定义为:
\long\def \protected@write#1#2#3{%
\begingroup
\let\thepage\relax
#2%
\let\protect\@unexpandable@protect
\edef\reserved@a{\write#1{#3}}%
\reserved@a
\endgroup
\if@nobreak\ifvmode\nobreak\fi\fi
}
在 的定义中使用\immediate
before是否有任何副作用?\write
\protected@write
答案1
如果在 中更改此设置,则\protected@write
副作用很严重。例如,\protected@write
在 中使用\label
。通常无法立即知道页码。\write
没有的延迟\immediate
会在页面发货时写入条目,此时页码是已知的。
因此不要换 \protected@write
。如果您需要立即书写,请使用新的宏,并且不要将其用于页码和仅在发货时可靠正确的内容。