課程 十三

長文件結構

本課展示了如何將 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}