定义将内容写入外部文件的宏

定义将内容写入外部文件的宏

我想编写一个有两个参数的宏,filenamecontent。这个宏(我们称之为\mywrite)将写入contentfilename用法如下:

\mywrite{testfile.tex}{Hello, world!}

它还能够处理 TeX 命令,例如:

\mywrite{testfile.tex}{%
\begin{itemize}
\item First item
\end{itemize}
}

的内容testfile.tex将是完整的逐项环境。

我尝试过使用变体fancyvrbfilecontents直接使用\write命令但都无济于事。

这可能吗?

我的目标(不管它值不值)是能够将内容写入外部文件,然后从当前文件内部再次调用该文件。

答案1

在使用之前,您需要使用和\write打开一个文件。在宏中执行所需操作的一种方法是:\newwrite\openout

\documentclass{article}

\newwrite\mywriter% create a file handle
\newcommand\mywrite[2]{%
  \immediate\openout\mywriter=#1% set the file name and open for writing
  \immediate\write\mywriter{\unexpanded{#2}}% write without expanding
  \immediate\closeout\mywriter% close file
}

\begin{document}

\mywrite{testfile.tex}{
  \begin{itemize}
  \item First item
  \end{itemize}
}

\end{document}

VerbatimOut但这可能不是你想要的,因为它忽略了换行符。更好的方法是使用幻想VRB包裹:

\documentclass{article}

\usepackage{fancyvrb}

\begin{document}

\begin{VerbatimOut}{testfile.tex}
  \begin{itemize}
  \item First item

  \item Second
  \end{itemize}
\end{VerbatimOut}

\end{document}

这两种方法都不允许您附加到文件,但如果您要向给定文件写入大量材料,那么像这样的宏/环境可能不是您真正想要的。

相关内容