\AddToHook 的 expl3 等效项是什么?

\AddToHook 的 expl3 等效项是什么?

在编写包时,当遇到类似\selectlanguage在序言中不起作用的命令时,我学会将它们放在里面\AddToHook{begindocument}{...},这样如果在序言中调用它,它将自动延迟到文档的开头。

对于使用 expl3 编写的包,我一直(错误地)使用\hook_gput_next_code:nn作为其等效形式。然而,我刚刚意识到它们并不相同。例如,使用以下代码,text in document 2不会显示。

\documentclass{article}

\ExplSyntaxOn

\AddToHook { begindocument } { text in preamble 1 \\ }
\hook_gput_next_code:nn { begindocument } { text in preamble 2 \\ }

\begin{document}

\AddToHook { begindocument } { text in document 1 }\\
\hook_gput_next_code:nn { begindocument } { text in document 2 }

\end{document}

仔细研究texdoc lthooks,似乎\hook_gput_next_code:nn是唯一一个与:nn接近的说明符\AddToHook。 的实际 expl3-equivalent 是什么\AddToHook

答案1

你想要\hook_gput_code:nnn。在这个expl3层面上,没有“标签猜测”:你指定使用什么标签。这与设计级别形成对比\AddToHook,设计级别将假定它可以使用文件的名称,除非您添加可选参数。

相关内容