.png)
exam
Я часто использую -class, мне особенно нравятся среды решений. Мои документы содержат вопросы и решения, но, изменяя \printanswers
преамбулу, я могу легко переключаться между показом решений или нет.
Я хотел бы сделать то же самое длянамеки. Я бы хотел что-то вроде:
\documentclass[11pt]{exam}
%\ifprintanswers
\ifprinthints
\begin{document}
\begin{questions}
\question Prove $e^{i\pi} +1 = 0$.
\begin{hints}
Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
\end{hints}
\begin{solution}
duh.
\end{solution}
\end{questions}
\end{document}
Я создал пользовательский класс, который основан на exam
классе, но загружает некоторые пакеты и пользовательские команды, какие команды мне добавить, чтобы реализовать эту функциональность? Может ли кто-нибудь помочь?
решение1
Один очень простой способ сделать это — использоватьверсияпакет. Если добавить строки:
\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}
то ваши подсказки не будут отображаться. Закомментируйте \excludeversion{hints}
(или используйте \includeversion{hints}
), и они волшебным образом появятся снова. Вот полный MWE:
\documentclass[11pt]{exam}
\usepackage{version}
\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}% turn hints off
\begin{document}
\begin{questions}
\question Prove $e^{i\pi} +1 = 0$.
\begin{hints}
Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
\end{hints}
\begin{solution}
duh.
\end{solution}
\end{questions}
\end{document}
Второй способ сделать это, который по духу ближе к вашему вопросу, — это использоватьокружающая средаpackage для определения вашей среды подсказок. При таком подходе вы сначала определяете новый оператор if, скажем \ifhinting
, а затем используете \hintingtrue
и \hintingfalse
для включения и выключения подсказок:
\documentclass[11pt]{exam}
\usepackage{environ}
\newif\ifhinting\hintingtrue % hints are on by defautl
\NewEnviron{hints}{\ifhinting\textbf{Hint} \BODY\fi}
\begin{document}
\begin{questions}
\question Prove $e^{i\pi} +1 = 0$.
\begin{hints}
Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
\end{hints}
\begin{solution}
duh.
\end{solution}
\end{questions}
\end{document}
Команда \NewEnviron
определяет новую среду, но она вставляет содержимое среды в макрос \BODY
и позволяет вам выполнять с ней различные действия, например игнорировать ее, когда \hintingfalse
она имеет значение true.
Одним из преимуществ такого подхода является то, что вы можете включать и выключать подсказки в разных частях документа (это также можно считать недостатком, поскольку вам придется проверять все!).