probsoln 在 beamer documentclass 中的解决方案环境

probsoln 在 beamer documentclass 中的解决方案环境

编译这段代码时

\documentclass{beamer}

%%% save beamer's `solution' environment as `beamersolution':
%\let\beamersolution\solution
%\let\endbeamersolution\endsolution

%%% "delete" the `solution' environment:
%\let\solution\relax

\usepackage{color}
\usepackage{probsoln}

\renewcommand{\solutionname}{Answer}

\begin{defproblem}{prob1} 
\begin{onlyproblem} 
To be or not to be?
\end{onlyproblem} 
\begin{onlysolution} 
\begin{solution}
That was the question. This is the answer.
\end{solution} 
\end{onlysolution} 
\end{defproblem}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
    \color{red}
    \useproblem{prob1}

    \showanswers
    \useproblem{prob1}
\end{document}

在文章文档类中一切都按应有的方式运行,即: 在此处输入图片描述

所有文字为红色,解决方案环境的名称为“Answer”。

不幸的是,beamer 文档类有自己的解决方案环境,并且呈现的代码不会影响 probsoln 提供的解决方案环境。我得到

在此处输入图片描述

取消注释注释行有帮助存在 exsheets 包中的问题,但它不适用于 probsoln。我应该怎么做才能让解决方案环境变成红色并更改其名称?

答案1

probsolnsolution在环境尚未定义时才定义环境。如果您确实想使用probsoln的版本,solution则需要solution在加载 之前取消定义环境probsoln。取消定义环境类似于取消定义命令,但您需要考虑用于结束环境的命令以及启动环境的命令。(通常,如果该命令存在,则\begin{foo}执行\foo\end{foo}执行\endfoo。)

\documentclass{beamer}

%%% save beamer's `solution' environment as `beamersolution':
\let\beamersolution\solution
\let\endbeamersolution\endsolution

%%% "delete" the `solution' environment:
\let\solution\relax
\let\endsolution\relax

\usepackage{color}
\usepackage{probsoln}

\renewcommand{\solutionname}{Answer}

\begin{defproblem}{prob1}
\begin{onlyproblem}
To be or not to be?
\end{onlyproblem}
\begin{onlysolution}
\begin{solution}
That was the question. This is the answer.
\end{solution}
\end{onlysolution}
\end{defproblem}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
    \color{red}
    \useproblem{prob1}

    \showanswers
    \useproblem{prob1}
\end{document}

相关内容