我正在使用 pdfpages 合并多个 pdf 文档;我还想为新文件添加一个“目录”页面,使用 hyperref 让我可以直接跳转到正确的页面。pdfpages 中的“addtotoc”选项几乎可以正常工作……由此生成的链接指向正确的页面,但比开头少了几行。有什么建议吗?下面的示例代码还显示了使用\hyperlink
- 的解决方法,但此文件可能需要由不太熟悉的其他人维护/更新\LaTeX
,因此自动化程度越高(即每个附加文件需要的更改越少),越好。
\documentclass{article}
\usepackage{pdfpages}
\usepackage[pdfstartview=FitH,bookmarks=true,colorlinks=true,linkcolor=blue]{hyperref}
\usepackage{bookmark}
\bookmarksetup{color=blue}
\setlength\parindent{0pt}
\begin{document}
\tableofcontents
\LARGE\hyperlink{Core1.pdf.1}{{Core 1}}\\
\LARGE\hyperlink{Core2.pdf.1}{{Core 2}}\\
\LARGE\hyperlink{Core3.pdf.1}{{Core 3}}\\
\LARGE\hyperlink{Core4.pdf.1}{{Core 4}}\
\includepdf[pages=-,link,linkfit=FitH,addtotoc={1, section, 1, Core 1, Core1}]{Core1.pdf}
\bookmark[dest=Core1.pdf.1]{Core 1}
\includepdf[pages=-,link,linkfit=FitH]{Core2.pdf}
\bookmark[dest=Core2.pdf.1]{Core 2}
\includepdf[pages=-,link,linkfit=FitH]{Core3.pdf}
\bookmark[dest=Core3.pdf.1]{Core 3}
\includepdf[pages=-,link,linkfit=FitH]{Core4.pdf}
\bookmark[dest=Core4.pdf.1]{Core 4}
\end{document}
答案1
默认使用addtotoc
in\includepdf
会创建一个部分并将其用作锚点。该部分在文档中被定义为匿名,但在目录和书签中有一个名称。
我的一个想法是使用该addtotoc
机制将条目添加到目录(以及书签)中,但超链接指向已定义的锚点而不是部分锚点,如下所示:
\documentclass{article}
\usepackage{mwe}
\usepackage{pdfpages}
\usepackage[pdfstartview=FitH,bookmarks=true,colorlinks=true,linkcolor=blue]{hyperref}
\usepackage{bookmark}
\bookmarksetup{color=blue}
\setlength\parindent{0pt}
\setcounter{errorcontextlines}{\maxdimen}
\makeatletter
\newcommand*{\@pdfpagephantomsection}[2][]{\edef\@currentHref{\AM@linkname.\AM@page}\addcontentsline{toc}{section}{\protect\numberline{}#1}}
\makeatother
\begin{document}
\tableofcontents
\includepdf[pages=-,link,linkfit=FitH,addtotoc={1, pdfpagephantomsection, 1, Core 1, example-image-a}]{example-image-a.pdf}
\includepdf[pages=-,link,linkfit=FitH,addtotoc={1, pdfpagephantomsection, 1, Core 2, example-image-b}]{example-image-b.pdf}
\end{document}
这是可行的,因为pdfpages
如果命名的分段命令(以 为前缀@
)不存在,则仅会为目录目的创建一个分段,否则它会使用该命令。在这里,我将其命名为pdfpagesphantomsection
。
请注意,我没有您指定的 PDF 文件,因此我使用mwe
包中提供的文件。
答案2
您也可以简单地更改包含所包含 PDF 的页面的顶部边距。添加的锚点addtotoc
将位于页面的最顶部。
newgeometry
您可以使用包中的和restoregeometry
命令更改文档中间的边距geometry
:
\documentclass{article}
\usepackage{geometry}
\usepackage{pdfpages}
\usepackage{hyperref}
\begin{document}
% Your overview page goes here
\newgeometry{top=0pt} % Remove top margin
\includepdf[addtotoc={1, section, 1, Core1, core1}]{example-image-a.pdf}
\includepdf[addtotoc={1, section, 1, Core2, core2}]{example-image-b.pdf}
\restoregeometry{} % Restore original top margin
\end{document}