下面的代码是什么意思?

下面的代码是什么意思?
\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 个参数:

  1. 名字
  2. 应该执行的代码\begin
  3. 应该执行的代码\end

在这种情况下,\begin{solution}应该开始一个名为“解决方案”的新段落,并且\end{solution}什么也不做。\begin和之间的内容\end是一个组,因此没有全局效果的命令对该组之外的其余代码没有影响。

\newcommand{\insol}[1]{#1}定义一个新命令,该命令需要一个参数并且只返回其参数而无需进一步添加。

\newcommand{\notsol}[1]{}定义一个需要参数但不返回任何内容的新命令。

在-branch 中,和\else的效果会进行交换,并且所调用的环境会根据包定义为注释,因此和之间的所有内容都没有任何效果。\insol\notsolsolutioncomment\begin{solution}\end{solution}

这描述了您想知道的一切吗?

相关内容