如何改变环境中的颜色?

如何改变环境中的颜色?

我有一个定义如下的环境:

\usepackage{framed}
\usepackage{listings}
\usepackage{color}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\usetikzlibrary{backgrounds}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows}
\definecolor{gray}{gray}{0.3}
\definecolor{darkgreen}{rgb}{0,0.55,0}
\definecolor{purple}{rgb}{0.5,0,1}

\newenvironment{comment}{
  \medskip
  \begin{framed}
    \color{red}
    {\textbf{I say: }}
}{
\end{framed}
  \medskip
}

离开环境后,颜色不会恢复,因此仍然是红色。我应该在某处明确恢复它吗?

答案1

这似乎framed弄乱了颜色;只需在进入环境之前声明颜色:

\newenvironment{comment}
  {\par\medskip
   \color{red}%
   \begin{framed}
   \textbf{I say: }\ignorespaces}
 {\end{framed}
  \medskip}

我重新格式化了代码并插入了重要的\ignorespaces;请记住,不遵循控制序列的空格(或行尾)是有意义的。出于同样的原因,任何“开始”部分开始段落的环境都应发出\ignorespaces:这会吞噬后面的空格\begin{comment}(它是行尾,但对 TeX 来说是一样的)。

此定义将产生红色边框。如果您想要黑色边框,则

\newenvironment{comment}
  {\par\medskip
   \begin{framed}
   \begingroup\color{red}%
   \textbf{I say: }\ignorespaces}
 {\endgroup\end{framed}
  \medskip}

会做。

答案2

最快的解决方法似乎是将彩色文本插入组内。

代码:

\documentclass{article}   

\usepackage{framed}
\usepackage{color}
\definecolor{gray}{gray}{0.3}
\definecolor{darkgreen}{rgb}{0,0.55,0}
\definecolor{purple}{rgb}{0.5,0,1}

\newenvironment{comment}{
  \medskip
  \begin{framed}
    \bgroup\color{red}
    {\textbf{I say: }}
}{
\egroup\end{framed}
  \medskip
}

\begin{document}
Foo.
\begin{comment}
Here is the content of the \verb!comment! environment.
\end{comment}
Foo.
\end{document}

结果:

在此处输入图片描述

这是你想要达到的目标吗?

答案3

一个简单的选择是创建颜色环境,甚至嵌套和混合\textcolor

MWE 输出

\documentclass{article}
\usepackage{framed}
\usepackage{color}
\definecolor{purple}{rgb}{0.5,0,1}

\newenvironment{comment}{
  \medskip
\begin{color}{red}
\begin{framed}
\begin{color}{blue}
    \textcolor{purple}{\textbf{I say: }} 
}{
\end{color}
\end{framed}
\end{color}
  \medskip
}

\begin{document}
Normal text before
\begin{comment}
 ... Hello
\end{comment}
Normal text after
\end{document}

相关内容