宏内的条件变量未设置为 true

宏内的条件变量未设置为 true

在我的课程文件中我有这样的代码:

\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

相关内容