我们都知道filecontents.sty
可以做
\documentclass{article}
\usepackage{filecontents}
\begin{document}
Hello World
\begin{filecontents}{dummy.txt}
No one will read this if I don't use it elsewhere
\end{filecontents}
\end{document}
但由于filecontents.sty
的代码是相当先进的化学,我不明白它如何阻止包括No one will read this if I don't use it elsewhere
。
答案1
环境的基本工作方式filecontents
与以下相同verbatim
:每个字符都可打印,并且行尾字符处于活动状态,以便 LaTeX 可以定义它来界定将是整行输入的参数。
首先,环境检查指定的文件是否已经存在,在这种情况下,除了丢弃之前的所有内容外,不做任何其他事情\end{filecontents}
。否则,它会打开一个输出流并写入一些信息行(这被抑制了)\begin{filecontents*}
。
然后,它按照上面粗略解释的那样一次读取一行;如果这一行结果是\end{filecontents}
(或\end{filecontents*}
对于变体环境),则写入流关闭,否则该行将写入输出文件。
软件包文档中概述了一种可能更有效的策略,其中显示了verbatim
可能的环境的定义。我在我的软件包中使用了相同的策略。verbatimwrite
abc