我正在写一篇论文,它有 5 个部分。我的导师想单独编辑这些部分,但不想像当前格式那样将它们放在一个文件中。我被要求创建
- 一个主文件,例如名为
main.tex
包含所有命令和包等和标题的文件。 该主文件有输入命令,例如,
\input{intro.tex} \input{section1.tex} \input{section2.tex}
这个想法是将每个部分放在.tex
同一个文件夹中的单独文件中,并以单个 PDF 文件作为输出。我听说这样做的主要优点是允许为每个部分获取一个令牌。
现在我完全不知道这一切意味着什么,也不知道该怎么做,并被告知要自己解决。如果能得到一些关于如何做到这一点的帮助,我将非常非常感激。
答案1
使用 LaTex 拆分文件基本上有两种方法:使用\include
和使用\input
。
让我们从 开始\input
。当 LaTeX 读取blah.tex
并遇到时\input{blurb.tex}
,它会暂停处理blah.tex
并开始读取blurb.tex
——完成后它会再次返回blah
,直到完成。所以基本上你可以简单地“切出”任何你想放在“主”文件中的内容,并将其粘贴到子文件中,然后用 读入\input{}
。这为你提供了一种模块化形式。它的关键问题是每次在处理文档时,LaTeX 会经历这样的“读入”过程:因此,尽管你的文件是模块化的,但排版过程实际上不是:LaTeX 每次都会经历所有内容。
当然,这可能会让您思考:假设我将文档拆分如下:
\documentclass{book}
\begin{document}
\input{chapter1.tex}
\input{chapter2.tex}
\end{document}
现在,如果我注释掉其中一行输入,我就可以得到just
第 1 章或just
第 2 章的简短副本。
问题是这些章节通常会包含诸如交叉引用标签、目录条目或图号之类的内容,您需要在其他地方引用它们。这就是稍微“聪明”的系统\include{filename}
发挥作用的地方:它允许您保存和使用这些子文件生成的脚手架的片段,而无需实际排版它们,而是用来\includeonly{}
告诉 LaTeX 要排版哪些文件。不过,它在某些方面更加有限,并且就目前而言,假设它实际上只适用于非常长的文档(我们说的是书籍或论文长度,而不是文章长度),您不仅希望一次只编辑部分文件,而且还希望控制每次运行时排版的内容。
因此,您的顾问所建议的实际上是对您想要的内容的非常准确的描述。在一个简单的项目中,您最好坚持使用\input
而不是使用\include
。主.tex
文件(您可以随意命名)将设置“公共部分”,如序言,它将指定您想要的包、标题、目录(如果有的话),也许还有参考书目。但是每个部分的内容都将放在单独的文件中。您的主文件将在\input{}
每个子文件中都有您需要它们的位置。要排版,您将使用pdflatex main
,当 LaTeX 浏览时,它会根据需要暂停并吸收子文件中的内容。
因此,最小示例如下:
主文本
\documentclass{article}
\usepackage{lipsum}% and/or whatever
\title{Modular Papering}
\author{Mo Module}
\begin{document}
\maketitle
\input{sectiona.tex}
\input{sectionb.tex}
\end{document}
节选.tex
%NOTE: NO preamble or documentclass -- this is just being "read in"
\section{Section A}
\lipsum % Will work because I loaded the package in the preamble
第b节.tex
%NOTE: NO preamble or documentclass -- this is just being "read in"
\section{Section B}
\lipsum
并且只pdflatex main
获取完整的文档,包括标题和两个部分。所有实际编辑工作可能都将在这些子文件上完成。
正如评论中指出的那样,您可以通过在线搜索找到一些很好的资源。评论中指出的两个给出特别清晰解释的资源是https://en.wikibooks.org/wiki/LaTeX/Modular_Documents和何时应使用 \input 和 \include?
编辑添加:我不知道你被告知的“令牌”是什么,但我猜它们就像单轨铁路列车的“令牌”——一个人可以编辑一个部分,而另一个人可以编辑另一个部分,而不会发生碰撞!也许这是一种稍微基本的版本控制方法!但将内容拆分成相当小的文件的一个优点肯定是它可以保持版本控制整洁。