有没有办法将块内的所有文本累积verbatim
到外部文件中?
我知道这个包extract
,但它似乎正在积累环境\begin{verbatim}
和\end{verbatim}
语句以及内容,这是我想避免的。
我也尝试过关注这个问题这里并写了这段代码
\def\mycode{}
\let\oldverbatim\verbatim
\let\oldendverbatim\endverbatim
\RenewEnviron{verbatim}{%
\def\xBODY{\expandonce\BODY}%
\xappto\mycode{\xBODY^^J}
\oldverbatim
\BODY
\oldendverbatim}
但它给了我太多Undefined control sequence
我不太明白的错误。
答案1
这是一个使用该包的简单解决方案filecontentsdef
。
我们定义一个新环境,它首先使用collectverb
将环境主体读入宏。然后将内容写入输出文件,之后打印在文档中。对于代码的排版,使用标准环境的内部宏,因此结果应该与您当前的输出相同。\collectverb@tl
\filecontentsdefmacro
\collectverb@out
verbatim
完整示例:
\documentclass{article}
\usepackage{filecontentsdef}
\makeatletter
\newwrite\collectverb@out
\immediate\openout\collectverb@out=\jobname-verb.tex
\newenvironment{collectverb}{%
\begingroup
\filecontentsdefmacro\collectverb@tl
}{%
\endfilecontentsdefmacro
\endgroup
\immediate\write\collectverb@out{\collectverb@tl}%
%
\let\@xverbatim=\relax
\@verbatim
\begingroup
\lccode`\~=`\ %
\lowercase{\endgroup\def~}{\ }%
\collectverb@tl
\endverbatim
}
\AtEndDocument{\immediate\closeout\collectverb@out}
\makeatother
\begin{document}
Some text ...
\begin{collectverb}
\documentclass{article}
\usepackage{xcolor}
\end{collectverb}
... more text ...
\begin{collectverb}
\begin{document}
\textcolor{blue}{Hello world!}
\end{document
\end{collectverb}
... and even more text.
\end{document}
创建文件
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\textcolor{blue}{Hello world!}
\end{document
和印刷品
答案2
利用该scontents
包您可以用非常简单的方式完成此操作:
\documentclass{article}
\usepackage[store-env=collectverb]{scontents}
\begin{document}
Some text ...
\begin{scontents}[write-env=file.txt]
\documentclass{article}
\usepackage{xcolor}
\end{scontents}
\typestored[1]{collectverb}
... more text ...
\begin{scontents}[write-env=file2.txt]
\begin{document}
\textcolor{blue}{Hello world!}
\end{document}
\end{scontents}
\typestored[2]{collectverb}
... and even more text.
\end{document}