我想使用标签的页码作为 的输入\setcounter{page}{label's page}
。我尝试使用zref
abspage
,但是,在我的文档中,在我开始实际页码之前,有几页未计数,因此abspage
偏移了 2 页。我也尝试使用newcommand
和 变量,但无法使其正常工作。另一个障碍似乎是罗马风格的页码使其难以转换(使用 etoolbox 的 得到 -1 \rmntonum
)。
在使用阿拉伯数字之前,如何使用放置在第一部分末尾的标签恢复罗马页码?解决方案应尽可能通用,即不减去硬编码偏移量。
\documentclass[10pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
this is my title
\thispagestyle{empty}
\newpage
some declarations
\thispagestyle{empty}
\newpage
\setcounter{page}{1}
\pagenumbering{Roman}
\tableofcontents
\newpage
\addcontentsline{toc}{chapter}{List of Figures}
\listoffigures
\label{end of intro}
\newpage
\pagenumbering{arabic}
\chapter{chapter one}
\lipsum[2-5]
\cite{kastenholz}
\chapter{chapter two}
\lipsum[2-4]
\clearpage
\pagenumbering{roman}
\setcounter{page}{3} % <-- set this value based on label 'end of intro', zref abspage gives 4
\addcontentsline{toc}{chapter}{References}
\printbibliography
\end{document}
答案1
你必须使用 吗\label
?你也可以使用\newcount
并使用它的值来设置你的计数器:
\documentclass[10pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\newcount\pagebak
\begin{document}
this is my title
\thispagestyle{empty}
\newpage
some declarations
\thispagestyle{empty}
\newpage
\setcounter{page}{1}
\pagenumbering{Roman}
\tableofcontents
\newpage
\addcontentsline{toc}{chapter}{List of Figures}
\listoffigures
\pagebak=\arabic{page}
\label{end of intro}
\newpage
\pagenumbering{arabic}
\chapter{chapter one}
\lipsum[2-5]
\cite{kastenholz}
\chapter{chapter two}
\lipsum[2-4]
\clearpage
\pagenumbering{roman}
%\setcounter{page}{3} % <-- set this value based on label 'end of intro', zref abspage gives 4
\setcounter{page}{\numexpr\pagebak+1} % <-- set this value based on label 'end of intro', zref abspage gives 4
\addcontentsline{toc}{chapter}{References}
\printbibliography
\end{document}
答案2
这里有一种方法zref
:
\documentclass[10pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[nottoc]{tocbibind} % no need for \addcontentsline
\usepackage[user,abspage]{zref}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage{lipsum}
\makeatletter
\newcommand{\startfront}{\clearpage\pagenumbering{Roman}\zlabel{startfront}}
\newcommand{\startmain}{\clearpage\pagenumbering{arabic}\zlabel{startmain}}
\newcommand\startback{%
\clearpage
\pagenumbering{Roman}%
\setcounter{page}{%
\numexpr
\zref@extractdefault{startmain}{abspage}{0}-
\zref@extractdefault{startfront}{abspage}{0}+1
\relax
}%
}
\makeatother
\begin{document}
\thispagestyle{empty}
this is my title
\clearpage
\thispagestyle{empty}
some declarations
\clearpage
\startfront
\tableofcontents
\listoffigures
\startmain
\chapter{chapter one}
\lipsum[2-5]
\cite{kastenholz}
\chapter{chapter two}
\lipsum[2-4]
\startback
\printbibliography[heading=bibintoc]
\end{document}
详细信息隐藏在\startfront
、\startmain
和中\startback
。
请注意,您不需要任何\addcontentsline
说明。