請參閱下面的 MWE。如何避免 frontmatter 中的頁碼重新開始\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}
一個可能的解決方案:刪除標題頁定義中的行。
\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}