我们是一个由 12 人组成的团队,计划撰写一篇 50 页的论文。论文将分为几章。通常,每章最多由 2 到 3 个人撰写。
当每个人都在我们的 VCS 中编辑和提交一个大文件时,会产生问题。我想把它分成几个文件并输入。它工作得很好,但仍然被迫编译整个文档。我可以教育人们使用,\includeonly
但我们真的想使用输入并不是包括。
为了缓解这个问题,我想到了一个主意,即为每一章添加一个额外的“引导”文件,它的作用与“主”文件相同,但只针对特定章节。它确实有效,但似乎有点麻烦……
你对此有何感受?你会如何处理这样的用例?
答案1
正如一些人指出的那样,将所有预工厂材料放入单独的序言中很有用。我通常会制作一个自定义类包含所有必需的包、格式信息等。
将每个章节写成一个完全独立的文档,然后——正如 Martin Scharrer 指出的那样——您可以使用以下软件包之一来直接\input
在主文档中使用这些章节:
docmute
:一个最小软件包,提供的内容足以让您在主文档中包含独立的章节。combine
:一组更全面的类和包,用于合并会议论文集。提供更多处理标题和参考书目的功能。standalone
:当用作包时,其工作原理非常相似,docmute
但提供更多功能,例如standalone
裁剪输出的类。subfiles
:功能类似,docmute
但需要稍微修改使用格式(\subfile{}
而不是\input{}
等)
这个类myclass.cls
看起来应该是这样的:
\ProvidesClass{myclass}[2012/06/01 v1 Custom class for ... project]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrbook}}% or whatever
\ProcessOptions\relax
\LoadClass{scrbook}
% Include whatever packages you need here...
% Use either one of these:
\RequirePackage{standalone}
%\RequirePackage{docmute}
现在您的章节看起来和表现起来就像是独立的文档:
\documentclass{myclass}
\begin{document}
\chapter{First Chapter}
Here is the first chapter
\end{document}
并且你的主文件可以输入这些
\documentclass{myclass}
\begin{document}
\input{chapter1.tex}
\input{chapter2.tex}
\end{document}
这些包修改了外部,document
使得内部\documentclass
和document
各\input
章中的环境均不受任何影响。
答案2
在 ConTeXt 中您可以创建一个环境文件(布局)和几个成分(各个章节)。组件与环境相链接。这样,您可以编译一个章节、其中的部分内容或整个文档。
详细信息请参阅ConTeXt wiki - 项目结构或项目结构手册。
以下是该结构的示例:
% file: introduction.tex
\startcomponent introduction
\project paper
\startchapter [title=Introduction]
\stopchapter
\stopcomponent
% file: theory.tex
\startcomponent theory
\project paper
\startchapter [title=Theory]
\stopchapter
\stopcomponent
% file: main.tex
\startproduct main
\project paper
\component introduction
\component theory
\stopproduct
% file: environ.tex
\startenvironment environ
\setupbodyfont [palatino]
\stopenvironment
% file: project.tex
\startproject project
\environment environ
\stopproject
项目文件是一种收集常见包含内容的方法:它使用 链接到环境文件\environment
,以便\startproduct
和\startcomponent
块可以\project
同时包含项目的所有环境文件。如果需要,您也可以始终直接在文件中包含环境文件。
使用此设置,您可以用 编译各个章节,context introduction…
用 编译整个文档context main
。