我正在编写包含数学/图表/图解/代码等的技术文档。我想将它们编译成一个文档,并且必须能够独立运行每个文档。这些属于每个主题的技术文档都在各自的文件夹中。有人可以指导我如何更好地管理它并使其可移植吗?就像我在 Mac OSX/MS Windows 上处理相同的文档一样。
答案1
如果我理解问题正确,那么解决方案可能是使用包subfiles
。
假设这main.tex
是您的主文件,并且file1.tex
、file2.tex
和file3.tex
是您想要包含的文件。那么您的主文档将如下所示:
主文本:
\documentclass[a4paper]{article}
<your preamble>
\usepackage{subfiles}
\begin{document}
\subfile{file1}
\subfile{file2}
\subfile{file3}
\end{document}
你可以把文本放在任意位置,就像使用\include
或\input
代替 一样\subfile
。 的内容file1.tex
看起来会像这样
文件1.tex
\documentclass[main.tex]{subfiles}
\begin{document}
<your document goes here>
\end{document}
相同的结构应该适用于文件file2.tex
和file3.tex
。
现在,当你编译main.tex
文件的内容时,也就是我所指出的<您的文档放在这里> 将包含在您的文档中,并且如果您编译,比如说file1.tex
,那么的内容file2.tex
将被编译,就好像它具有的文档类规范和序言一样main.tex
。
因此,现在项目中的所有文件都可以单独编译,但要编译其中一个子文件,则需要将其放在main.tex
同一个目录中。
软件包的文档和安装
我不确定它是否subfiles
作为标准软件包提供。对我来说它不是,所以这取决于你安装软件包的经验,我想说的是,这些软件包可以在以下位置找到:
http://www.ctan.org/tex-archive/macros/latex/contrib/subfiles/
其中还包含软件包的文档,即 pdf 文档subfiles.pdf
。如果您不知道如何处理.ins
和.dtx
文件,那么这里有一个小指南
http://en.wikibooks.org/wiki/LaTeX/Packages/Installing_Extra_Packages
如果您愿意,您可以将构建包时生成的文件subfiles.cls
和放在与 相同的目录中,这样您就不需要依赖于下一个需要编译文件的系统是否安装了该包。subfiles.sty
main.tex
subfiels
编辑
回答
我有三级目录,1 - 顶层目录包含 rootfile.tex,2- 章节目录包含每章的主文件,3- 节目录包含该章的实际内容。我使用 \include{./Sections/part1} 在 2 中实例化 3。如何使用子文件管理这样的系统? – avlsi
假设你有文件
./rootfile.tex
./chapter/chap1.tex
./chapter/chap1/section1.1.tex
./chapter/chap1/section1.2.tex
./chapter/chap2.tex
./chapter/chap2/section2.1.tex
./chapter/chap2/section2.2.tex
./chapter/chap3.tex
./chapter/chap3/section3.1.tex
./chapter/chap3/section3.2.tex
并且您想要将文件sectionX.1.tex
和包含sectionX.2.tex
在 X=1,2 的文件中chapX.tex
,并且仍然能够编译您的部分文件、章节文件和根文件。这可以通过让您的文件看起来像这样来实现:
根文件.tex:
\documentclass[a4paper]{article}
<your preamble>
\usepackage{subfiles}
\def\dirlevel{../}
\begin{document}
\def\dirlevel{}
\subfile{./chapter/chap1}
\subfile{./chapter/chap2}
\subfile{./chapter/chap3}
\end{document}
chapX.tex:
\documentclass[./../rootfile.tex]{subfiles}
\begin{document}
\subfile{./\dirlevel chap/chapX/sectionX.1}
\subfile{./\dirlevel chap/chapX/sectionX.2}
\end{document}
部分X.Y.tex:
\documentclass[./../../rootfile.tex]{subfiles}
\begin{document}
<your section goes here>
\end{document}
诀窍是,\def\dirlevel{}
仅当您编译时才会读取rootfile.tex
,而\def\dirlevel{../}
无论您编译哪个文件,都会读取,因此无论您编译哪个文件,LaTeX 仍然能够找到您的文件。