在逐字环境中使用颜色

在逐字环境中使用颜色

在 verbatim 环境中,可以使用不同的颜色吗?例如,我想要a正常的颜色,即黑色。但我想要b红色。

\documentclass[]{article}

\begin{document}

\begin{verbatim}
a (black)
b (I want this letter to be red)
\end{verbatim}

\end{document}

后续问题:

Ignasi 提供的解决方案很棒。但是,有一个问题。如果我需要用非黑色的颜色逐字逐句地书写,那么它将无法工作。

\documentclass[]{article}
\usepackage{fancyvrb}
\usepackage{xcolor}

\begin{document}

I want the following to look exactly like the way I put, i.e., like an align. But it displays in one line. How to fix?

\begin{Verbatim}[commandchars=\\\{\}]
\textcolor{red}{
a = b + 1
  = x + y
  = s + t
  = c - d
  = o * p
}
\end{Verbatim}

\end{document}

答案1

与 flav 指出的解决方案不完全相同:

\documentclass[]{article}
\usepackage{fancyvrb}
\usepackage{xcolor}

\begin{document}

\begin{Verbatim}[commandchars=\\\{\}]
a (black)
\textcolor{red}{b} (I want this letter to be red)
\end{Verbatim}

\end{document}

在此处输入图片描述

注:鸣谢fancyvrb文档

问题答案follow-up

要更改所有内容的颜色,verbatim请使用彩色范围。

\documentclass[]{article}
\usepackage{fancyvrb}
\usepackage{xcolor}

\begin{document}

\begin{Verbatim}[commandchars=\\\{\}]
a (black)
\textcolor{red}{b} (I want this letter to be red)
\end{Verbatim}

{
\color{blue}%
\begin{Verbatim}[commandchars=\\\{\}]
a (black)
\textcolor{red}{b} (I want this letter to be red)
\end{Verbatim}
}

\end{document}

在此处输入图片描述

答案2

一种verbatimbox方法,使用<>作为红色文本的活动分隔符。通过将\vbdelim宏作为可选参数提供给verbnobox环境来调用。

\documentclass{article}
\usepackage{xcolor,verbatimbox}
\catcode`>=\active %
\catcode`<=\active %
\def\openesc{\color{red}}
\def\closeesc{\color{black}}
\def\vbdelim{\catcode`<=\active\catcode`>=\active%
\def<{\openesc}
\def>{\closeesc}}
\catcode`>=12 %
\catcode`<=12 %
\begin{document}
\begin{verbnobox}[\vbdelim]
a (black)
<b> (I want this letter to be <red>)
\end{verbnobox}
\end{document}

在此处输入图片描述

这是一个更通用的版本,其中颜色可以作为可选参数提供<

\documentclass{article}
\usepackage{xcolor,verbatimbox}
\catcode`>=\active %
\catcode`<=\active %
\newcommand\openesc[1][red]{\color{#1}}
\def\closeesc{\color{black}}
\def\vbdelim{\catcode`<=\active\catcode`>=\active%
\def<{\openesc}
\def>{\closeesc}}
\catcode`>=12 %
\catcode`<=12 %
\begin{document}
\begin{verbnobox}[\vbdelim]
a (black)
<b> (I want this letter to be <red>)
<[blue!45]c> and this one to be <[blue!45]blue!45>
\end{verbnobox}
\end{document}

在此处输入图片描述

答案3

如果你的verbatim环境实际上不包含需要它的内容(即,它只是普通文本),请考虑使用环境alltt(来自alltt):

alltt定义了alltt环境,它与环境类似,ver­ba­tim只是\和括号具有其通常含义。因此,其他命令和环境可以出现在alltt环境中。

在此处输入图片描述

\documentclass{article}

\usepackage{alltt,xcolor}

\begin{document}

\begin{alltt}
a (black)
\textcolor{red}{b} (I want this letter to be red)
\end{alltt}

\end{document}

答案4

如果你想全部逐字文本在您的文档中,您可以使用包重新定义序言中的命令newverbs

\usepackage{newverbs}
% etc
\renewenvironment{verbatim}
{\semiverbatim\color{red}}
{\endsemiverbatim}
\renewcommand{\verb}{\collectverb{\color{red}}}

(以红色为例)

相关内容