我有几个文件,其中包含我正在处理的一系列文档的通用定义。很多时候,当我修改仅用于包含的文件(而不是独立文档)时,我会本能地告诉 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 之前。这本质上是相同的答案,只是不使用包处理基础设施。