我使用 LaTeX 生成的 PDF 文档的前言部分使用了罗马数字。
我的问题是:如果我想打印一定范围的页面,则很难选择它们,因为我的 PDF 查看器(Skim.app
或)似乎从 PDF 的开头计算页数(1 = PDF 的第一页),但它显示了文档的正确页码(因此第 1 页是主要内容的第一页)。Preview.app
MacOS X 10.6.8
有没有办法解决这个问题,以便显示的页码与我必须在打印对话框中输入的页码相同?
这是一个简单的例子:
\documentclass{scrbook}
\usepackage{hyperref}
\begin{document}
\frontmatter
\section{Here starts the Frontmatter}
text frontmatter
\mainmatter
\section{here starts the mainmatter}
text mainmatter: in my PDF viewer this is page 1, but when I would like to print it, I'd have to print page 3 (selecting page 1 in the print dialog would print page i, the first page of the PDF)
\backmatter
\section{here comes the backmatter}
text backmatter
\end{document}
答案1
感谢 Qrrbrbirlbel Torbjørn T. 的评论,我自己找到了解决方案:
Skim.app
(版本 1.3.22)确实显示两个页码(以 MWE 第一页为例):
- 左侧白色方框中显示第“i”页
- 显示的是第 1 页,共 5 页(“真实的”窗口标题栏中的
Preview.app
(版本 5.0.1)仅在标题栏中显示“真实”页码(PDF 第一页 = 1)
因此,在这两个应用程序中,如果我从打印对话框的标题栏中选择“真实”页码,我就可以精确选择要打印的页面范围。
答案2
尝试将其放在您的序言中。我们习惯于在每张发货的页面上\EveryShipout
增加新的计数器xpage
,然后我们习惯于\texorpdfstring
在文本和 PDF 注释中写一些不同的东西。在 PDF 注释中,我们写下这个数字。修改可\pagenumbering
确保我们修改的编号在任何地方都能正确使用。
\makeatletter
\usepackage{everyshi}
\newcounter{xpage}\stepcounter{xpage}
\def\@xnumber#1#2{\texorpdfstring{#1{#2}}{\@arabic\c@xpage}}
\def\@xroman{\@xnumber{\@roman}} % repeat for every numbering style you use
\def\@xRoman{\@xnumber{\@Roman}} % repeat for every numbering style you use
\def\@xarabic{\@xnumber{\@arabic}} % repeat for every numbering style you use
\let\@xpagenumbering\pagenumbering
\def\pagenumbering#1{\@xpagenumbering{x#1}}
\pagenumbering{arabic}
\EveryShipout{\stepcounter{xpage}}
\makeatother