LaTeX多文件项目

LaTeX 大型文档通常使用多文件方法用于组织项目文件,以方便快速定位、修改。一般来说,建议使用subfiles宏包来组织多文件的大型文档,简单易用。 standalone宏包则可以用来编制会议论文集,每篇文章都使用独立的导言区,以避免自定义命令冲突。

subfiles宏包

主文件

主文件与普通LaTeX差不多。只是需要引用subfiles宏包,使用subfile命令导入子文件。

main.tex 主文件
1
2
3
4
5
6
7
8
9
10
11
12
13
\documentclass{main}
\usepackage{subfiles} % 尽量置于导言区的最后
\graphicspath{{contents/images/}}

\title{文档标题}
\author{作者}
\date{}

\begin{document}
\maketitle
\subfile{contents/chp-01} % 导入第一章
\subfile{contents/chp-02} % 导入第二章
\end{document}

子文件

子文件使用subfiles文档类,并以选项形式指定主文档,注意主文档名必须包含扩展名。子文件将自动导入主文件的导言区内容,保证了所有子文件独立编译时具有相同外观和风格。

章子文件

章子文件
1
2
3
4
5
6
7
8
9
10
11
% contents/chp-01.tex 第一章
\documentclass[../main.tex]{subfiles} % 使用 subfiles 文档类,指定主文档
\graphicspath{{images/}}
\begin{document}

\chapter{第一章}
这是第一章的内容
\subfile{chp-01/sec-01.01}
\subfile{chp-01/sec-01.02}

\end{document}

节子文件

节子文件类似章子文件,只是需要注意是指定主文档的路径是否正确.

节子文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
% contents/chp-01/sec-01.01.tex 第一章第一节
\documentclass[../../main.tex]{subfiles}
\graphicspath{{\subfix{../images/}}} % 指定图片目录,后续可以直接使用图片文件名。
\begin{document}
\section{第一章第一节}
这是第一章第一节的内容
\begin{figure}[h]
\centering
\includegraphics{img-01.01}
\label{fig:img-01.01}
\caption{图片标题}
\end{figure}
其他内容
\end{document}

standalone宏包

standalone 宏包提供了类似的功能,更加灵活,可以指定子文件使用独立的导言区,但更加容易出错。

主文件

类似的,主文件与普通LaTeX文件也差不多。需要引用standalone宏包,并使用import宏包的命令导入子文件。

主文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
% main.tex
\documentclass{main}
\usepackage[subpreambles=true]{standalone} % 启用 standalone 宏包,subpreambles=true 启用独立导言区
\usepackage{import}

\title{文档标题}
\author{作者}
\date{ }

\begin{document}
\maketitle
\import{contents}{chp-01} % 导入第一章
\import{contents}{chp-02} % 导入第二章
\end{document}

子文件

子文件使用standalone文档类,通过选项指定引用的实际文档类。

章子文件

章子文件
1
2
3
4
5
6
7
8
9
10
11
12
% contents/chp-01.tex 第一章
% 使用 standalone 文档类
% class=main 指定实际使用的文档类 main.cls,也可以指定其他文档类
% crop=false 表示使用原始页面大小不剪裁页边空白
\documentclass[class=main,crop=false]{stanalone}
\usepackage[subpreambles=true]{standalone}

\begin{document}
这是第一章的内容
\subimport{chp-01}{sec-01.01}
\subimport{chp-01}{sec-01.02}
\end{document}

节子文件

节子文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
% contents/chp-01/sec-01.01.tex 第一章第一节
\documentclass[class=main,crop=false]{stanalone}
\graphicspath{{\subfix{../images/}}} % 指定图片目录,后续可以直接使用图片文件名

\begin{document}
这是第一章第一节的内容
\begin{figure}[h]
\centering
\includegraphics{img-01.01}
\label{fig:img-01.01}
\caption{图片标题}
\end{figure}
其他内容
\end{document}

详细说明文档

本文仅简单介绍了多文件的组织方法,交叉引用、文献等请详细阅读上述宏包相关说明文档。