显示环境中的第一个(子)环境

显示环境中的第一个(子)环境

我想制作一个类似类型的问题库——但是,我只想显示每次的第一个问题。例如:

\begin{bank}  
\begin{exercise} 2+2
\end{exercise}

\begin{exercise} 4+3
\end{exercise}
\end{bank}

只会显示练习 2+2。任何帮助都非常好。

注意:这个问题似乎类似于获取环境的第一行

我已经尝试过类似的事情:

\def\getline#1\par{%
\gdef\theline{#1}#1%
}

\newenvironment{bank}{%
  \getline%
}{\theline}

但这首先显示银行的内容,然后显示第一个环境。

答案1

以下 MWE 用途environ定义exercise环境,然后确定是否设置其内容(\BODY)。条件在开始时设置为 true bank,在设置第一个 后设置为 false \BODY

在此处输入图片描述

\documentclass{article}
\usepackage{environ}% http://ctan.org/pkg/environ
\newif\iffirstexercise% Condition for first exercise
\newenvironment{bank}
  {\firstexercisetrue}% Allow first exercise environment to be set
  {}
\NewEnviron{exercise}{%
  \iffirstexercise
    \BODY% Set body of exercise environment
  \fi%
  \global\firstexercisefalse% No more exercise environments are set
}
\begin{document}

\begin{bank}
\begin{exercise} $2+2$
\end{exercise}

\begin{exercise} $4+3$
\end{exercise}
\end{bank}

\begin{bank}
\begin{exercise} $7-6$
\end{exercise}

\begin{exercise} $4-3$
\end{exercise}
\end{bank}

\end{document}

答案2

因为你的exercise没有指定,所以代码稍微改变了一下。

\documentclass{article}
\usepackage{exercise}
\begin{document}

\long\def\bbank#1  STOP #2\ebank{#1}

%\begin{bank}  
\bbank
%\begin{exercise}
\[
 2+2
\]
%\end{exercise}
% No new paragraph
STOP

%\begin{exercise} 
\[
4+3
\]
%\end{exercise}
%\end{bank}


\[
4+3
\]

\ebank

\end{document}

所有工作均由 完成\long\def\bbank#1 STOP #2\ebank{#1}。定义很长,因为您的文本可能比一个段落长。STOP是代码中从未出现的字符串。请注意,在此定义中STOP不会开始新的段落,用法示例中对此进行了注释。

相关内容