考虑以下示例。代码试图在 之后附加一些内容\mytest
。奇怪的是,当有一个额外的组时, 不起作用\hook_gput_code:nnn
。没有错误消息,只是编译过程永远不会停止。为什么会发生这种情况?应该怎么做才能使钩子起作用?
\documentclass{article}
% \def\mytest{\normalfont\bfseries Text} % works
\def\mytest{{\normalfont\bfseries Text}} % does not work
\ExplSyntaxOn
\hook_gput_code:nnn { cmd/mytest/after } { mymodule }
{
Some code
}
\ExplSyntaxOff
\begin{document}
\mytest
\end{document}
答案1
这是由检测命令类型(命令定义方式;此信息用于确定如何添加钩子cmd
)的内部函数中的错误引起的。该错误会导致代码过早扩展,这可能会造成麻烦,具体取决于代码的定义方式。此问题已在 2022-06-01 版本中修复。
以下是可能对此感兴趣的人所遵循的相关拉取请求:https://github.com/latex3/latex2e/pull/796