2010-07-30 11 views
8

Ich versuche, eine wortwörtliche Umgebung mit einem farbigen Hintergrund zu erstellen, die sich über mehrere Seiten erstrecken kann (so dass die Verwendung einer Farbbox keine Option ist). Es schien, dass das Listing-Paket ein guter Weg dazu war, aber der Hintergrund wird Zeile für Zeile gezeichnet, so dass ich, wenn ich das PDF ansehe, störende weiße Streifen zwischen den Zeilen sehe unsichtbar (0pt) -Rahmen Regel nicht gezogen werden sollte:Stripes in Hintergrundfarbe gezeichnet von Auflistungen Paket

http://a.imageshack.us/img202/9928/lststrips.png

Hier ist der minimale Code ich die Ausgabe auf dem Bild gezeigt erstellt haben:

\documentclass{minimal} 
\usepackage[pdftex]{xcolor} 
\usepackage[a4paper,hmargin=6cm]{geometry} 
\usepackage{listings} 
\lstset{backgroundcolor=\color{gray}, 
    frame=single, framerule=0pt, framesep=5pt} 
\begin{document} 

\begin{lstlisting} 
if (a < b) 
{ 
    printf("A is smaller than B!\n"); 
} 
a = b; 
\end{lstlisting} 

\end{document} 

gibt es eine Abhilfe gegen diese " Streifen'?

+0

Off Thema. Gehört zu tex.SE –

Antwort

2

Eine einfache Problemumgehung wäre, keine Farbe für die Auflistungen selbst anzugeben, stattdessen verwenden Sie eine \colorbox, aber dafür müssen Sie entweder \lstinputlisting verwenden oder das Ergebnis in einer Box mit z. 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}} 

UPDATE: jedoch eine schönere Lösung ist Donald Arseneau's framed.sty, zu verwenden, die auch die Quelle-Code ermöglicht es, mehrere Seiten zu überbrücken.

\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} 
+0

Das Problem besteht darin, dass die lstlisting-Umgebung durch die Umhüllung innerhalb einer \ colorbox die Möglichkeit der Seitenüberlappung verliert. –

+2

Hallo grddev. Ich mag Ihre Lösung mit dem 'gerahmten' Paket. Ein Problem besteht darin, dass die Zeilennummern und die Untertitelung ganz oder teilweise durch das schattierte Feld verdeckt sind. Kennen Sie einen Work-Around? Vielen Dank. – user001

Verwandte Themen