![如何将环境的内容保存到不同的文件中](https://linux22.com/image/413780/%E5%A6%82%E4%BD%95%E5%B0%86%E7%8E%AF%E5%A2%83%E7%9A%84%E5%86%85%E5%AE%B9%E4%BF%9D%E5%AD%98%E5%88%B0%E4%B8%8D%E5%90%8C%E7%9A%84%E6%96%87%E4%BB%B6%E4%B8%AD.png)
例如,我有 1 个 tex 文件A.tex
包含以下内容:
\begin{Solution}{1}
D
\end{Solution}
\begin{Solution}{2}
D
\end{Solution}
\begin{Solution}{3}
A
\end{Solution}
\begin{Solution}{4}
B
\end{Solution}
\begin{Solution}{5}
C
\end{Solution}
\begin{Solution}{6}
C
\end{Solution}
\begin{Solution}{7}
A
\end{Solution}
从这个A.tex
文件中提取一个名为的tex文件,B.tex
其内容为:DDABCCA(即只有解决方案环境中的内容)我希望大家能有所帮助!
答案1
这里我提供了两种方法: - 一种xparse
需要xparse
2019-03-05 或更新版本的方法; - 一种environ
方法
\documentclass{article}
\makeatletter
%% xparse approach, require xparse 2019-03-05 or newer
%\usepackage{xparse}
%\NewDocumentEnvironment{Solution}{m +b}
% {\g@addto@macro\solution@body@acc{#2}}
% {}
%% end of xparse approach
%% environ approach
\usepackage{environ}
\NewEnviron{Solution}[1]{%
\xdef\solution@body@acc{\solution@body@acc\BODY}%
}
%% end of environ approach
% accumulation of "Solution" body
\def\solution@body@acc{}
% read A.tex, the "Solution" body is accumulated in \solution@body@acc
\input{A}
% write to B.tex
\newwrite\outputB
\immediate\openout\outputB B.tex
\immediate\write\outputB{\solution@body@acc}
\immediate\closeout\outputB
\makeatother
\begin{document}
pass
\end{document}
答案2
您可以重新定义\Solution
环境:
\def\solutions{}
\def\Solution#1#2 #3 #4\end#5{\end{Solution}\edef\solutions{\solutions#3}}
然后就可以读取文件了A.tex
。结果在\solutions
宏中:
Solutions are: \solutions.