定义一个利用内部可选包的新环境

定义一个利用内部可选包的新环境

我一直在使用可选包,以便在同一文档中方便地创建解决方案。我一直通过将解决方案放在里面来手写解决方案:

\opt{optS}{\color{blue} \textbf{Solution:} asdfasdf \color{black}}

但我想通过创建一个包含 \opt{optS} 调用的环境来节省时间。我尝试使用以下代码执行此操作:

\newenvironment{sol}
{ \opt{optS}{\color{blue} \textbf{Solution:}  }}

当我在编译时选择 optS 时,它似乎工作得很好。但如果在编译期间使用 optO,解决方案仍然会出现,但现在是黑色的。我在新环境中包含 \opt{optS} 时是否遗漏了什么?感谢您的帮助!

编辑

抱歉,我表达不清楚。我的目的是

\begin{sol} 解决方案文本在此处 \end{sol}

这样 \newenvironment{sol} 就会将“解决方案文本包装在此处”放在 \optS{ } 中,这样解决方案仅在使用 optS 可选参数进行编译时才会出现。我还让它自动将其变为蓝色并在其前面加上“解决方案:”,但这样效果很好。我认为真正的问题是 \optS{ 需要包含在 \newenvironment 的前置参数中,但结尾的 } 需要包含在结尾参数中,我认为 \newenvironment 不允许以这种方式使用不等括号。

答案1

  • 不清楚你喜欢什么(请澄清你的问题)
  • 在这种情况下,您只需要蓝色粗体文本中的单词“解决方案”,那么您可以定义例如\solution{\textcolor{blue}{\textbf{Solution~}}}
  • 如果您喜欢更改文本“解决方案”及其颜色,那么您可以考虑\newcommand\optS[2][blue]{\textcolor{#1}{\textbf{#2}}}
\documentclass{article}
\usepackage{xcolor}
\newcommand\solution{\textcolor{blue}{\textbf{Solution:~}}}
\newcommand\optS[2][blue]{\textcolor{#1}{\textbf{#2}}}

\begin{document}
\solution text of solution

\optS{Solution:} text of solution

\optS[red]{Comment:} text of comment
\end{document}

在此处输入图片描述

答案2

为了忽略环境主体,也许您应该使用注释包来代替或补充可选包。

\excludecomment{sol}
\opt{optS}{
  \renewenvironment{sol}
    {\par\noindent\color{blue}\textbf{Solution:}}
    {\color{black}\par}
}

相关内容