答案1
您可以使用所谓的绝对目录中内容的页码。下面的代码更新\addcontentsline
以插入该页码(abspage
由zref
) 与每个 ToC 条目。
\documentclass[oneside]{book}
\usepackage[abspage]{zref}
\usepackage{etoolbox}
\patchcmd{\addcontentsline}% <cmd>
{\thepage}% <search>
{\number\numexpr\value{abspage}+1}% <replace>
{}{}% <success><failure>
\usepackage{lipsum}
\begin{document}
\tableofcontents
\section{AAA}
\lipsum[1-10]
\newpage
\setcounter{page}{1}
\section{BBB}
\lipsum[3-10]
\newpage
\setcounter{page}{1}
\section{CCC}
\lipsum[3-10]
\end{document}
请注意,在存储绝对页码时使用表达式。以下是对该计算的引用,来自zref
文档:
由于技术和历史原因,计数器本身以零为基础:如果您直接在第一页使用它,例如,
\arabic{abspage}
您将得到 0 作为值。
另外:如果你正在执行类似任务,最好使用定制的宏将它们合并为一个。例如,
\let\oldsection\section
\renewcommand{\section}{%
\clearpage
\setcounter{page}{1}%
\oldsection
}
可以让您简化代码,只需\section{<title>}
插入新页面、重置页面计数器,然后照常使用常规的分段宏即可。