Простым обходным решением было бы не указывать цвет для самих списков, вместо этого используйте \ colorbox
, но для того, чтобы это работало, вам нужно либо использовать \ lstinputlisting
или сохраните результат в коробке, используя, например, lrbox
.
\newbox{\mybox}
\begin{lrbox}{\mybox}
\begin{minipage}{\linewidth}
\begin{lstlisting}
if (a < b)
{
printf("A is smaller than B!\n");
}
a = b;
\end{lstlisting}
\end{minipage}
\end{lrbox}
\colorbox{gray}{\usebox{\mybox}}
ОБНОВЛЕНИЕ: Однако более красивым решением является использование framed.sty Дональда Арсено , что также позволяет исходному коду занимать несколько страниц.
\documentclass{minimal}
\usepackage[pdftex]{xcolor}
\usepackage[a4paper,hmargin=6cm]{geometry}
\usepackage{listings}
\usepackage{framed}
\begin{document}
\definecolor{shadecolor}{named}{gray}
\begin{shaded}
\begin{lstlisting}
if (a < b)
{
printf("A is smaller than B!\n");
}
a = b;
\end{lstlisting}
\end{shaded}
\end{document}