请参阅下面的 MWE。如何避免前言中的页码重新开始\titlepage
?我希望前言的页码为 V。
\documentclass{book}
\usepackage{lipsum}
\usepackage[plainpages=false,pdfpagelabels]{hyperref}
\hypersetup{pageanchor=false}
\usepackage{bookmark}
\title{Lipsum}
\author{lpdbw}
\begin{document}
\frontmatter
\pagenumbering{Roman}
\lipsum
\begin{titlepage}
\maketitle
\end{titlepage}
\chapter*{Preface}
\lipsum
\mainmatter
\chapter{Introduction}
\lipsum
\end{document}
PS:问题已编辑并重新表述。
答案1
由于book.cls
您无法在用户级别避免页码重新开始titlepage
:\setcounter{page}{1}
这是硬连线的。因此您必须手动重新定义titlepage
或重置页码计数器\begin{titlepage}
。
在 KOMA 类 scrbook 中,页码计数器不是由 重置,titlepage
而是由重置\maketitle
,并且\maketitle
有一个可选参数来覆盖页码计数器。因此,您可以执行以下操作:
\documentclass{scrbook}
\usepackage{lipsum}
\usepackage[plainpages=false,pdfpagelabels]{hyperref}
\title{Lipsum Here page: \thepage}
\author{lpdbw}
\begin{document}
\frontmatter
\pagenumbering{Roman}
abc
\begin{titlepage}
\maketitle[\value{page}]
\end{titlepage}
\mainmatter
\chapter{Introduction}
\lipsum
\end{document}
答案2
\setcounter{page}
一个可能的解决方案:删除titlepage 定义中的 行。
\documentclass{book}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{bookmark}
\makeatletter
\if@compatibility
\renewenvironment{titlepage}
{%
\cleardoublepage
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\thispagestyle{empty}%
%\setcounter{page}\z@
}%
{\if@restonecol\twocolumn \else \newpage \fi
}
\else
\renewenvironment{titlepage}
{%
\cleardoublepage
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\thispagestyle{empty}%
%\setcounter{page}\@ne
}%
{\if@restonecol\twocolumn \else \newpage \fi
\if@twoside\else
% \setcounter{page}\@ne
\fi
}
\fi
\makeatother
\title{Lipsum}
\author{lpdbw}
\begin{document}
\frontmatter
\pagenumbering{Roman}
\lipsum
\begin{titlepage}
\maketitle
\thispagestyle{empty}
\end{titlepage}
\chapter*{Preface}
\mainmatter
\chapter{Introduction}
\lipsum
\end{document}
或者,也可以不用titlepage
:
\documentclass[notitlepage]{book}
\usepackage{lipsum}
\usepackage{emptypage}
\usepackage{hyperref}
\usepackage{bookmark}
\title{Lipsum}
\author{lpdbw}
\begin{document}
\frontmatter
\pagenumbering{Roman}
\lipsum
\cleardoublepage
\maketitle
\thispagestyle{empty}
\cleardoublepage
\chapter*{Preface}
\mainmatter
\chapter{Introduction}
\lipsum
\end{document}
答案3
环境titlepage
在 处重新启动页码计数器1
。因此,您有两页页码为 的页面I
,即第一页和第一个标题页。
\pagenumbering{Alph}
可以工作,但前一页尚未完成,因此前一页也将是A
。通过明确开始一个新页面可以解决这个问题:
\clearpage
\pagenumbering{Alph}
禁用页面锚点的方法也有效,可以仅对某些页面禁用页面锚点,例如:
\hypersetup{pageanchor=false}
\frontmatter
....
\begin{titlepage}...\end{titlepage}
\hypersetup{pageanchor=true}
答案4
另一种选择,无需重新定义titlepage
(基于评论):
手动设置页码计数器。我们将页码计数器存储在另一个计数器中,因此它可以动态工作,并且我们不需要对页码进行硬编码。
\newcounter{titlepagenumber}
\setcounter{titlepagenumber}{\value{page}}
\begin{titlepage}
\setcounter{page}{\thetitlepagenumber}
% Test if it works:
\thepage
\end{titlepage}