课程 十三

长文档结构

本课展示了如何将 LaTeX 源文件分割成更小、更易管理的文件,以及这如何使构建长文档更容易和更快速。

当你在写一个较长的文档时,你可能想要将源文件分割成多个文件。例如,对于一本书或论文,通常会有一个”主”/”根”文件,然后每章一个源文件(对于书或论文),或每个重要章节一个源文件(对于长文章)。

结构化源文件

LaTeX 允许我们以可控的方式分割源文件。有两个重要的命令:\input\include。我们可以使用\input让一个文件”就像它被输入在这里一样”工作,所以它可以用于(基本上)任何材料。\include命令只能用于章节:它开始新的一页并进行一些内部调整。但它有一个很大的优势:它允许我们选择性地包含章节,所以你可以处理文档的一部分而不是整个文档。

因此,一个较长的文档可能看起来像这样:

% !TEX program=lualatex

\documentclass{ctexbook}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\title{一本示例书}
\author{约翰·多伊 \and 乔·布洛格斯}

\IfFileExists{\jobname.run.xml}
{
\includeonly{
  front,
%  chap1,
  chap2,
%  append
  }
}
{
% 初始时做一个完整的文档以生成
% 所有的辅助文件
}

\begin{document}
\frontmatter
\include{front}

% =========================
\mainmatter
\include{chap1}
\include{chap2}
\appendix
\include{append}

% ========================
\backmatter
\printbibliography
\newpage
\input{backcover}
\end{document}

我们将在下面查看这个文件的各个方面。(各个支持文件在本页底部。)

使用\input

\input命令适用于不是独立章节的长文件的部分。在示例中,我们用它来分离出前封面和后封面,保持主文件简短明了,同时也意味着我们可以在另一个文档中重用这些封面。我们也用它来处理文档开头的”非章节”部分:像前言这样的内容。这同样是为了帮助保持主文件清晰。

使用\include\includeonly

\include命令适用于章节,所以我们对每个完整的章节都使用了它;它总是开始新的一页。我们已经使用\includeonly选择了实际要排版的章节,如你所见,它接受一个逗号分隔的文件名列表。当你使用\includeonly时,你可以缩短排版时间并生成一个用于校对的”选择性”PDF。此外,\includeonly的关键优势是 LaTeX 将使用其他包含文件的.aux文件中的所有交叉引用信息。

创建目录

\tableofcontents命令使用章节命令中的信息来填充目录。它有自己的辅助文件,扩展名为.toc,所以你可能需要运行 LaTeX 两次来解析信息。目录是自动从章节标题生成的。还有类似的命令用于\listoffigures\listoftables,它们分别从浮动环境的标题工作,并使用扩展名为.lof.lot的文件。

将文档分成部分

\frontmatter\mainmatter\backmatter命令影响格式。例如,\frontmatter将页码改为罗马数字。\appendix命令将编号改为AB等,所以例如在\appendix之后的第一章中,页眉显示”附录A”。

练习

尝试演示文档的基本结构,尝试添加和删除\includeonly的条目,看看效果。

添加一些浮动体并生成图表和表格列表。如果使用本地安装的 LaTeX,你能看到需要多少次 LaTeX 运行吗?(在线系统在”幕后”重新运行 LaTeX,所以额外需要的运行不那么明显。)


front.tex

\input{frontcover}
\maketitle
\input{dedication}
\input{copyright}
\tableofcontents
\input{pref}

pref.tex

\chapter{前言}
前言文本。参见\cite{doody}。

chap1.tex

\chapter{引言}
第一章文本。

chap2.tex

\chapter{其他内容}
第二章文本。

append.tex

\chapter*{附录}
第一个附录文本。

frontcover.tex

\begin{center}
前封面
\end{center}

dedication.tex

\begin{center}
\large
献给 \ldots
\end{center}

copyright.tex

\begin{center}
版权所有 2020 learnlatex。
\end{center}

backcover.tex

\begin{center}
后封面
\end{center}