自定义格式文件和子文件

自定义格式文件和子文件

我想使用自定义格式文件来加快编译速度。但是这不能与子文件包裹。

考虑以下最小示例:

preamble.tex

\documentclass[a4paper,12pt]{article}

\usepackage{subfiles}
\usepackage{lipsum}

%%further packages and custom commands

从此我可以使用创建自定义格式

pdflatex -ini -jobname="preamble" "&pdflatex preamble.tex\dump"

其他文件包括:

main.tex

\begin{document}

Here are the contents of my subfile:

\subfile{sub}

\end{document}

通过以下方式编译此作品:

pdflatex -fmt preamble main.tex

sub.tex

\documentclass[main]{subfiles}

\begin{document}

\lipsum

\end{document}

但是通过编译

pdflatex -fmt preamble sub.tex

不起作用并给出错误消息:

! LaTeX Error: Two \documentclass or \documentstyle commands.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.1 \documentclass[main]{
                         subfiles}
? 

我怎样才能让它工作?

答案1

pdflatex -fmt 序言 sub.tex

错误是不言而喻的:通过这种方式,您提供了两个,这与留给要替换的类(在本例中不存在)的文档类\documentclass不同。这与用此编译单个文件相同subfilemain.tex错误的代码:

\documentclass[a4paper,12pt]{article}
\usepackage{subfiles}
\usepackage{lipsum}
\documentclass[main]{subfiles}  
\documentclass{article}
\begin{document}
\lipsum[1]
\end{document}

可能的解决方案:

1) 留\documentclassmain.tex。那么,问题将是 中preamble.tex\usepackage必须使用的命令 (main.tex的\documentclass),而不是之前。幸运的是,这个命令可以用 代替\RequirePackage。因此,这preamble.tex将产生一个工作 preamble.fmt

\RequirePackage{subfiles}
\RequirePackage{lipsum}
%%further packages and custom commands

那么应该main.tex是:

\documentclass[a4paper,12pt]{article} % 
\begin{document}
Here are the contents of my subfile: 
\subfile{sub}
\end{document}

2) 或者,如果某些代码有问题,请放弃使用非预编译的前导码(融合main.tex 或包含在内 \input{preamble})。

3) 如果预编译前言不可或缺(=明显渗透),那么在出现问题时,我猜应该可以混合使用这两种方法(即,预编译/文档前前言加上带有问题代码的传统非预编译/文档后前言)。然而,这看起来像是典型的情况,我很遗憾忽略了 KISS 原则(“保持简单,傻瓜”)。

答案2

尝试将 docmute 包添加到前言格式文件(而不是子文件)中,并在子文件中添加常规文章类。问题是 latex 只允许每个文档有一个文档类,而你在子文件中添加了第二个文档类;docmute 重新定义了 documentclass 命令和文档环境,因此忽略了所包含文件的前言。因此,使用 docmute 和标准包含应该可以解决问题

答案3

我会用两个格式文件来做这件事,一个带有subfiles文档类,另一个带有article。正如错误消息所说,您不能documentclass在单个文件中有两个语句 - 自定义格式文件中有一个语句才算数!

相关内容