如何让 LaTeX 以相反的顺序打印页码,也就是说,如果相关文档有 N 页,则第一页的页码为 N,然后是 N-1,……?
答案1
这是一个想法:
- 照常运行*tex 编译,并计算页数。
- 第二次运行时,自定义要显示的页码
TotalPageNum-CurrentPagenum+1
(即,通过公式计算)。 - 没有步骤 3。
您可能可以跳过此操作,直到您的文档完成为止,因此这是一个一次性操作。
有很多事情可能不可行或非常困难,但也许可以行得通。至少,这不太可能依赖于特定的文档类别。
答案2
这是您可以用于book
类文档的解决方案。它倒数剩余的页面,从\mainmatter
最后一页到最后一页,忽略\frontmatter
分区中的页面(主要是因为我不想用罗马数字把事情弄得太复杂,但仍然想提供一个能识别问题的答案)。您显然需要针对非类book
文档(article
、report
等;memoir
类KOMA
文档可能是一个全新的领域,这种解决方案可能不适合)。
\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}