如何将页码从偶数改为奇数,同时保持页面保持背面不变?

如何将页码从偶数改为奇数,同时保持页面保持背面不变?

我正在写一份双面文档,并带有装订边距。出于某些原因,我需要在某个时候更改页码,因此以前是偶数页的页面现在变成了奇数页。这使得软件包geometry将此页排列为正面(右侧边距)页面而不是反面(左侧边距)页面 - 而我需要继续使用正面和反面对,即我需要将页面设置为反面。

MWE 如下(展示框表明边距是相同的,而不是从正面到背面发生变化)。

\documentclass{article}
\usepackage[showframe,twoside]{geometry}
\begin{document}
This is the first page. It should be a right-of-binding page (recto).
\clearpage
\setcounter{page}{3}
This is the second page; it should be a left-of-binding page (verso) - but it isn't.
\clearpage
This is the third page; it should be a right-of-binding page (recto) - but it isn't.
\end{document} 

背景:我正在写我的博士论文,论文大部分是英文,但有一部分是希伯来语,因此必须以不同的方式编号。此外,希伯来语是一种从右到左的语言,因此页面从装订的另一端进入,即希伯来语封面是装订左侧的页面,当从左到右翻阅装订的小册子时,它会进入“最后”。我先从第一页到最后一页输出希伯来语页,然后输出最后一页英文页,然后取出整堆希伯来语页,将它们全部翻转并重新放置,以获得我所描述的效果。希伯来语部分编号从装订左侧页面的 1 开始(顺便说一下,不是希伯来语封面页)。

笔记:

  1. 请不要建议我不这样做,或者将页码改为偶数而不是奇数,等等。这是合理的需求。其他人可能想要输出双面文档,其装订边距为 1、1、2、2、3、3、4、4。
  2. 一种解决方法是“手动”翻转页边距,正如 Schweinebacke 所建议的那样。但这并不令人满意,因为还存在页边距注释的问题,可能还有其他 LaTeX 代码,这些代码可能取决于页面是正面还是反面,而不是页边距大小。
  3. 解决方案不应假设我背景中的任何细节。具体来说,不要假设重新编号的页面上的内容是希伯来语,或从右到左等。

答案1

奇数页应该始终是正确的页面!

因此,您应该始终\cleardoublepage在更改页码之前使用,因为更改双面打印左侧的页码是没有意义的:

\documentclass[twoside]{article}% It's better to tell already the class to use twoside!
\usepackage[showframe]{geometry}
\begin{document}
This is the first page; it should be a right page (recto).
\cleardoublepage
\pagenumbering{arabic}
This is the third page; it should be a right page, because changing page numbering should always be done on right pages!
\end{document}

如果您只是想隐藏文章第一页的页码,请尝试:

\documentclass[twoside]{article}% It's better to tell already the class to use twoside!
\usepackage[showframe]{geometry}
\begin{document}
\title{Title}
\author{Me}
\maketitle\thispagestyle{empty}
\begin{abstract}A short abstract of the document.\end{abstract}
Some more text, e.g. a table of contents.
\clearpage
This is the second page; it should be a left page and numbered 2!
\end{document}

注意:您甚至可以在单侧文档\cleardoublepage之前使用\pagenumbering,因为在这种情况下它会产生相同的结果\clearpage

但是,如果您确实必须让奇数页在左边而偶数页在右边,那么您可以简单地切换边距(以及使用的边距\marginpar):

\documentclass[twoside]{article}% It's better to tell already the class to use twoside!
\usepackage[showframe]{geometry}
\makeatletter
\newcommand*{\flipmargins}{%
  \clearpage
  \setlength{\@tempdima}{\oddsidemargin}%
  \setlength{\oddsidemargin}{\evensidemargin}%
  \setlength{\evensidemargin}{\@tempdima}%
  \if@reversemargin
    \normalmarginpar
  \else
    \reversemarginpar
  \fi
}
\makeatother
\begin{document}
This is the first page; it should be a right page (recto).

\flipmargins
\pagenumbering{roman}
This is the second page; it should be a left page (verso).
\end{document}

