提供 MWE 的好助手—— filecontents 环境

前言

LaTeX\LaTeX 的学习当中,不可避免地要提问、解答问题,这时候一个好的 MWE 是非常重要的,而 filecontents 环境能对提供 MWE 产生极大的便利。

介绍

均为机翻

texdoc source2e

filecontents 环境用于将包、选项或其他文件的内容与文档一起传递到单个文件中。它有一个参数,即要创建的文件的名称。如果该文件已经存在(如果操作系统支持“当前目录”或“默认目录”的概念,则可能只存在于当前目录中),那么什么也不会发生(一条信息消息除外),并且环境主体将被绕过。否则,环境的主体将逐字写入作为第一个参数提供的文件名,并附带一些关于如何生成它的注释。

环境也可以用一个可选的参数来调用,用来改变它的一些行为:选项 forceoverwrite 将允许覆盖现有的文件,选项 nosearch 将只检查当前目录时查找文件是否存在。如果您希望为 TeX\TeX 的 search tree 中已经存在的某个文件生成一个本地(修改后的)副本,那么这将非常有用。最后,您可以使用 nopremable 防止它在文件的顶部编写标准的简介(这实际上与使用环境的星型形式相同)。

现在允许该环境在文档中的任何位置,但是为了确保在文档运行时所有必要的包或选项可用,通常最好将其放在文件的顶部(在 \documentclass 之前)。在文档主体中使用它的一个可能的用例是,如果您希望在文档中多次重用某些文本,那么您可以编写它,然后在需要时使用 \input 检索它。

开始和结束标记应该各自在一行上。

texdoc latex2e

filecontents:写一个外部文件

概要:

\begin{filecontents}{filename}
text
\end{filecontents}

或者

\begin{filecontents*}{filename}
text
\end{filecontents*}

创建一个名为 filename 的文件,并用 text 填充它。环境 filecontents 的未加星号的版本在创建的文件内容前加上一个头;参见下面的示例。加星号的版本 filecontents* 不包含头。

这种环境可以在序言中的任何地方使用,尽管它经常出现在 \documentclass 命令之前。通常在源文件需要非标准样式或类文件时使用。环境将把该文件写到包含源文件的目录中,从而使源文件自包含。另一种用法是在文件中包含 bib 引用,同样使其自包含。

该环境检查该名称的文件是否已经存在,如果存在,则不执行任何操作。有一个 filecontents 宏包,它重新定义了 filecontents 环境,这样它就不会在这种情况下什么都不做,而是会覆盖现有的文件。

例如,这个文档

\documentclass{article}
\begin{filecontents}{JH.sty}
\newcommand{\myname}{Jim Hef{}feron}
\end{filecontents}
\usepackage{JH}
\begin{document}
Article by \myname.
\end{document}

生成此文件 JH.sty

%% LaTeX2e file ‘JH.sty’
%% generated by the ‘filecontents’ environment
%% from source ‘test’ on 2015/10/12.
%%
\newcommand{\myname}{Jim Hef{}feron}

探索出的结论

filecontents 环境生成文件的编码,与「使用 filecontents 环境的代码所在的文件编码」一致。

文章作者: sikouhjw
文章链接: https://sikouhjw.github.io/2020/07/13/2020-07-13-filecontents/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 sikouhjw.github.io
支付宝捐赠
微信捐赠