例如,我有 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.