在我的课程文件中我有这样的代码:
\newif\if@showsolution
\def\solutions{\@showsolutiontrue}
\if@showsolution
\newenvironment{solution}{\textbf{L\"osung:}\\}{}
\else
\excludecomment{solution}
\fi
然后,我在文档中调用\solutions{}
,但什么也没发生。环境“解决方案”未包含在内。为什么 未showsolution
设置为 true?
以下是完整的代码示例:
答案1
该命令\solutions
只是切换条件\if@solutions
,但不能改变已经执行的代码。并且\excludecomment{solution}
已经执行完毕。
班级应该做
\excludecomment{solution}
\newcommand{\solutions}{\renewenvironment{solution}{\textbf{L\"osung:}\\}{}}
答案2
您可以定义一个根据值切换环境的命令\ifshowsolution
,并在文档开始处或者想要更改解决方案环境的行为时调用它。
要定义“on”环境,您可以使用\specialcomment
注释包中的宏。根据条件激活特定环境是此命令的主要目的。
\newif\ifshowsolution
\def\changeSolutionEnvironment{
\ifshowsolution
\specialcomment{solution}{\begingroup\textbf{L\"osung:}\\}{\endgroup}
\else
\excludecomment{solution}
\fi
}
\def\solutions{\showsolutiontrue\changeSolutionEnvironment}
\def\nosolutions{\showsolutionfalse\changeSolutionEnvironment}
\nosolutions % default behaviour