我如何重新定义 \verb|...| 命令?

我如何重新定义 \verb|...| 命令?

我想重新定义\verb|...|命令,使其具有浅灰色背景和稍微暗一点的边框,并添加一些填充以使此背景“框”引人注目。有人知道怎么做吗?如果这不容易做到,我可以定义一个新命令来执行\verb|...|此操作吗?

答案1

更新 2011-07-27

正如承诺的那样,我的包的新版本newverbs提供了两个宏来收集逐字参数,不仅使用语法\verb|...|,还使用{ .. }。对于可排版的逐字使用\collectverb{\macrowhichgetsitasargument}

对于所请求的彩色背景和框架,请使用\fcolorbox{<frame color>}{<background color>}{<text>}宏。

\documentclass{article}
\usepackage{xcolor}
\usepackage{newverbs}[2011/07/23]
\newcommand{\myverb}{\collectverb{\fcolorbox{black!50}{black!25}}}

\begin{document}
    \myverb|%^&\|
    \myverb{%^&\}
\end{document}

结果


newverbs包允许您定义\verb命令的变体,代码位于命令之前和之后。您需要使用保存框进行高级格式化。(我计划在下一个版本中还支持接收逐字文本作为正常参数的宏。)

例子:

\usepackage{newverbs}

\newverbcommand{\myverb}{\begin{lrbox}{\verbbox}\mytextformatmacro}{\end{lrbox}{\mycommand{\usebox{\verbbox}}}

...

\myverb|%^&\|

使用xcolor包来添加颜色。

该包已经默认提供\fverb\fbox在其周围画一个)和\qverb(添加引号)。

您还可以使用该包的\verb-like宏。它接受许多选项。\lstinlinelistingslistings

答案2

我修改了标准\verb命令并得到了结果,但无论如何我推荐 Martin 的方法。

\documentclass[a4paper]{article}
\usepackage{color}
\definecolor{cverbbackground}{gray}{0.7}
\definecolor{cverbborder}{gray}{0.2}
\makeatletter
\newbox\cverbbox
\def\cverb{\setbox\cverbbox=\hbox\bgroup
    \verb@eol@error \let\do\@makeother \dospecials
    \verbatim@font\@noligs
    \@ifstar\@scverb\@cverb}
\def\@scverb#1{%
  \catcode`#1\active
  \lccode`\~`#1%
  \gdef\verb@balance@group{\cverb@egroup
     \@latex@error{\noexpand\verb illegal in command argument}\@ehc}%
  \aftergroup\verb@balance@group
  \lowercase{\let~\cverb@egroup}}%
\def\@cverb{\@vobeyspaces \frenchspacing \@scverb}
\def\cverb@egroup{\global\let\verb@balance@group\@empty\egroup
  \fcolorbox{cverbborder}{cverbbackground}{\box\cverbbox}}
\makeatother

\begin{document}

\cverb|ab{\c| \cverb*|a }|
\end{document}

答案3

这里有一个适用的解决方案xparse

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{xparse}
\NewDocumentCommand{\Fverb}{v}
      {\fcolorbox{black!50}{black!25}{#1}}
\begin{document} 
HALLO \Fverb|\foo| HALLO
\end{document}

相关内容