如何在目录中包含标题?

如何在目录中包含标题?

我有一个有点奇怪的请求——但我似乎无法在任何地方找到解决方案。我通过包编译了一个包含多个子文件的主文档subfile。以下是 MWE:

主要文件:

\documentclass{article}
\usepackage{subfiles}

\begin{document}

\tableofcontents

\subfile{doc1}
\subfile{doc2}

\end{document}

示例子文件,例如doc1.tex

\title{Doc1}
\author{Author 1}
\maketitle

\section{Doc 1 Section}
Text

这是我想要的:一个仅列出每个子文件标题的目录。

考虑到我拥有的子文件的数量,任何需要我对每个子文件进行某种手动编辑的解决方案都是不切实际的(例如,更改\title{}为另一个命令)。

当我还没有完全理解这个包的时候,我就开始使用subfiles它了,而且当时我也没有打算使用目录,所以我完全理解如果没有解决这个问题的方法——至少,没有一个我想要的简单的解决方案。

答案1

以下代码将\titlefor each\subfile作为“ ”插入到 ToC 中\chapter。这只是为了避免插入常规 s 的冲突\section(您没有要求这样做,但可以满足要求)。

在此处输入图片描述

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{doc1.tex}
\title{Doc1}
\author{Author 1}
\maketitle

\section{Doc 1 Section}
Text
\end{filecontents*}
\begin{filecontents*}{doc2.tex}
\title{Doc2}
\author{Author 2}
\maketitle

\section{Doc 2 Section}
Text
\end{filecontents*}

\usepackage{titling}% Allows for multiple \titles within one document
\usepackage{etoolbox}
\usepackage{subfiles}

\setcounter{tocdepth}{0}% Remove \section from ToC

\let\oldmaketitle\maketitle
\renewcommand{\maketitle}{%
  \oldmaketitle
  \addcontentsline{toc}{chapter}{\thetitle}%
}
\makeatletter
\let\l@chapter\l@section
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\l@chapter}{\z@}{\m@ne}{}{}
\makeatother

\begin{document}

\tableofcontents

\subfile{doc1}
\subfile{doc2}

\end{document}

尽管从技术上讲它是作为 插入的,但目录中条目的格式\title与常规格式类似。\section\chapter

相关内容