我正在尝试自定义的问题环境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}