如何将环境主体附加到输出文件?

如何将环境主体附加到输出文件?

我想定义一个可以作为其主体扩展的环境,该环境可以包含大多数任意内容,还可以将其主体(具有一些可预测的扩展级别)附加到文件中。(最后的动机。)

M(非)WE:

\documentclass[12pt]{article}
\usepackage{environ}

\newwrite\Mine
\immediate\openout\Mine=\jobname.mine

\NewEnviron{MyEnv}{
  \immediate\write\Mine{\BODY}
  \BODY
}

\begin{document}
\begin{MyEnv}
Some Stuff that \emph{might} have \textbf{some} markup
and newlines\footnotes{And maybe other things.}.
\end{MyEnv}
\end{document}

这次失败似乎\immediate\write\Mine{\BODY}破坏了其后所有事物的内部细节。


  • 在我的例子中,主体内容是构成合理列表项的内容,并且将大多冗长的言辞(您可以轻松大声朗读的内容),但我想获得尽可能不受限制的解决方案。
  • 我不在乎很多关于结果进入文件之前的扩展级别。我期望在 LaTeX 之外进行一些后期处理,这需要生成或多或少与从环境扩展到 PDF 的内容中复制/粘贴到文本文件中的文本相同。(例如,我可以容忍显示\footnote{...}扩展或数字,但我宁愿不让它的主体在没有标记的情况下内联显示。我有点喜欢\nameref{...}工作,但我可以没有它,特别是如果在输出中找到它们并不难的话。)

我发现了一些看似可行的解决方案,但由于种种原因,它们都不起作用。(例如,VerbatimOut在环境定义中不起作用,也不支持附加。)搜索解决方案可以找到这方面的一些内容,但我还没有找到可以组合在一起并起作用的部分。


动机:

我实际上需要输出正文的措辞和一些收集到的上下文,然后将这些信息输入给一些分析师,以检查它是否满足一些与此问题无关的复杂标准。

答案1

您可以使用\meaning

\documentclass[12pt]{article}
\usepackage{environ}

\newwrite\Mine
\immediate\openout\Mine=\jobname.mine

\NewEnviron{MyEnv}{
  \immediate\write\Mine{\meaning\BODY} %Changed for answer
  \BODY
}

\begin{document}
\begin{MyEnv}
Some Stuff that \emph{might} have \textbf{some} markup
and newlines\footnote{And maybe other things.}. %Changed for answer (assuming \footnotes was a typo)
\end{MyEnv}
\end{document}

相关内容