![在 \protected@write 的定义中使用 \immediate 有什么副作用吗?](https://linux22.com/image/258202/%E5%9C%A8%20%5Cprotected%40write%20%E7%9A%84%E5%AE%9A%E4%B9%89%E4%B8%AD%E4%BD%BF%E7%94%A8%20%5Cimmediate%20%E6%9C%89%E4%BB%80%E4%B9%88%E5%89%AF%E4%BD%9C%E7%94%A8%E5%90%97%EF%BC%9F.png)
在 中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
。如果您需要立即书写,请使用新的宏,并且不要将其用于页码和仅在发货时可靠正确的内容。