2010-07-30 2 views
8

Я пытаюсь создать дословную среду с цветным фоном и которая может охватывать разные страницы (так что использование colorbox не является вариантом). Казалось, пакет пакетов был хорошим способом, но фон рисуется по одной строке за раз, так что, когда я просматриваю PDF-файл, я вижу раздражающие белые полоски между линиями, а также где невидимый (0pt) правило рамки не должно было быть обращено:Полосы в цвет фона, нарисованные списком пакетов

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

Вот минимальный код, который я использовал для создания вывод, показанный на изображении:

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

есть ли обходной путь против этих " полосы?

+0

Неотъемлемая тема. Принадлежит tex.SE –

ответ

2

Простым обходным решением было бы не указывать цвет для самих списков, вместо этого использовать \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}} 

UPDATE: Однако более красивым решением является использование Donald Arseneau's 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} 
+0

Проблема заключается в том, что, обернув ее внутри \ colorbox, среда lstlisting теряет возможность охвата страниц. –

+2

Привет grddev. Мне нравится ваше решение, используя пакет 'framed'. Одна из проблем заключается в том, что номера строк и заголовок lstlistings полностью или частично закрываются заштрихованным прямоугольником. Знаете ли вы обход? Благодарю. – user001

 Смежные вопросы

  • Нет связанных вопросов^_^