我想修改\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 块外完成。
为什么会发生这种情况?