在每章开始/结束时运行一个不使用钩子的命令

在每章开始/结束时运行一个不使用钩子的命令

我正在使用该glossaries包创建一个首字母缩略词列表,并且我想重置文档中每个章节开头的所有条目的第一个关键标志。

我尝试过网上找到的解决方案,例如

\AddToHook{cmd/chapter/after}{\glsresetall}

\setuphead[after=chapter][aftersection=\glsresetall]

但是,我仅限于使用带有 XeLaTeX 和特定 cls 文件的 2019 TeX Live 版本,因此这些命令未定义。

我也尝试使用重新定义章节命令

\let\oldchap\chapter\renewcommand*{\chapter}[1]{\oldchap{#1}\glsresetall}

但是,这会导致 cls 文件出现错误,特别是在摘要部分。我设置了一个示例Overleaf 项目,其中还包含 cls 文件,以演示此问题。

有没有其他方法可以在每章开始/结束时调用某个命令?特定于glossaries包的替代解决方案(即重置每章的第一个键标志)也是可以接受的。

编辑:

根据评论,这是一个 MWE。它使用book文档类,因为我无法在此处上传自定义 cls 文件。

\documentclass{book}
\usepackage[acronyms,nomain]{glossaries}
\usepackage{regexpatch}

\newacronym{ABC}{ABC}{Alpha Bravo Charlie}
\newacronym{NASA}{NASA}{National Aeronautics and Space Administration}
\newacronym{NSA}{NSA}{National Security Agency}
\newacronym{NATO}{NATO}{North Atlantic Treaty Organization}
\newacronym{EU}{EU}{European Union}
\newacronym{ECDC}{ECDC}{European Centre for Disease Prevention and Control}
\newacronym{EWRS}{EWRS}{Early Warning and Response System}
\newacronym{USA}{USA}{United States of America}


% \let\oldchap\chapter\renewcommand*{\chapter}[1]{\oldchap{#1}\glsresetall}  % Works with \documentclass{book} but causes errors with custom cls file
% \setuphead[after=chapter][aftersection=\glsresetall]  % Requires ConTeXt
% \AddToHook{cmd/chapter/after}{\glsresetall}  % Requires newer TeX Live version (and apparently wouldn't work even then?)
\xapptocmd{\chapter}{\glsresetall}{}{}

\begin{document}

\chapter{A}

\gls{ABC}

\gls{NASA}

\gls{NSA}

\gls{NATO}

\chapter{B}

\gls{ABC}

\gls{ABC}

\gls{NSA}

\gls{EU}

\gls{ECDC}

\gls{EU}

\end{document}

这个修补似乎仍然不起作用,因为它没有重置 B 章的第一次用途。同样的事情也发生了xpretocmd

相关内容