我正在将 2 个 pdf 插入在一起,一个在运行时使用 latex 代码,另一个生成并插入。我想手动添加第二个 PDF 的第二个目录并将其合并到第一个 PDF 的同一位置。这可能吗?就像在目录中插入带有页码的章节,而该章节实际上并不存在?就像一个静态的假链接。
答案1
最手动的方法是将每个条目添加到目录中。 \addtocontents{toc}{stuff}
将添加stuff
到 toc 文件中,因此,这只是添加什么(以及添加到什么\protect
)的问题。一个例子是
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{1}Other Chap}{18}}
查阅您的其他 toc 文件以获得更多想法。
如果您有来自其他 pdf 的 toc 文件,那么您可以通过读取该 toc 文件但在写入内容行之前调整页码来自动化该过程。
以下示例实现了这两种方法:它的目录中有三个常规条目,然后是三个手动条目。然后它读取另一个文件的目录(实际上是其自身的副本),但将所有页码从目录中写入的内容移动 30。
\documentclass[openany]{book}
\begin{document}
\tableofcontents
{
\newcounter{savepage}
\let\oldcontentsline=\contentsline
\renewcommand{\contentsline}[3]{%
\setcounter{savepage}{#3}%
\addtocounter{savepage}{30}%
\oldcontentsline{#1}{#2}{\arabic{savepage}}%
}%
\input{extraTocB.toc}
}
\chapter{Chap Title}
\section{Sect Title}
\subsection{Subsect Title}
Some text.
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{}Other Preface}{17}}
\addtocontents{toc}{\protect\contentsline{chapter}{\protect\numberline{1}Other Chap}{18}}
\addtocontents{toc}{\protect\contentsline{section}{\protect\numberline{1.1}Other Sect}{21}}
\end{document}
(最后,如果您使用 hyperref,请注意它会重新定义\contentsline
,因此您需要调整我所做的一切。)
答案2
addtotoc
看起来它只需要在目录中添加一个条目,但对于复杂的东西来说会很麻烦。我在想,如果另一个文档是由 LaTeX 生成的,你可以这样做
\makeatletter
\immediate\write\@mainaux{\string\@input{other.aux}}%
\makeatother
就在 pdf 页面包含之前,如果一切顺利,它应该使您能够合并来自两个文档的目录信息。
(请注意,以上内容是未经检验的推测——我目前没有可以运行的 LaTeX 系统)。
答案3
这回答了您标题中的问题,但我无法帮助您解决文中提到的问题。
% fakechapterprob.tex SE 575930
\documentclass{book}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\chapter{First}
\lipsum[1]
\clearpage
% put a fake chapter in the ToC
\addcontentsline{toc}{chapter}{9\hspace{0.5em} Fake}
\chapter{Second}
\end{document}
这\addcontentsline
是一个基本的 LaTeX 宏。是\hspace{0.5em}
为了使假章节的标题与真实章节标题对齐(可能需要根据您的特定 ToC 条目集进行调整)。