手动编写包含已包含的 PDF 文件的文档的带有超链接的目录

手动编写包含已包含的 PDF 文件的文档的带有超链接的目录

我认为这应该是一项简单的任务,但我却很难将各个部分整合在一起。

为了将 pdf 文件包含在我的文档中,我可以使用该pdfpages包。

对于文档中的超链接,我可以使用软件包hyperref。但是,我无法设置标签和对所含页面的引用。

什么不起作用

 \hyperlink{mylabel}{\includepdf[pages=1]{pdffile.pdf}} % Throws error

什么也不起作用

\phantomsection
\hyperlink{mylabel}{} % No error, but warning: Empty link is ignored

有什么方法可以使此设置正常工作?或者是否有完全不同的方法来解决根本问题?

答案1

如果我理解正确的话,您希望将一个或多个 PDF 文件包含到您的文档中,每个文件包含多个页面,并从文档的其他页面链接到其中一个页面。

使用该hyperref包,您实际上可以链接到文档的任何页面,只需为该页面设置一个标签即可。可以使用页码在page.<page>哪里从内部访问<page>页面。您实际上需要为这样的内部链接创建一个标签。这可以独立于文档的实际内容完成(这意味着,您甚至可以引用不存在的页面),

例如,可以按如下方式完成此操作(我没有包含来自另一个 PDF 文档的几页,而只是插入了一些文本,但无论如何,原理是一样的):

\documentclass[12pt]{article}

\usepackage{hyperref}

\newcommand{\setpagelabel}[1]{%
    % this only works if the `hyperref` package is loaded
    \newlabel{page:#1}{{#1}{#1}{page:#1}{page.#1}{}}%
}

% making pages 2 and 5 accessible by creating a label for them
\setpagelabel{2}
\setpagelabel{5}

\usepackage{lipsum}  

\begin{document}
    
    Something is on page \ref{page:2}

    Something else is on page \ref{page:5}
    
    \lipsum[1-20]
    
\end{document}

在文档的最开始处,放置了两个指向文档中相关页面的链接:

在此处输入图片描述

答案2

pdfpages 具有内置的链接功能。例如

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

\begin{document}

\hyperlink{example-image.pdf.1}{to page 1 of example-image}

\hyperlink{example-image-duck.pdf.6}{to page 6 of example-image-duck}

\includepdf[pages=1,link]{example-image}

\includepdf[pages=5-6,link]{example-image-duck}
\end{document}

相关内容