如何合并多个子文件使得每个子文件都有自己的目录?

如何合并多个子文件使得每个子文件都有自己的目录?

我有多个子文件,我想将它们导出为一个主文件,每个子文件都有自己的目录。当我导出文件时,第一个子文件的目录包含所有内容,而其他文件的目录为空。

我希望每个文件的目录保持完整,并且我不希望任何子文件的页码重新开始。我正在使用 LyX。

我尝试使用该titletoc包,并用以下 LaTeX 代码替换了 LyX 目录对象(通过插入->列表/目录->目录插入):

\startlist{toc} 
\printlist{toc}{}{\section*{Table of Contents}}

但是当我导出主文档时收到以下错误:

LaTeX 错误:出现问题 - 也许缺少/项目。

(当我单独导出子文档时,我没有收到此错误。)

因此,我的问题是:

  • 如何将多个子文件合并为一个主文档,并且每个子文件都有自己的目录?
  • 使用该titletoc软件包是否适合我想要实现的目标?

可能相关的问题:

两个单独的目录

一个文件中有多个文档、多个目录

Titletoc/Titlesec/Titleps 文档: http://mirror.its.dal.ca/ctan/macros/latex/contrib/titlesec/titlesec.pdf

答案1

我对这个问题的解读就是这样的。

子文件是独立的、单独的文档。每个文件都有自己的目录,我认为这是 mini-toc 的要求。

主文件有自己的目录。子文件使用 加载到主文件中\input。子文件保留自己的目录,并使用反映主文档分页的新页码进行更新。

具体操作如下:

  1. 每个子文档都使用article类和standalone包。子文件包含一个测试 ( ),用于确定它是否正在独立编译。然后,每个子文件都将成为可以编译的独立文档,并在使用和从包\newif\ifstandlone \standalonetrue构建自己的目录的过程中进行编译。\startcontents\printcontentstitletoc

  2. 主文件使用report类并加载standalone包。每个子文件都使用 加载\input。由于standalone正在使用,它会剥离每个子文件的前言,只留下每个子文件的内容。使用 中的宏在主文件中构建目录titletoc

最终结果是,每个子文件都可以是一个独立的文档,可以编译以生成最终文档,同时还可以从子文件构建主文件而无需对这些文件进行任何更改。主文档和子文件都有各自的目录。

此答案由 TeX.SE 其他地方发布的一些优秀答案提供支持。来源是:使用 titletoc (米尼托克和回忆录) 和独立 (让 {standalone} 忽略来自 \input 文件的文本块(例如 \begin{spacing} 和 \maketitle))。

这是 MWE 和输出。

\begin{filecontents*}{child1.tex}
    \documentclass[a4paper,11pt]{article}
    \usepackage{standalone} 
    %https://tex.stackexchange.com/questions/29995/get-standalone-to-ignore-blocks-of-text-from-input-files-e-g-beginspacin/30000#30000
    \newif\ifstandlone \standalonetrue 
    \usepackage{lipsum}
    \usepackage{titletoc}

    \begin{document}
        %https://tex.stackexchange.com/questions/5944/minitoc-and-memoir/7877#7877
        \section*{Contents}
        \startcontents[sections] %
        \printcontents[sections]{}{1}{}
        \section{Child 1 - Section 1}
        \lipsum[2]
        \section{Child 1 - Section 2}
        \lipsum[2]
    \end{document}
\end{filecontents*}

\begin{filecontents*}{child2.tex}
    \documentclass[a4paper,11pt]{article}
    \usepackage{standalone} 
    \newif\ifstandlone \standalonetrue 
    \usepackage{lipsum}
    \usepackage{titletoc}

    \begin{document}
        \section*{Contents}
        \startcontents[sections]
        \printcontents[sections]{}{1}{}
        \section{Child 2 - Section 1}
        \lipsum[2]
        \section{Child 2 - Section 2}
        \lipsum[2]
    \end{document}
\end{filecontents*}

\documentclass[a4paper,11pt]{report}
    \usepackage{standalone} 
    \usepackage{lipsum}

    %https://tex.stackexchange.com/questions/39153/table-of-contents-with-chapter
    \usepackage{titletoc}
    \titlecontents*{chapter}% <section-type>
    [0pt]% <left>
    {}% <above-code>
    {\bfseries\chaptername\ \thecontentslabel\quad}% <numbered-entry-format>
    {}% <numberless-entry-format>
    {\bfseries\hfill\contentspage}% <filler-page-format>

    \begin{document}

    \tableofcontents   

    \chapter{First child document}
    \input{child1.tex}

    \chapter{Second child document}
    \input{child2.tex}

\end{document}

在此处输入图片描述

答案2

您正在寻找这样的东西吗?

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage{titlesec,titletoc,lipsum}

\titleformat{\section}
  {\normalfont\Large\bfseries}
  {\thesection}{1em}{}
  [\vspace*{2pc}%
  \startcontents
  \printcontents{}{1}{\setcounter{tocdepth}{2}}%
  ]

\newcommand\repeatsection{%
  \section{This section}
  \lipsum[1]
  \subsection{This subsection}
  \lipsum[1]
  \subsection{This subsection}
  \lipsum[1]
  \subsection{This subsection}
  \lipsum[1]
}

\newcommand\repeatsections{%
  \repeatsection\repeatsection\repeatsection\repeatsection
}

\begin{document}
\tableofcontents
\repeatsections
\end{document}

在此处输入图片描述

相关内容