在 \protected@write 的定义中使用 \immediate 有什么副作用吗?

在 \protected@write 的定义中使用 \immediate 有什么副作用吗?

在 中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
}

在 的定义中使用\immediatebefore是否有任何副作用?\write\protected@write

答案1

如果在 中更改此设置,则\protected@write副作用很严重。例如,\protected@write在 中使用\label。通常无法立即知道页码。\write没有的延迟\immediate会在页面发货时写入条目,此时页码是已知的。

因此不要换 \protected@write。如果您需要立即书写,请使用新的宏,并且不要将其用于页码和仅在发货时可靠正确的内容。

相关内容