如何配置 Latex 在 PDF 阅读器中打开最后一页?

如何配置 Latex 在 PDF 阅读器中打开最后一页?

我编辑大型文档,因此在编译后打开最后一页对我来说很有用。通常,会打开第一页,但通过使用 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。(hyperref6.83o 将对 的值添加一些验证pdfstartpage。)

定时:

  1. 正在装载包裹\zref-totpages
  2. 明确调用\AtBeginDocument进行设置pdfstartpage
  3. 正在加载的hyperref
  4. 要求\AtBeginDocument使用pdfstartpage
  5. \begin{document}读取.aux文件。⇒
    有效\zreftotpages
  6. 钩子\AtBeginDocument被执行,首先用 来\hypersetup设置pdfstartpage
  7. 最后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}

相关内容