我想显示前言的最后一页的页码。这是代码:
\documentclass{book}
\usepackage{blindtext}
\usepackage{lastpage}
\begin{document}
\frontmatter
\begin{tabular}{ll}
Last front matter page: &\protect\pageref{lastoffront}
\end{tabular}
\newpage
\tableofcontents
\label{lastoffront}
\clearpage
\mainmatter
\blinddocument
\end{document}
但是,结果显示为“iii”。在我的文档中,前言的最后一页页码是“iv”。如何更正?
答案1
您无法使用\label
和来可靠地执行此操作,但您可以在发出刷新仍待处理内容的后\pageref
检查 处的页码。此时,您可以查看页码是偶数还是奇数。如果是奇数,则标准不会生成空白页;我们只需通过减一来计算最后一页的页码。如果页码是偶数,则这是前言中的最后一页,随后将生成空白页。\mainmatter
\clearpage
\cleardoublepage
\cleardoublepage
\documentclass{book}
\usepackage{blindtext}
\makeatletter
\renewcommand\mainmatter{%
%\cleardoublepage
% do a different \cleardoublepage
\clearpage
\ifodd\value{page}\relax
% last page of the frontmatter is even
\immediate\write\@auxout{%
\string\gdef\string\lastpageoffront{\romannumeral\numexpr\value{page}-1\relax}%
}%
\else
\immediate\write\@auxout{%
\string\gdef\string\lastpageoffront{\romannumeral\value{page}}%
}%
\fi
\cleardoublepage
\@mainmattertrue
\pagenumbering{arabic}%
}
\providecommand{\lastpageoffront}{??}
\makeatother
\begin{document}
\frontmatter
Last front matter page: \lastpageoffront
\tableofcontents
\mainmatter
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\end{document}
有六个\blinddocument
命令,目录中的第二页也有文本。尽管只有一个命令,但你还是得到了“iv”。
我猜目的是为了在后记中重新使用罗马数字编号页码,是吗?