hyperref 和 \addcontentsline 在 expl3 块中的补丁

hyperref 和 \addcontentsline 在 expl3 块中的补丁

我想修改\addcontentsline命令来改为\thepage\thechapter--\thepage但是我发现当我使用 expl 块时,事情就出错了:

\documentclass{book}
\usepackage{etoolbox}
% \usepackage{hyperref}
\ExplSyntaxOn
\patchcmd{\addcontentsline}{\thepage}{\thechapter--\thepage}{\typeout{toc~succeed}}{\typeout{toc~fail}}
\ExplSyntaxOff
% \patchcmd{\addcontentsline}{\thepage}{\thechapter--\thepage}{\typeout{toc succeed}}{\typeout{toc fail}}
\begin{document}
  \tableofcontents
  \section{one}
  \chapter{text}
  \section{two}
\end{document}

如果我没有加载hyperref包,则可以在 expl 块内部和外部完成修补:终端类型tocsucceed

在此处输入图片描述

如果我加载hyperref包,则修补不能在 expl 块:终端类型内完成tocfail,但可以在 expl 块外完成。

为什么会发生这种情况?

相关内容