我正在创建一个由其他几个 PDF 组成的 PDF 文档。我使用 latex 将这些 PDF 合并为一个 PDF。我想制作一个添加 PDF 的目录。因此,我为此使用了类似以下内容的内容:
\tableofcontents
\newpage
\section{A}
\includepdf[pages=1-2]{name_document1.pdf}
\section{B}
\includepdf[pages=1-2]{name_document2.pdf}
在这种情况下,目录将是:
Contents
1 A 2
2 B 5
这种方法的不便之处在于 latex 会创建一个只有章节名称的空白页。这意味着在第 2 页上,我只有 1 A 的提及和两页 name_document1.pdf 之后的内容,在第 5 页上,只有 2 B 的提及和两页 name_document2.pdf 之后的内容。
我可以理解这只是我的代码的输出。但我想要做的是,为每个包含的 pdf 创建包含正确名称(标题)的目录,而不是仅创建具有该名称/标题的页面。就像这样:
Contents
1 A 2
2 B 4
第 2 页直接有 name_document1.pdf,第 4 页有 name_document2.pdf。
我知道一个非常基本且非自动的迂回方法是有两个 tex 文件。首先是 tableContent.tex:
\tableofcontents
\newpage
\section{A}
\newpage
\section{B}
\newpage
并将该 tex 文件的 PDF 包含到第二个文件中,如下所示:
\includepdf[pages=1]{tableContent.pdf}
\includepdf[pages=1]{name_document1.pdf}
\includepdf[pages=1]{name_document2.pdf}
但是如果我们包含 100 个 pdf,这只是一种绕路且不实用的方法。有没有办法实现我的想法?
答案1
这种方法可能有点复杂。您需要pagecommand
为每个指定\includepdf
。以下示例仅显示包含单页 PDF。它也适用于多页 PDF。内容行只能添加到第一页。此外,您还需要在每次命令insertpages
后将计数器设置为 0 。\includepdf
\documentclass{article}
\usepackage{pdfpages}
\newcounter{insertpages}
\begin{document}
\tableofcontents
\includepdf[
pages=-,
pagecommand={
\thispagestyle{empty}
\stepcounter{insertpages}
\ifnum\value{insertpages}=1\addcontentsline{toc}{section}{example-image-a.pdf}\fi
}
]{example-image-a.pdf}\setcounter{insertpages}{0}
\includepdf[
pages=-,
pagecommand={
\thispagestyle{empty}
\stepcounter{insertpages}
\ifnum\value{insertpages}=1\addcontentsline{toc}{section}{example-image-b.pdf}\fi
}
]{example-image-b.pdf}
\end{document}
答案2
如果您对目录感到满意(即您不需要在插入的页面上添加章节标题),那么您应该尝试addtotoc
如下选项:
\documentclass[a4paper]{article}
\usepackage{mwe}
\usepackage{pdfpages}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\includepdf[
pages=-,
addtotoc={
1, section, 1, My first page, sec:FirstPage,
5, section, 1, Page 5, sec:Page5}
]{example-image-a4-numbered.pdf}
See page \pageref{sec:FirstPage} and \pageref{sec:Page5}.
\end{document}