我遇到了以下问题。使用 hyperref 单击演示文稿中的某个部分时,我没有转到页面本身,而是转到了页面下方。这可能是什么原因造成的?
MWE 如下。
\documentclass[xcolor=dvipsnames]{beamer}
\usepackage{hyperref}
\usepackage{color}
\title[]{MWE}
\begin{document}
\section{VAA}
\begin{frame}
\titlepage
\end{frame}
\section{John Doe}
\begin{frame}[t]{Slide 1}
\end{frame}
\begin{frame}[t]{Slide 1}
\end{frame}
\begin{frame}[t]{Slide 1}
\end{frame}
\end{document}
答案1
这很可能是查看器的问题:使用 pdfLaTeX 编译你的 MWE,这是我在生成的 PDF 文件中得到的书签 VAA 的链接位置:
% 10 0 obj
<<
/D [18 0 R /XYZ 28.346 272.126 null]
>>
将 PostScript 点中给出的坐标转换为厘米,得到相对于纸张左下角的28.346 272.126
位置,该位置恰好位于左上角的右侧(因为默认纸张大小为)。此偏移是由于文档类设置的页边距造成的。(1cm, 9.6cm)
1cm
beamer
12.8cm x 9.6cm
因此书签应该会带你到正确的最多,但不是降低比您描述的预期要好。
无论如何,如果这真的让你烦恼,你可以尝试用对页面锚点的直接引用替换书签的目标,这应该会带你准确地到达左上角。这可以通过修补生成书签的内部命令来实现:
\documentclass[xcolor=dvipsnames]{beamer}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\beamer@part}{Outline\the\c@part}{page.\the\c@page}{}{}
\patchcmd{\beamer@section}{Outline\the\c@part.\the\c@section}{page.\the\c@page}{}{}
\patchcmd{\beamer@subsection}{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@page}{page.\the\c@page}{}{}
\patchcmd{\beamer@subsubsection}{Outline\the\c@part.\the\c@section.\the\c@subsection.\the\c@subsubsection.\the\c@page}{page.\the\c@page}{}{}
\makeatother
\title[]{MWE}
\begin{document}
\section{VAA}
\begin{frame}
\titlepage
\end{frame}
\section{John Doe}
\begin{frame}[t]{Slide 1}
\end{frame}
\begin{frame}[t]{Slide 1}
\end{frame}
\begin{frame}[t]{Slide 1}
\end{frame}
\end{document}
不过,我不知道这样做是否值得——毕竟,演示文稿通常是全屏模式,书签通常不可用。此外,beamer
它本身还提供了超链接标题等出色的导航功能,这些功能比大多数查看器的内置功能使用起来更优雅。