考虑以下:
\documentclass{article}
\usepackage{environ}
\usepackage{verbatim}
\usepackage{color}
\NewEnviron{vred}{%
\color{red}
\begin{verbatim}
\BODY
\end{verbatim}
}
\begin{document}
\begin{vred}
test
\end{vred}
\end{document}
编译时pdflatex
出现错误:
Runaway argument?
\end {document}
! Paragraph ended before \next was complete.
<to be read again>
\par
l.16
答案1
在这个特定情况下,问题很典型:您无法将verbatim
内容作为参数传递给另一个宏。使用environ
,因为内容积累在宏中\BODY
以供稍后处理。
从您的最小示例来看,您似乎想要verbatim
使用特定颜色(例如红色)打印内容。为此,我建议定义一个具有此特定质量/属性的新逐字环境。因此,fancyvrb
可以派上用场。下面是一个 MWE,它说明了这个概念(虚拟拍摄)逐字, 来自fancyvrb
文档(部分4.1.3 格式自定义,第 5 页和4.2.4 个性化环境,第 18 页):
\documentclass{article}
\usepackage{fancyvrb,xcolor}% http://ctan.org/pkg/{fancyvrb,xcolor}
\DefineVerbatimEnvironment%
{MyVerbatim}{Verbatim}
{formatcom=\color{red}}
\begin{document}
\begin{MyVerbatim}
First verbatim line.
Second verbatim line.
\end{MyVerbatim}
\end{document}
答案2
关于我对Werner
答案的最后一条评论,我发现以下方法有效:
\documentclass{article}
\usepackage{fancyvrb,xcolor}
\newenvironment{MyVerbatim}[1]{
\subsection*{#1}\VerbatimEnvironment
\begin{Verbatim}[formatcom=\color{red}]}{\end{Verbatim}}
\begin{document}
\begin{MyVerbatim}{A verbatim subsection}
First verbatim line.
Second verbatim line.
\end{MyVerbatim}
\end{document}