使用 exam.cls 中的 \printquestions 等命令隐藏/取消隐藏问题

使用 exam.cls 中的 \printquestions 等命令隐藏/取消隐藏问题

我正在尝试自定义的问题环境exam.cls。我希望有一个命令来\printquestions隐藏/取消隐藏问题,同时保留要点和问题标签。

我已经使用environ包来围绕每个问题内容创建一个环境来做到这一点。

\newif\ifkeepquestion \keepquestiontrue
\NewEnviron{qsn}{\ifkeepquestion\BODY\fi}

\begin{document}

\begin{questions}
\pointsdroppedatright

%1
\question[10]
\begin{qsn}
Describe the effect on the balloon industry.
\end{qsn}
\droppoints

\end{questions}

\end{document}

有没有直接的方法可以隐藏里面的内容“描述对气球行业的影响。” exam.cls,而不是依赖于Environ包。

我尝试查看\newenvironment{questions}文件exam.cls,其中使用了\list命令并\item创建了内容。我们能否修改 \item 定义以隐藏或取消隐藏内容,具体取决于\ifkeepquestion

答案1

这样会显示问题编号(和分数),但不显示问题本身。问题本身不会跨页,并且会出现悬挂缩进(我忘了这是否正常)。

显然,\question设置本地值,如果放置在环境中,则不会保留。您需要深入研究代码,找到它们并全局设置它们。

\documentclass{exam}

\newif\ifkeepquestion \keepquestionfalse
\newsavebox{\questionbox}

\newenvironment{qsn}{\begin{lrbox}{\questionbox}\minipage[t]{\linewidth}}%
{\endminipage\end{lrbox}\ifkeepquestion \usebox\questionbox  \fi}

\begin{document}
\begin{questions}
\pointsdroppedatright

\question[10]\begin{qsn}
Describe the effect on the balloon industry.
\end{qsn}
\droppoints

\end{questions}
\end{document}

这修改了\question保存箱内部,只是为了窃取点数参数。它包括一些需要\droppoints工作的补丁(保存箱外部)。

\documentclass{exam}
\usepackage{showframe}
\usepackage{etoolbox}

\newif\ifkeepquestion \keepquestiontrue
\newsavebox{\questionbox}
\newcommand{\pointsarg}{}% reserve global name

\makeatletter
\newenvironment{qsn}{\begin{lrbox}{\questionbox}%
  \minipage[t]{\linewidth}%
    \renewcommand{\question}[1][0]{\xdef\pointsarg{##1}}}% local definition
{\endminipage\end{lrbox}%
  \question[\pointsarg]%
  \ifkeepquestion
    \usebox\questionbox
  \fi}

\patchcmd{\@readpoints}{\def\@points}{\gdef\@points}{}{FAILED}
\patchcmd{\item@points@pageinfo}{\def\padded@point@block}{\gdef\padded@point@block}{}{1}
\patchcmd{\item@points@pageinfo}{\def\padded@point@block}{\gdef\padded@point@block}{}{2}
\makeatother

\begin{document}
\begin{questions}
\pointsdroppedatright

\begin{qsn}\question[10] Describe the effect on the balloon industry.  
Yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada.
\end{qsn}

\droppoints

\end{questions}
\end{document}

相关内容