我有一个定义如下的环境:
\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
:
\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}