\usepackage{comment}
\newif\ifshowsolution
\showsolutionfalse
\ifshowsolution%
\newenvironment{solution}{\paragraph{Solution.}}{} %
\newcommand{\insol}[1]{#1}%
\newcommand{\notsol}[1]{}%
\else
\excludecomment{solution}%
\newcommand{\insol}[1]{}%{} ò
\newcommand{\notsol}[1]{#1}%
\fi
答案1
以下内容可能用不正确的术语描述:
\newif
初始化一个新的布尔开关。以下\ifshowsolution
是条件的名称。
\newif
不需要它的参数,if
但其他一切都是模糊的。前两个字母被删除并附true
加到false
切换命令中。包括前两个字母的完整名称是条件。
从现在开始,每次您编写\ifshowsolution
以下代码块,直到匹配\else
或\fi
(以先到者为准)时,如果开关为真,则执行该代码块。如果存在匹配,则如果开关设置为 false \else
,则从该点到匹配的所有内容\fi
都会执行。
条件语句可以嵌套使用。因此,上面的“匹配”很重要。每个\if
语句都必须有匹配\fi
,否则代码将导致错误。是\else
可选的。
\showsolutionfalse
将开关设置为 false,\showsolutiontrue
将其设置为 true。
\ifshowsolution
对于和之间的代码\else
:
\newenvironment
定义一个新的环境。它需要 3 个参数:
- 名字
- 应该执行的代码
\begin
- 应该执行的代码
\end
在这种情况下,\begin{solution}
应该开始一个名为“解决方案”的新段落,并且\end{solution}
什么也不做。\begin
和之间的内容\end
是一个组,因此没有全局效果的命令对该组之外的其余代码没有影响。
\newcommand{\insol}[1]{#1}
定义一个新命令,该命令需要一个参数并且只返回其参数而无需进一步添加。
\newcommand{\notsol}[1]{}
定义一个需要参数但不返回任何内容的新命令。
在-branch 中,和\else
的效果会进行交换,并且所调用的环境会根据包定义为注释,因此和之间的所有内容都没有任何效果。\insol
\notsol
solution
comment
\begin{solution}
\end{solution}
这描述了您想知道的一切吗?