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}}}