如何将 pdf 起始页设置为给定的标签?

如何将 pdf 起始页设置为给定的标签?

我正在处理一份较长的文档,经常处理中间的部分,因此在编译后我必须进行大量挖掘才能找到我正在处理的部分。一段时间后,这会变得非常令人厌烦,尤其是那些需要多次编译才能追踪细节的棘手部分。

我正在使用该hyperref包,并且我知道我可以使用类似以下序列来设置起始页

\usepackage[pdfstartpage=7]{hyperref}.

虽然这可行,但我想要一种方法,让我可以不改变序言,然后只移动一些标签,比如说

\label{startviewinghere}.

这可能吗?第二个问题是:是否可以控制此锚点在起始视图中出现的位置(即在顶部还是在底部)?

答案1

例子:

\documentclass{book}

\usepackage{zref-abspage,zref-user}
\makeatletter
\AtBeginDocument{%
  \zref@refused{chap:intro}%
  \hypersetup{%
    pdfstartpage=\zref@extractdefault{chap:intro}{abspage}{1}%
  }%
}
\makeatother

\usepackage{hyperref}
\usepackage{bookmark}

\begin{document}
\frontmatter
\tableofcontents
\chapter{Preface}

\mainmatter
\chapter{Introduction}
\zlabel{chap:intro}
\end{document}

顺序很重要。hyperref在 中设置起始页\AtBeginDocument,因此pdfstartpage必须在 之前进行设置。但不能在序言中完成,因为文件.aux尚未读取。

答案2

这是一个版本,它将屏幕方便地放置在参考之上,应给出如下内容

\zlabel{startpoint}
\zsavepos{here}

然后,将 Heiko 的答案中的相应代码更改为

\usepackage{fp}
\usepackage[abspage,user,savepos]{zref}
\makeatletter
\AtBeginDocument{%
  \zref@refused{startpoint}%
    \FPmul\p{\zposy{here}}{1}
    \FPdiv\p{\p}{65536}
    \FPadd\pointoffset{\p}{350}
  \hypersetup{%
    pdfstartpage=\zref@extractdefault{startpoint}{abspage}{1},%
    pdfstartview={XYZ 0 \pointoffset 1}
  }%
}
\makeatother

运行良好。我意识到,未来更新中存在许多技术难题,我正在努力解决这些问题(尤其是“此处”可能未定义,以及需要两个不同的标签)。

相关内容