我可以通过添加现实中不存在的章节来定制目录的外观吗?

我可以通过添加现实中不存在的章节来定制目录的外观吗?

我正在将 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 条目集进行调整)。

在此处输入图片描述

相关内容