23

How do I make an item in a description list verbatim? \verb in \item[] seems to be not allowed:

\begin{description}
    \item[\verb+list comprehension [f a | a <- M a]+] bla bla bla
\end{description}

3 Answers3

18

The package examplep provides several commands and environments for typesetting verbatim text. For instance, the robust commands \PVerb[options]{text}and \Q{text} can be used in macro arguments and in section titles as well.

Code example for your description list:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[Q=yes]{examplep}
\begin{document}
\begin{description}
    \item[\Q{list comprehension [f a | a <- M a]}] bla bla bla
    \item[\PVerb{testing: \verb||{} #_$ }] item text
\end{description}
\end{document}

Output:

verbatim example

See Verbatim phrases and listings in LaTeX by Péter Szabó (or texdoc examplep) for further information. Escaping special characters (for instance with \Q) may be necessary as described in section 3.1 of the documentation.

Note, T1 font encoding has to be use to get a proper < symbol because it's unavailable in standard OT1 encoding.

Stefan Kottwitz
  • 231,401
8

The \verb command is not allowed inside arguments of other commands. One workaround is to use \SaveVerb from fancyvrb.

The following definition of \vitem is taken from the Companion. It has an optional argument taking styling parameters from the fancyvrb package.

\usepackage{fancyvrb}

\newcommand\vitem[1][]{\SaveVerb[%
    aftersave={\item[\textnormal{\UseVerb[#1]{vsave}}]}]{vsave}}

\begin{description}
    \vitem+list comprehension [f a | a <- M a]+ bla bla bla
\end{description}
Caramdir
  • 89,023
  • 26
  • 255
  • 291
0

For completion, a solution using \cprotect, and a solution that avoids \verb entirely.

Also (most of the time) answers the question: How can I put verbatim inside an optional argument?

\usepackage{cprotect}

...

\begin{description} \cprotect[o]\item[\verb+list comprehension [f a | a <- M a]+] bla bla bla \item[\textnormal{\texttt{list comprehension [f a | a <- M a]}}] bla bla bla \end{description}

Without the \textnormal, the text produced by \texttt will be bold, which may or may not be what you want.

user202729
  • 7,143