如何避免標題頁重新開始頁碼?

如何避免標題頁重新開始頁碼?

請參閱下面的 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}

相關內容