我希望能够拥有可以自行编译的文件chapter1.tex
、等(带有序言)以及收集各章节实际内容的文件。chapter2.tex
allChapters.tex
到目前为止,我已经能够使用该软件包做到这一点catchfilebetweentags
。
但是,看起来该包catchfilebetweentags
与该包有冲突verbatim
。
有没有可以替代 catchfilebetweentags 的方法来实现我最初的目标?
答案1
我知道有两个软件包可以做到这一点,它们是软件包subfiles
和standalone
软件包。我最喜欢的是子文件,但每个文件都使用主前言,因此如果您想要每个文件都有单独的前言,您可能需要standalone
。我将对两者进行描述。
独立包
使用此包,项目中的每个文件都必须能够单独工作,因此它的名称为“standalone”。它有一个用于插入文件的默认命令,\input{}
但它要求每个文件都位于同一目录中,这很快就会变得难以控制,所以我强烈建议您也使用该import
包。下面是语法示例,它不是 MWE。
\documentclass{article}
\usepackage[subpreambles=true]{standalone}
\usepackage{import}
\begin{document}
Hi, this is not a MWE, just an example of the syntax the standalone package uses.
I did that because it requres multiple files.
\import{directory}{filename}
\end{document}
子文件包
在这个我更喜欢的包中standalone
,文档彼此并不独立。子文件使用主文档的序言。这个包有一个问题:主文件必须命名为main.tex
,如果要嵌套子文件,每个嵌套的主文件也必须命名为main.tex
,如果您没有适当地命名目录,这可能会造成混淆。下面是语法示例,它不是 MWE。
\documentclass{article}
\usepackage{subfiles}
\begin{document}
Hi, this is not a MWE, just an example of the syntax the subfiles package uses.
I did that because it requires multiple files.
\subfile{directory/filename}
Note that each subfile must start with \documentclass[../main.tex]{subfiles}.
If you nest subfiles, add a .. to the begining of the argument for each level of nesting.
\end{document}
答案2
如果您按章节构建文档,则使用\include
和\includeonly
。您将始终编译main.tex
,但可以通过 控制\includeonly
实际排版的章节。在此解决方案中,只有一个前言(在 中main.tex
)用于所有运行。
% main.tex
\documentclass{article}
\includeonly{chapter1,chapter4}
% ... preamble with definitions and \usepackages
\begin{document}
\include{chapter1}% will be included
\include{chapter2}% will be skipped
\include{chapter3}% will be skipped
\include{chapter4}% will be included
\end{document}
%chapter1.tex
\chapter{My first chapter}
Text of first chapter.
%chapter2.tex
\chapter{My second chapter}
Text of second chapter.
% and so on ...
David Carlisle 提出的解决方案
% allChapters.tex
\documentclass{...}
% ... preamble for allChapters
\begin{document}
\input{chapter1}
\input{chapter2}
\input{chapter3)
\end{document}
% chap1.tex typesets only chapter1.tex
\documentclass{...}
% ... preamble for chapter1.tex
\begin{document}
\input{chapter1}
\end{document}
David 的解决方案采用共享序言
% mypreamble.tex
% ... all the definitions and \usepackages
% allChapters.tex
\documentclass{...}
\input{mypreamble} % load the common preamble
\begin{document}
\input{chapter1}
\input{chapter2}
\input{chapter3)
\end{document}
% chap1.tex typesets only chapter1.tex
\documentclass{...}
\input{mypreamble} % load the common preamble
\begin{document}
\input{chapter1}
\end{document}
当文件位于不同的目录中、当章节文件有进一步的子文件等时,该怎么办?
在这种情况下,使用@Will 的答案并使用standalone
或subfiles
。