I'd like to redefine the \verb|...| command so that it had a light-gray background and a little bit darker border around it, and a little bit of padding to make this background "box" noticable. Anyone knows how to do that? If that is not possible to do easily, can I define a new command that acts like \verb|...| and does that?
- 250,273
3 Answers
Update 2011-07-27
As promised the new version of my newverbs package provides two macros to collect verbatim arguments with the \verb|...| syntax but also with { .. }.
For typesettable verbatim use \collectverb{\macrowhichgetsitasargument}.
For the requested colored background and frame use the \fcolorbox{<frame color>}{<background color>}{<text>} macro.
\documentclass{article}
\usepackage{xcolor}
\usepackage{newverbs}[2011/07/23]
\newcommand{\myverb}{\collectverb{\fcolorbox{black!50}{black!25}}}
\begin{document}
\myverb|%^&\|
\myverb{%^&\}
\end{document}

The newverbs package allows you to define variations of the \verb command which code placed before and after it. You need to use a savebox for advanced formatting. (I'm planning to also support macros which receive the verbatim text as normal argument in the next version.)
Example:
\usepackage{newverbs}
\newverbcommand{\myverb}{\begin{lrbox}{\verbbox}\mytextformatmacro}{\end{lrbox}{\mycommand{\usebox{\verbbox}}}
...
\myverb|%^&\|
Use the xcolor package to add colors.
The package already provides \fverb (draws a \fbox around it) and \qverb (adds quoting signs) by default.
You could also use the \verb-like \lstinline macro of the listings package. It accepts the many listings options.
- 262,582
-
1
\lstinlinedoes not supportbackgroundcolor, at least in my version, which is pretty sad. By not supporting I mean not an error, but lack of the effect. – przemoc Jul 05 '11 at 20:52 -
@przemoc: If you want
backgroundcolorwith\lstinline, perhaps how to redefine lstinline to automatically highlight or draw frames around all inline code snippets might be helpful. – Peter Grill Feb 01 '12 at 00:10
I've modified the standard \verb command and got the result, but anyway I recommend Martin's approach.
\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}
- 1,121,712
-
That's basically what
newverbsdoes by itself, except it adds small begin and end hooks in the normal\verbso that it can be reused for multiple\verblike macros. It also support the\verbreplacement oftabularxas a bonus. – Martin Scharrer Jul 05 '11 at 20:44 -
1
-
1This solution is the best i ve found, but is there a way to change
\verb{}font color, and font size? – 71GA Mar 13 '12 at 08:11
Here a solution which works with 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}
- 95,681
-
-
@egreg: Why this? I tested only commands ;-). A space between
|! \|` works. – Marco Daniel Jan 30 '12 at 18:50 -
1The font has ligatures defined. Indeed in traditional verbatim mode the backquote,
<,>and-are active and defined so as not to produce ligatures. – egreg Jan 30 '12 at 18:56
\verb<char>...<char>, e.g.\verb|...|or\verb{...{, not\verb{..}. – Martin Scharrer Jul 05 '11 at 20:00xparsedoesn't support a verbatim argument type. – Martin Scharrer Jul 05 '11 at 20:06xparsedoes not deal with verbatim material (essentially, a truly general solution is not available, as TeX's parsing approach makes certain cases impossible to handle with generalised code). – Joseph Wright Jul 05 '11 at 21:12\verbagain to improvenewverbsand will have to at least provide two ways: one which really only provides the verbatim characters and one which provides them in a typeset-able form (e.g. using\@noligs). – Martin Scharrer Jul 05 '11 at 21:18newverbs(already implemented in the develop version):\newcommand\myverb{\collectverbtext{\@myverb}}\def\@myverb#1{The collected verb text: "#1"}– Martin Scharrer Jul 06 '11 at 00:24