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?
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.
-
1
\lstinline
does 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 5 '11 at 20:52 -
@przemoc: If you want
backgroundcolor
with\lstinline
, perhaps how to redefine lstinline to automatically highlight or draw frames around all inline code snippets might be helpful. – Peter Grill Feb 1 '12 at 0: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}
-
That's basically what
newverbs
does by itself, except it adds small begin and end hooks in the normal\verb
so that it can be reused for multiple\verb
like macros. It also support the\verb
replacement oftabularx
as a bonus. – Martin Scharrer♦ Jul 5 '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 8: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}
-
-
@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 5 '11 at 20:00\verb|..|
myself all the time but for some unknown reason wrote{...}
in the question – Peter Krumins Jul 5 '11 at 20:03xparse
doesn't support a verbatim argument type. – Martin Scharrer♦ Jul 5 '11 at 20:06xparse
does 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 5 '11 at 21:12\verb
again to improvenewverbs
and 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 5 '11 at 21:18