阻止 LaTeX 意外处理输入文件

阻止 LaTeX 意外处理输入文件

我有几个文件,其中包含我正在处理的一系列文档的通用定义。很多时候,当我修改仅用于包含的文件(而不是独立文档)时,我会本能地告诉 emacs 编译它。这会产生错误,并留下 .out 和 .log 文件,我必须清理它们。

是否有某种方法可以在文件开头放置一个“包含块”,以告诉 LaTeX 如果将当前文件作为基础文档进行处理则静默停止?

答案1

定义应该放在一个.sty文件中,这也使得这个测试更容易一些。

如果mydefs.sty

\makeatletter
 \ifx\@currname\@empty\expandafter\@@end\fi

\def\zz{zzz}

那么顶层的处理就没什么用了:

$ pdflatex mydefs.sty
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./mydefs.sty
LaTeX2e <2017/01/01>
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
 )
No pages of output.
Transcript written on mydefs.log.

但可以照常将其作为一个包使用:

\documentclass{article}
\usepackage{mydefs}

\begin{document}

\zz

\end{document}

在此处输入图片描述

答案2

我找到了另一种方法,与@David 发布的方法非常相似,将以下内容放在输入文件的开头:

\ifx\indocument\undefined
\stop
\fi

然后在文档中输入

\def\indocument{}

在 \input 之前。这本质上是相同的答案,只是不使用包处理基础设施。

相关内容