将颜色设置为逐字输出

将颜色设置为逐字输出

verbatim我想以蓝色显示输出。

我有这个:

\newcommand{\blockcode}[1]{\ttfamily\small#1}

{\blockcode \begin{verbatim} 
alias vi="vim"
\end{verbatim}}

效果很好。

但当我这样做

\newcommand{\blockcode}[1]{\ttfamily\small{\color{blue}#1}}

它会抛出一个错误

! \begin 的参数有一个额外的 }。

更新

我试过

\documentclass{article}
\usepackage{verbatim,color,lipsum}

\newcommand{\blockcode}{\ttfamily\small\color{blue}}

\begin{document}
\lipsum*[2]
{\blockcode \begin{verbatim} 
alias vi="vim"
\end{verbatim}}

\lipsum*[3]
\end{document}

但是块代码并没有结束...它会流向下一个元素......

更新 2

如果我这样做:

\paragraph{Hello}
\begin{blockcode}
alias vi="vim"
\end{blockcode}

颜色Hello也变成蓝色。有什么办法可以阻止这种情况吗?

更新 3

又一个障碍……

\subsubsection*{Definition}
\begin{blockcode} 
:iabbrev <key> <expansion> 
\end{blockcode}

Definition这会在和 代码之间产生太大的差距。

答案1

您有很多更好的选择。

第一的。包裹verbatim

\documentclass{article}
\usepackage{verbatim,color,lipsum}
\newenvironment{blockcode}
  {\leavevmode\small\color{blue}\verbatim}
  {\endverbatim}

\begin{document}
\lipsum*[2]
\begin{blockcode}
alias vi="vim"
\end{blockcode}
\lipsum*[3]
\end{document}

优点:简单。缺点:无法真正定制。

第二。包裹fancyvrb

\documentclass{article}
\usepackage{fancyvrb,color,lipsum}

\DefineVerbatimEnvironment{blockcode}
  {Verbatim}
  {fontsize=\small,formatcom=\color{blue}}

\begin{document}
\lipsum*[2]
\begin{blockcode}
alias vi="vim"
\end{blockcode}
\lipsum*[3]
\end{document}

优点:可定制性强。缺点:不太容易学会如何管理定义。

第三。包裹listings

\documentclass{article}
\usepackage{listings,color,lipsum}

\lstnewenvironment{blockcode}[1][]
  {\lstset{language=Bash,
           columns=fullflexible,
           basicstyle=\small\ttfamily,
           keywordstyle=\color{blue},
   }}
  {}

\begin{document}
\lipsum*[2]
\begin{blockcode}
alias vi="vim"
\end{blockcode}
\lipsum*[3]
\end{document}

优点:支持语言的关键字着色。缺点:不支持 UTF-8

答案2

\newcommand{\blockcode}[1]{\ttfamily\small#1}

{\blockcode \begin{verbatim} 
alias vi="vim"
\end{verbatim}}

只有在偶然情况下才真正起作用。 的参数\blockcode是(只是)\begin所以\begin被从其参数中删除{verbatim},但#在定义的末尾被替换,\begin被放回并且它运行正常,

一旦你使用

\newcommand{\blockcode}[1]{\ttfamily\small{\color{blue}#1}}

然后扩展为

\ttfamily\small{\color{blue}\begin}

因此,首先\begin看到的是右括号,然后事情就出错了。

只需使用

\newcommand{\blockcode}{\ttfamily\small\color{blue}}

请注意,您应该始终在垂直模式下结束字体大小更改命令

{\small aaaa\par}

不是

{\small aaa}\par

否则行距会错误。在这种情况下,您没有问题,因为这verbatim是列表环境,所以段落结束。

另外,正如在列表前grfguide使用\color命令会对间距产生不利影响(这不是我的错)。在这种情况下,由于您无论如何都会更改大小,所以这可能不是什么大问题。

答案3

对于 Beamer 用户

myverbatim此代码创建一个具有特定颜色(\blue)和字体大小( )的新环境( ) \small,如例所示:

\newenvironment{myverbatim}
{\semiverbatim\small\color{blue}}
{\endsemiverbatim}

您还可以重新定义主verbatim环境:

\renewenvironment{verbatim}
{\semiverbatim\small\color{blue}}
{\endsemiverbatim}

如果您想改变\verb命令的颜色,请定义一个新命令或重新定义原始命令,如下所示(需要包newverbs):

\newcommand{\myverb}{\collectverb{\small\color{blue}}}
\renewcommand{\verb}{\collectverb{\small\color{blue}}}

相关内容