使用页面样式,例如,headings您可能还需要更改页面样式,例如,打印外边距附近的数字。您可以使用以下任一方式执行此操作scrpage2或者花哨的.下面是使用的示例scrpage2

\documentclass[twoside]{article}% It's better to tell already the class to use twoside!
\usepackage[showframe]{geometry}
\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}

\makeatletter
\newcommand*{\flipmargins}{%
  \clearpage
  \setlength{\@tempdima}{\oddsidemargin}%
  \setlength{\oddsidemargin}{\evensidemargin}%
  \setlength{\evensidemargin}{\@tempdima}%
  \if@reversemargin
    \normalmarginpar
  \else
    \reversemarginpar
  \fi
  \ifdim \evensidemargin>\oddsidemargin
    \ihead{\headmark}%
    \ohead[\pagemark]{\pagemark}%
  \else
    \ihead[\pagemark]{\pagemark}%
    \ohead{\headmark}%
  \fi
}
\makeatother

\begin{document}
\section{Normal pages}
This is the first page; it should be a right page (recto).

\flipmargins
\pagenumbering{roman}
\section{Inverse margin pages}
This is the second page; it should be a left page (verso).
\end{document}

选择:

一个完全不同的替代方法是伪造页码,如下所示\thepage

\documentclass[twoside]{article}% It's better to tell already the class to use twoside!
\usepackage[showframe]{geometry}
\makeatletter
\newcommand{\@arabicplusone}[1]{\@arabic{\numexpr #1+1\relax}}
\newcommand{\@romanplusone}[1]{\@roman{\numexpr #1+1\relax}}
\newcommand{\@Romanplusone}[1]{\@Roman{\numexpr #1+1\relax}}
\newcommand{\@alphplusone}[1]{\@alph{\numexpr #1+1\relax}}
\newcommand{\@Alphplusone}[1]{\@Alph{\numexpr #1+1\relax}}
\makeatother

\newcommand*{\pagenumberingplusone}[1]{%
  \pagenumbering{#1plusone}\setcounter{page}{0}%
}

\begin{document}
This is the first page; it should be a right page (recto). See
page~\pageref{test}.

\clearpage\pagenumberingplusone{roman}
This\label{test} is the second page; it should be a left page (verso).
\end{document}

此建议的缺点是,如果包直接将页面计数器用于其他目的,而不是测试奇数或偶数,结果可能会出乎意料。此建议的优点是,计数器值为奇数的页面不仅会显示偶数页码,而且会被 LaTeX 和每个使用或进行测试page的类或包视为偶数=左页(反之亦然)。\c@page\value{page}

答案2

好吧,这是我自己对于“正确解决方案”的想法,尽管它并不是立即实用的。

反分离。

应该有两个不同的计数器,每个计数器在移动到新页面时都会自动递增:

  1. “物理”页面计数器
  2. “显示”(或“逻辑”)页面计数器

page目前,名为(即)的计数器\c@page用于两者。LaTeX 代码应该能够知道它在这个输出文件中位于哪个物理页面上,以及作者希望此页面具有哪个编号 - 而这些不必是同一件事。

我猜测这意味着 LaTeX 核心或至少是默认文档类的改变。

答案3

以下是根据 Schweinebake 的建议提出的解决方法,它允许显示的页码与“物理”页码之间存在任何偏移:

\documentclass[twoside]{article}
\usepackage[showframe]{geometry}

\makeatletter
%usage: 
%\displayedpagenumbering{numbering style}{number to display on current page}
\newcommand{\displayedpagenumbering}[2]{%
  \edef\@tempcntval{\@arabic{\value{page}}}
  \long\@namedef{@#1withoffset}##1{\csname @#1\endcsname{\numexpr ##1 - \@tempcntval + #2\relax}}%
  \pagenumbering{#1withoffset}%
  \setcounter{page}{\@tempcntval}%
}
\makeatother

\begin{document}
This is the first physical page. The displayed page number should be 1.
This should be a right-of-binding page (recto).

\clearpage
\displayedpagenumbering{arabic}{3}
This is the second physical page. The displayed page number should be 3
This page should be a left-of-binding page (verso). Finally, let's see
what a \verb|\pageref| gives us: 
\label{test}
\pageref{test}.

\end{document}

相关内容