10 `\RemoveFromHook` 不起作用?

发布于 2024-12-31 17:02:26

以一个疑似脑子转不过弯的问题作为今年最后一个困惑...

配置

Win11; TeXLive2024; WinEdt11; PDFLaTeX.

问题背景

在文档中使用了两个 abstract 环境,其中前者的文本加粗,后者则不做任何处理.

问题描述

先在第一个 abstract 环境之前加钩子 BoldAbstract

\AddToHook{env/abstract/before}[BoldAbstract]{\bfseries}

然后在第二个 abstract 环境之前移除该钩子:

\RemoveFromHook{env/abstract/before}[BoldAbstract]

然而,\RemoveFromHook 貌似没起作用、后面内容全都bold了:
b489f11be68a847f84a279771b153b25.png

尝试过的操作

为什么不直接在某个环境里头单独加 \bfseries

因为这是项目中抠出来的最小问题场景,原操作比 \bfseries 更复杂但也出现了相同问题.

为什么不用 etoolbox 环境?

同上,原操作的 hook 除了 env 还涉及到了 shipout,但都出现了相同问题.

特别的,在 lthooks-doc 的第 6 页存在类似案例,但我运行后也是疑似 \RemoveFromHook 未起作用.

MWE


\documentclass{article}

\begin{document}

Hello \LaTeX

\AddToHook{env/abstract/before}[boldabstract]{\bfseries}
\begin{abstract}
text text text text text
\end{abstract}

\RemoveFromHook{env/abstract/before}[boldabstract]
\begin{abstract}
text text text text text
\end{abstract}

Hello \LaTeX

\end{document} 

查看更多

关注者
0
被浏览
164
雾月
雾月 2024-12-31
这家伙很懒,什么也没写!

不是没起作用,而是 env/../beforeenv/../after 钩子的内容是在当前组中执行的,这里的 \bfseries 对整篇文档都生效,而不是只对 quote 环境生效。环境开始时会添加 \begingroupbefore 钩子在这个 \begingroup 之前执行,begin 钩子在这个 \begingroup 之后执行。因此 env/../beginenv/../end 钩子才是和环境的内容在同一个组。这些在文档 lthooks-doc 的 3.1.1 节有描述。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览