使用“extract”包防止递归提取

使用“extract”包防止递归提取

我正在尝试使用该extract包来保存文档的某些部分,稍后我想在最后重复这些部分作为摘要。

我遇到了一个递归问题:如果我将提取的输出包含在同一个文档中,那么回显的内容将再次被提取,从而导致无限递归。如果我先复制上一个提取文件并仅包含副本,那么每次运行 latex 时,我得到的提取文件仍然会越来越大。

所以我真正需要的是extract一种在文档主体结束后告知禁用的方法。extractskip环境似乎没有帮助,因为它在每次运行时仍会被解析:

\documentclass{article}

\usepackage{verbatimcopy}
%% "touch foo.ext" before first use
\VerbatimCopy{foo.ext}{foo-final.ext}
\usepackage[active,generate=foo.ext,header=false,handles=false,copydocumentclass=false,extract-env=foo]{extract}

\newenvironment{foo}{}{}

\begin{document}

\begin{foo}abc\end{foo}
\begin{foo}def\end{foo}
\begin{foo}xyz\end{foo}

\section*{Summary of Foo}

\input{foo-final.ext}  %% boom

\end{document}

我目前\IfFileExists只在第一次运行期间启用提取,但这种方法不太好用,因为如果提取的内容发生任何变化,您都需要手动删除提取文件。有没有办法在一次运行内自动停止提取?

答案1

下面有点破坏性的做法:在你的总结之前,用extract一个空命令替换用来写入文件的命令。

梅威瑟:

\documentclass{article}
\usepackage{verbatimcopy}
\VerbatimCopy{foo.aux}{foo-final.aux}
\usepackage[active,generate=foo.aux,extract-env=equation,header=false,handles=false,copydocumentclass=false]{extract}

\begin{document}
The following text should be extracted:
\begin{equation}
x+3=y
\end{equation}

\begin{equation}
x+4=z
\end{equation}

\newcommand{\exignore}[1]{}
\makeatletter
\def\XTR@writeout{\exignore}   % cf. extract.sty v1.8 line 82
\makeatother
\section{Summary of Foo}
\input{foo-final.aux}  
\end{document}

相关内容