反向页码

反向页码

如何让 LaTeX 以相反的顺序打印页码,也就是说,如果相关文档有 N 页,则第一页的页码为 N,然后是 N-1,……?

答案1

这是一个想法:

  1. 照常运行*tex 编译,并计算页数。
  2. 第二次运行时,自定义要显示的页码TotalPageNum-CurrentPagenum+1(即,通过公式计算)。
  3. 没有步骤 3。

您可能可以跳过此操作,直到您的文档完成为止,因此这是一个一次性操作。

有很多事情可能不可行或非常困难,但也许可以行得通。至少,这不太可能依赖于特定的文档类别。

答案2

这是您可以用于book类文档的解决方案。它倒数剩余的页面,从\mainmatter最后一页到最后一页,忽略\frontmatter分区中的页面(主要是因为我不想用罗马数字把事情弄得太复杂,但仍然想提供一个能识别问题的答案)。您显然需要针对非类book文档(articlereport等;memoirKOMA文档可能是一个全新的领域,这种解决方案可能不适合)。

\documentclass[twoside]{book}
\usepackage{lastpage}
\usepackage{refcount}
\usepackage{fancyhdr}
\usepackage{lipsum}

\pagestyle{plain}
\let\oldmainmatter\mainmatter
\renewcommand\mainmatter{%
  \cleardoublepage%
  \oldmainmatter%
  \pagestyle{fancy}%
  \fancyhf{}%
  \renewcommand*\headrulewidth{0pt}%
  \fancyhead[LE,RO]{Page \thepage\ of \getpagerefnumber{LastPage}}%
  \fancyhead[LO,RE]{Remaining Pages \the\numexpr\getpagerefnumber{LastPage}-\thepage}%
}

\begin{document}
  \frontmatter
  \chapter{Front Matter}
  \lipsum[1-10]
  \mainmatter
  \chapter{Chapter One}
  \thispagestyle{empty}%
  \lipsum[1-15]
  \chapter{Chapter Two}
  \thispagestyle{empty}%
  \lipsum[1-10]
\end{document}

答案3

你已经收到了很好的答案,但我想提一下另一种解决方法无聊的页码或者一般来说,任何计数器的显示都很无聊。我认为有时以视觉方式显示计数器是一个更好的主意。例如,考虑这个五页的文档:

在此处输入图片描述

页眉和页脚上的四个计数器直观地显示当前页码(对于某些样式,它们还会指示剩余页码)。这是受到 ConTeXt 演示模块中使用的样式和一些 beamer 样式的启发。

上面的例子基于 ConTeXt模块我写过。它使用 metapost 来绘制计数器(仅适用于 ConTeXt MkIV)。对于 LaTeX,可以使用相同的想法并使用 tikz 作为后端。

答案4

使用杰弗里·琼斯的回答(+1 回答),对于不同的编号方案,您可以使用(其中一些)如下:

\documentclass[twoside]{book}
\usepackage{pageslts}
\usepackage{refcount}% only necessary if some page numbering scheme
                     % is used more than once
\usepackage{fancyhdr}
\usepackage{lipsum}

\pagestyle{fancy}
\makeatletter
\fancyhead[LE,RO]{Page "\thepage{}" (\theCurrentPageLocal{}) of %
 \lastpageref{pagesLTS.\pagesLTS@pnc} %
 (total \theCurrentPage{} of \lastpageref{LastPages})}%
\fancyhead[LO,RE]{Remaining Pages %
%  % If each page numbering scheme (roman, arabic,...) is used just once, 
%  % it is sufficient: 
%\@tempcnta=\value{pagesLTS.\[email protected]}\relax%
%  % otherwise it is necessary: 
\@tempcnta=\getpagerefnumber{pagesLTS.\[email protected]}\relax%
\advance\@tempcnta by -\theCurrentPageLocal%
\xdef\Remaining{\the\@tempcnta}%
\Remaining{} of \lastpageref{pagesLTS.\pagesLTS@pnc} %
(in total %
\@tempcnta=\value{pagesLTS.pagenr}\relax%
\advance\@tempcnta by -\theCurrentPage%
\xdef\Remaining{\the\@tempcnta}%
\Remaining%
)}
\makeatother

\begin{document}
\frontmatter
\chapter{Front Matter}
\lipsum[1-10]
\mainmatter
\chapter{Chapter One}
\thispagestyle{empty}%
\lipsum[1-15]
\chapter{Chapter Two}
\thispagestyle{empty}%
\lipsum[1-10]
\newpage
\pagenumbering{roman}
\lipsum[1-10]
\end{document}

相关内容