我想为除标题页之外的所有页面添加罗马页码,直到目录末尾。因此我做了以下操作,除了摘要没有任何页码外,该操作有效。
\begin{document}
\pagenumbering{roman}
\maketitle
\include{abstract}
\tableofcontents
\newpage
\pagenumbering{arabic}
该abstract.tex
文件包含\begin{abstract}
和\end{abstract}
。
所以我尝试按照这个问题的解决方案这里这似乎在问同样的问题。
在我的摘要 tex 文件中我输入了:
\begin{abstract}
\thispagestyle{plain}
My abstract...
\end{abstract}
这确实会将页面“i”添加到摘要页面。但是,问题在于罗马数字部分中的后续页面(例如目录)也会再次获得页面“i”(即在更改为阿拉伯数字之前)。
所以本质上我得到的是:
摘要 - 第 i 页,目录 - 第 i 页
虽然我想要
摘要 - 第 i 页,目录 - 第 ii 页
为什么计数器重置为 1(在更改为阿拉伯数字之前)而不是从摘要中的位置继续?
答案1
\pagenumbering
- 更改应在之后进行\clearpage
(除非这是开始后立即进行的第一次更改)
\pagenumbering
总是将页面计数器重置为1
,参见定义
\def\pagenumbering#1{%
\global\c@page \@ne \gdef\thepage{\csname @#1\endcsname
\c@page}}
\global\c@page \@ne
基本上是Plain TeX
为了\setcounter{page}{1}
现在真正的罪魁祸首report
是它设置了titlepage
选项,即在内部abstract
使用titlepage
环境,该环境被定义为在最后重置页码。一些代码来自latex.ltx
\if@titlepage
\newenvironment{abstract}{%
\titlepage
\null\vfil
\@beginparpenalty\@lowpenalty
\begin{center}%
\bfseries \abstractname
\@endparpenalty\@M
\end{center}}%
{\par\vfil\null\endtitlepage}
\else
\newenvironment{abstract}{%
\if@twocolumn
\section*{\abstractname}%
\else
\small
\begin{center}%
{\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
\end{center}%
\quotation
\fi}
{\if@twocolumn\else\endquotation\fi}
\fi
\if@compatibility
\newenvironment{titlepage}
{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\thispagestyle{empty}%
\setcounter{page}\z@
}%
{\if@restonecol\twocolumn \else \newpage \fi
}
\else
\newenvironment{titlepage}
{%
\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
这是真正的代码
titlepage
如果重新定义为满足 OP 的特殊需求,通过设置\@abstractmode
为 true 并设置页面样式并相应地调整页面计数器,但在环境结束时不要重置页面计数器,则可以解决整个问题titlepage
。
\documentclass{report}
\usepackage{etoolbox}
\makeatletter
\newif\if@abstractmode
\renewenvironment{titlepage}
{
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\if@abstractmode
\thispagestyle{plain}%
\stepcounter{page}%
\else
\thispagestyle{empty}%
\setcounter{page}\@ne%
\fi
}%
{\if@restonecol\twocolumn \else \newpage \fi
\if@twoside\else
\if@abstractmode
\else
\setcounter{page}\@ne%
\fi
\fi
}
\AtBeginEnvironment{abstract}{%
\@abstractmodetrue%
}
\makeatother
\usepackage{blindtext}
\title{Theory of Brontosaurs}
\author{Ann Elk}
\begin{document}
\pagenumbering{roman}
\maketitle
\clearpage
\begin{abstract}
\blindtext[2]
\end{abstract}
\tableofcontents
\cleardoublepage
\pagenumbering{arabic}
\section{First}
\blindtext[10]
\end{document}