子文件包和目录

子文件包和目录

我正在使用 Subfiles 包以较小的步骤编译一个相对较大的文档。每个子文件实际上是文档的一个章节。我希望每个章节都有一个目录(除了一般的目录之外)。我使用了以下几行

% !TEX encoding = IsoLatin9
\documentclass[./main.tex]{subfiles}
\begin{document}
\tableofcontents
\let\tableofcontents\relax
\chapter{My first chapter}
...

在一章中,我确实获得了该章的目录,但它位于标题“目录”之后和章节标题之前。此外,(“目录”+目录)相对于章节标题位于不同的页面中。我想获得:

  • 章节标题(上例中为“我的第一章”)
  • 章节目录(如果可能,不包含“目录”标题)
  • 按此顺序开始章节正文,并使其位于同一页上。这样可以吗?

答案1

可以根据需要使用该包自定义子文件的本地目录etoc

假设目录中有主书文件BOOK,子目录中有章节chapters

t2

你会得到

本书的完整目录

公吨

第1章

c1

第2章

c2

这是 full_book-2021.tex

 %% full_book-2021.tex in its own directory BOOK

\documentclass[11pt,a4paper,twoside]{book}

\usepackage{etoc} % for local TOC

\usepackage{kantlipsum} % dummy text
\usepackage{subfiles} 

\begin{document}

    \tableofcontents
    \etocsettocstyle{}{} % now only local tocs
        
    \subfile{./chapters/chapter1}  % chapter 1  file in  BOOK/chapters/ subdirectory
    
    \subfile{./chapters/chapter2}  % chapter 2  file in  BOOK/chapters/ subdirectory

\end{document}

这些是章节子文件

%% chapter1.tex in /chapters subdirectory

\documentclass[../full-book-2021.tex]{subfiles}

\begin{document}
    
\chapter{My First Chapter}

\etocsettocstyle{% before code
    \noindent\rule{\linewidth}{.4pt}
    \vspace*{-4\baselineskip}
    \section*{}
}
{% after code
    \noindent\rule{\linewidth}{.4pt}
    \vspace*{2\baselineskip}
}

\localtableofcontents
    
3. \kant[3-5]

\section{Sec1Ch1 Blue}

4. \kant[4-9]

\section{Sec2Ch1 Green}

5. \kant[5-11]  
    
\end{document}

%% chapter2.tex in /chapters subdirectory

\documentclass[../full-book-2021.tex]{subfiles}

\begin{document}
        
    \etocsettocstyle{% before code
        \noindent\rule{\linewidth}{.4pt}
        \vspace*{-4\baselineskip}
        \section*{}
    }
    {% after code
        \noindent\rule{\linewidth}{.4pt}
        \vspace*{2\baselineskip}
    }
    
    
    \chapter{My Second Chapter}
    \localtableofcontents
    
    6. \kant[6-12]
    
    \section{Sec1Ch2 Red}
    
    7. \kant[7-14]
    
    \section{Sec2Ch2 Yellow}
    
    8. \kant[8-16]  
    
\end{document}

相关内容