我有一个有点奇怪的请求——但我似乎无法在任何地方找到解决方案。我通过包编译了一个包含多个子文件的主文档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
以下代码将\title
for 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