如何使 \pdfbookmark 锚定在图形所在的页面上?

如何使 \pdfbookmark 锚定在图形所在的页面上?

我想直接指向文本中包含的一系列图表。所以我添加了类似

\pdfbookmark[1]{Figure 1}{fig:1}

但是它指向源文本中出现的相同点,而不是图形的确切位置。然后我尝试使用\pageref{fig:1},它运行完美。但是如何在不使用的情况下从目录中对其进行超链接\listoffigures

\documentclass{article}
\usepackage[hyperref,UTF8]{ctex}
\usepackage[unicode={true}]{hyperref}
\usepackage{graphicx}
\begin{document}

\pdfbookmark[1]{Figure 1}{fig:1}
\pdfbookmark[1]{Figure 2}{fig:2}
\pdfbookmark[1]{Figure 3}{fig:3}
\pdfbookmark[1]{Figure 4}{fig:4}

\begin{figure}[htbp]
\includegraphics{figure1}
\end{figure}

\begin{figure}[htbp]
\includegraphics{figure2}
\end{figure}

\begin{figure}[htbp]
\includegraphics{figure3}
\end{figure}

\begin{figure}[htbp]
\includegraphics{figure4}
\end{figure}


\end{document}

提前致谢。

答案1

书签必须在图形出现的地方完成,而不是在第一页,因此将它们单独添加到图形环境中。

一个更清洁的方法是修补figure环境以自动执行此操作。

\documentclass{article}
%\usepackage[UTF8]{ctex}
\usepackage[demo]{graphicx}
\usepackage[unicode={true}]{hyperref}
\begin{document}


\begin{figure}[htbp]
\pdfbookmark[1]{Figure 1}{fig:1}
\includegraphics{figure1}
\end{figure}

\begin{figure}[htbp]
\pdfbookmark[1]{Figure 2}{fig:2}
\includegraphics{figure2}
\end{figure}

\begin{figure}[htbp]
\pdfbookmark[1]{Figure 3}{fig:3}
\includegraphics{figure3}
\end{figure}

\begin{figure}[htbp]
\pdfbookmark[1]{Figure 4}{fig:4}
\includegraphics{figure4}
\end{figure}


\end{document}

使用虚拟 ctr 自动添加

\documentclass{article}
%\usepackage[UTF8]{ctex}
\usepackage[draft,demo]{graphicx}


\usepackage{pgffor}
\usepackage{etoolbox}


\usepackage[unicode={true}]{hyperref}

\newcounter{pdffigurectr}

\AtBeginEnvironment{figure}{%
  \refstepcounter{pdffigurectr}%
  \pdfbookmark[1]{\figurename \number\value{pdffigurectr}}{fig:\number\value{pdffigurectr}}%
}

\begin{document}


\foreach \x in {1,...,20} {%
  \clearpage
  \begin{figure}[htbp]
    \includegraphics{figure\x}

    This is figure \x\ on page \thepage
  \end{figure}
}


\end{document}

相关内容