catchfilebetweentags 有哪些替代方案?

catchfilebetweentags 有哪些替代方案?

我希望能够拥有可以自行编译的文件chapter1.tex、等(带有序言)以及收集各章节实际内容的文件。chapter2.texallChapters.tex

到目前为止,我已经能够使用该软件包做到这一点catchfilebetweentags

但是,看起来该包catchfilebetweentags与该包有冲突verbatim

有没有可以替代 catchfilebetweentags 的方法来实现我最初的目标?

答案1

我知道有两个软件包可以做到这一点,它们是软件包subfilesstandalone软件包。我最喜欢的是子文件,但每个文件都使用主前言,因此如果您想要每个文件都有单独的前言,您可能需要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 的答案并使用standalonesubfiles

相关内容