我正在尝试编写一个类似于 exam 的自定义类,但我想添加以下功能:可以根据某些布尔值隐藏问题。使用环境时,它可以工作,但我想以与 exam 相同的方式提供 \question 命令。这是一个 MWE:
\documentclass{article}
\usepackage{environ}
\newcounter{question}
\newif\ifvisible \visibletrue
\NewEnviron{Question}
{%
\refstepcounter{question}%
\ifvisible%
\list{\textbf{\arabic{question}.~}}{\leftmargin=.8cm}\item%
\BODY
\endlist
\fi%
}
\newif\ifinsideQuestion \insideQuestionfalse
\newcommand{\question}{
\ifinsideQuestion
\end{Question}
\fi
\begin{Question}
\insideQuestiontrue
}
\newenvironment{exercice}{}{
\ifinsideQuestion
\end{Question}
\fi
}
\begin{document}
% Work
\begin{exercice}
\begin{Question}
Question 1
\end{Question}
\visiblefalse
\begin{Question}
Question 2
\end{Question}
\end{exercice}
\visibletrue
% Error
\begin{exercice}
\question Question 1
\visiblefalse
\question Question 2
\end{exercice}
\end{document}
这不起作用,因为 environ 似乎在第一个 \question 上寻找环境的结束,但没有扩展第二个问题,所以永远找不到它。