无法使用 pdfpages 链接到插入的页面

无法使用 pdfpages 链接到插入的页面

我想使用 pdfpages 包为插入的页面添加标签。目前它有点管用,但无法使用和链接到\ref标签\pageref命令链接到标签。尽管这不起作用,但它可以使用hyperlinkhyperref 命令链接到该页面。

目标是编制一份课程阅读内容清单,然后说“从第 xx 页读到第 yy 页”。页码当然应该自动确定。

在下面的文档中,pageref 扩展为 ??,而文本 Hello 链接到正确的页面。

\documentclass{article}
\usepackage{hyperref}
\usepackage{pdfpages}
\begin{document}
See page \pageref{testing.1}.
\hyperlink{testing.1}{Hello.}
\includepdf[pages=-,link,linkname=testing]{test.pdf}
\end{document}

作为参考,插入的文档(test.pdf)可以是任何有效的 PDF 文档。

答案1

插入的link是超链接,而不是 LaTeX \label。因此\hyperlink宏可以工作但 不可以\pageref。我认为您无法从超链接获取页面信息,因此我认为您需要手动添加。使用键和自定义计数器\label可以最好地完成此操作:pagecommand

\documentclass{article}
\usepackage{hyperref}
\usepackage{pdfpages}
\newcounter{includepdfpage}
\begin{document}
See page \pageref{testing.1} till \pageref{testing.10}.
\hyperlink{testing.1}{Hello.}
\includepdf[pages=-,link,linkname=testing,pagecommand={\refstepcounter{includepdfpage}\label{testing.\theincludepdfpage}}]{test.pdf}
\end{document}

答案2

仅供参考,这是我最终使用的解决方案。它基于 Martin Scharrer 的答案,但经过修改以适用于多个插入的文档。

\documentclass{article}
\usepackage{hyperref}
\usepackage{pdfpages}

\newcounter{includepdfpage}
\newcounter{currentpagecounter}
\newcommand{\addlabelstoallincludedpages}[1]{
   \refstepcounter{includepdfpage}
   \stepcounter{currentpagecounter}
   \ifnum\value{currentpagecounter}=1 %
     \label{#1}
   \fi
   \label{#1.\thecurrentpagecounter}}
\newcommand{\modifiedincludepdf}[3]{
    \setcounter{currentpagecounter}{0}
    \includepdf[pages=#1,pagecommand=\addlabelstoallincludedpages{#2}]{#3}}

\begin{document}

See page \pageref{one.1} till \pageref{two.3}.

See beginning of included PDF \pageref{one}.

\modifiedincludepdf{-}{one}{test.pdf}
\modifiedincludepdf{-}{two}{test.pdf}

\end{document}

答案3

也许迟到了。

迭代@martin-scharrer的想法,我们可以使用pdfpages“变量\AM@linkname,因此用户可以选择不更改链接名称。

\documentclass{article}
\usepackage{hyperref}
\usepackage{pdfpages}
\newcounter{includepdfpage}

\makeatletter
\newcommand{\stepincluded}{
  \refstepcounter{includepdfpage}%
  \label{\AM@linkname.\theincludepdfpage}%
}
\makeatother

\begin{document}
See page \pageref{test.pdf.1} till \pageref{test.pdf.10}.
\hyperlink{test.pdf.1}{Hello.}
\includepdf[pages=-,link,pagecommand={\stepincluded}]{test.pdf}
\end{document}

相关内容