我编辑大型文档,因此在编译后打开最后一页对我来说很有用。通常,会打开第一页,但通过使用 hyperref,我可以将其配置为在开始时打开任何页面。
\usepackage[pdftex,pdfstartpage=1]{hyperref}
但是没有变量 lastpage。可以用其他方法实现吗?
答案1
诸如此类的包zref-totpages
可以计算绝对页数,这很有帮助。关键部分是时间:
\documentclass{book}
\usepackage{zref-totpages}
\AtBeginDocument{%
\ifnum\ztotpages>0 %
\hypersetup{pdfstartpage=\ztotpages}%
\fi
}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter{Hello World}
\chapter{Last Chapter}
\end{document}
更新:在第一次运行中,\ztotpages
尚不清楚,并且其值0
导致 pdfTeX 出现错误:page number must be positive
。(hyperref
6.83o 将对 的值添加一些验证pdfstartpage
。)
定时:
- 正在装载包裹
\zref-totpages
。 - 明确调用
\AtBeginDocument
进行设置pdfstartpage
。 - 正在加载的
hyperref
包 - 要求
\AtBeginDocument
使用pdfstartpage
。 \begin{document}
读取.aux
文件。⇒
有效\zreftotpages
。- 钩子
\AtBeginDocument
被执行,首先用 来\hypersetup
设置pdfstartpage
。 - 最后
hyperref
用于pdfstartpage
设置起始页。
最后一页位于文档末尾,hyperref
使用pdfstartpage
较早的(TeX 不执行\special
后我们创建了一个包含两个 LaTeX 输出页面的文件夹(最后一个 DVI 输出页面),因此需要运行两次 LaTeX。
备注:包lastpage
在这里没有帮助,因为最后一页的页码可能与绝对页数不同,特别是在重置页计数器(\frontmatter
,,\mainmatter
...)的情况下。
命名动作LastPage
在对问题的评论中,Stephan Lehmke 指出了一个命名动作LastPage
。软件包hyperref
不直接支持打开动作。但hyperref
可以通过空白的起始页禁用打开动作规范,并且可以手动添加命名动作,例如对于 pdfTeX:
\documentclass{book}
\usepackage{ifpdf}
\usepackage{hyperref}
\hypersetup{pdfstartpage={}}% disable openaction of hyperref
\ifpdf
\pdfcatalog{}openaction user{<</S/Named/N/LastPage>>}{}\relax
\fi
\begin{document}
\tableofcontents
\chapter{Hello World}
\chapter{Last Chapter}
\end{document}