[Tex/LaTex] Set line spacing everywhere but in verbatim blocks

line-spacingsetspaceverbatim

Is it possible to change the linespacing of a document except for inside verbatim blocks?

\usepackage{setspace}
\onehalfspacing

The above results in more readable paragraphs, but the code snippets are too large for my taste.

Best Answer

Just patch \verbatim@font or (even safer) \verbatim macro to add your code before verbatim blocks.

\documentclass{article}
\usepackage{setspace}
\setstretch{1.5}
\usepackage{etoolbox}
\appto\verbatim{\singlespacing}
\begin{document}

text text text text text text text text text text text text text
text text text text text text text text text text text text text
text text text text text text text text text text text text text
text text text text text text text text text text text text text
\begin{verbatim}
#include <stdio.h>
int main()
{
    puts("Hello world.");
    return 0;
}
\end{verbatim}

\end{document}

Alternatively, if you use fancyvrb package for verbatim, you could use \fvset to set formatcom option for all Verbatim (not verbatim) environments:

\documentclass{article}
\usepackage{setspace}
\setstretch{1.5}
\usepackage{fancyvrb}
\fvset{formatcom=\singlespacing}
\begin{document}

text text text text text text text text text text text text text
text text text text text text text text text text text text text
text text text text text text text text text text text text text
text text text text text text text text text text text text text
\begin{Verbatim}
#include <stdio.h>
int main()
{
    puts("Hello world.");
    return 0;
}
\end{Verbatim}

\end{document}
Related Question