PDA

View Full Version : Unterbrochender Hintergrund in Listing



tom1986
28-02-2010, 18:05
Hallo zusammen.

Wie der Titel schon sagt, ist der Hintergrund in meinem Listing unterbrochen, wenn ich mit dem Mathmode eine zu hohe Zeile einfüge.

\documentclass[a4paper]{report}
\pdfoutput=1
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage{color}
\usepackage{listings}
\usepackage[pdftex,
colorlinks=true, linkcolor=blue, urlcolor=cyan, citecolor=red,
raiselinks=true,%
bookmarks=true,%
bookmarksopenlevel=1,%
bookmarksopen=true,%
bookmarksnumbered=true,%
hyperindex=true,%
plainpages=false,% correct hyperlinks
pdfpagelabels=true%,% view TeX pagenumber in PDF reader
%pdfborder={0 0 0.5}
]{hyperref} % erzeuge Hyperlinks z.B. für pdflatex
\definecolor{gray}{gray}{.85}
\lstset{backgroundcolor=\color{gray}, numbers=left, numberstyle=\small, breaklines=true, basicstyle=\footnotesize}
\begin{document}
\begin{lstlisting}[caption={Caption}, mathescape=true, nolol=true]
Zeile 1
x = $\left\{
\begin{array}{ll} true & \textrm{,falls Bedingung}\\
false & \textrm{, sonst}
\end{array}
\right.
$
Zeile 3
\end{lstlisting}
\end{document}

Kann man das irgendwie beheben, sodass der Hintergrund nicht mehr unterbrochen ist?

MfG Tom

mechanicus
01-03-2010, 21:42
Hi,

aus meinem Archiv:

\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{listings}
\lstset{numbers=left, numberstyle=\small, breaklines=true, basicstyle=\footnotesize}
\usepackage{xcolor,framed}
\newenvironment{ListRahm}{%
\def\FrameCommand{\FrameSep=4pt\fcolorbox{black}{y ellow}}%
\setlength{\fboxrule}{2pt}%
\MakeFramed {\advance\hsize-\width\FrameRestore}}%
{\endMakeFramed}
\lstnewenvironment{ListingRahm}[1][]{\lstset{#1}\ListRahm}{\endListRahm}
\begin{document}

\lstset{language=Pascal}
\begin{ListingRahm}[mathescape]
for i:=maxint to 0 do
begin
$\sum\limits_{j=1}^ni^2+j$
end;
\end{ListingRahm}

\end{document}

Gruß
Marco

tom1986
02-03-2010, 11:52
Hi,
danke für die Antwort. Mit deinem Code kann ich die Lücken im Beispiel, in denen der Hintegrund zu sehen war, ausfüllen, sodass der Hintergrund nun einheitlich grau ist. Allerdings ist das Aussehen des Listings bzw. der ganzen Seite sehr stark verändert: die caption ist nun im grauen Hintergrund und es tauchen viele Rahmen auf der Seite auf, die vorher nicht da waren.



\documentclass[a4paper]{report}
\pdfoutput=1
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[showframe]{geometry}
\usepackage{listings}
\lstset{numbers=left, numberstyle=\small, breaklines=true, basicstyle=\footnotesize}
\usepackage{xcolor,framed}
\definecolor{gray}{gray}{.85}
\newenvironment{ListRahm}{%
\def\FrameCommand{\FrameSep=4pt\fcolorbox{gray}{gr ay}}%
\setlength{\fboxrule}{2pt}%
\MakeFramed {\advance\hsize-\width\FrameRestore}}%
{\endMakeFramed}
\lstnewenvironment{ListingRahm}[1][]{\lstset{#1}\ListRahm}{\endListRahm}

\usepackage{listings}
\usepackage[pdftex,
colorlinks=true, linkcolor=blue, urlcolor=cyan, citecolor=red,
raiselinks=true,%
bookmarks=true,%
bookmarksopenlevel=1,%
bookmarksopen=true,%
bookmarksnumbered=true,%
hyperindex=true,%
plainpages=false,% correct hyperlinks
pdfpagelabels=true%,% view TeX pagenumber in PDF reader
%pdfborder={0 0 0.5}
]{hyperref} % erzeuge Hyperlinks z.B. für pdflatex

\lstset{backgroundcolor=\color{gray}, numbers=left, numberstyle=\small, breaklines=true, basicstyle=\footnotesize}
\begin{document}
%\begin{lstlisting}[caption={Caption}, mathescape=true, nolol=true]
\begin{ListingRahm}[mathescape,caption=Caption]
Zeile 1
x = $\left\{
\begin{array}{ll} true & \textrm{,falls Bedingung}\\
false & \textrm{, sonst}
\end{array}
\right.
$
Zeile 3
\end{ListingRahm}
%\end{lstlisting}
\end{document}


Ist es irgendwie möglich, dass man das Aussehen wie im Minibeispiel aus dem ersten Posting beibehält, sodass sich die restliche Seite und das Aussehen des Listings nicht verändert?

MfG Tom

tom1986
05-03-2010, 16:05
Ist es vielleicht möglich, das Listing irgendwie so zu modifizieren, dass man eine graue Box in den Hintergrund einfügt?

tom1986
31-03-2010, 23:33
Hallo,

Weiß wirklich niemand, wie man den Hintergrund wieder als eine einheitliche graue Fläche machen kann? Mit der Lösung von mechanicus ändert sich leider das Aussehen/Seitenlayout zu stark (trotzdem danke für deine Lösung :) ). Da ich die dazugehörige Arbeit sehr bald abgeben muss:eek:, und mir ein weißer Hintergrund nicht so schön erscheint, wäre ich sehr dankbar, wenn jemand eine Lösung wüsste, die das restliche Layout nicht/kaum beeinträchtigt.

Danke schon mal im Vorraus,
Tom

mechanicus
01-04-2010, 00:20
Hi,


\documentclass[a4paper]{report}
\pdfoutput=1
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[showframe]{geometry}

\usepackage{xcolor,framed}
\usepackage{caption}
\usepackage{listings}

\usepackage{listings}
\lstset{backgroundcolor=\color{gray}, numbers=left, numberstyle=\small, breaklines=true, basicstyle=\footnotesize}
\definecolor{gray}{gray}{.85}
\newenvironment{ListRahm}{%
\def\FrameCommand{\FrameSep=4pt\fcolorbox{gray}{gr ay}}%
\setlength{\fboxrule}{2pt}%
\MakeFramed {\advance\hsize-\width\FrameRestore}}%
{\endMakeFramed}
\lstnewenvironment{ListingRahm}[2][]{%
\center
\captionsetup{type=lstlisting}\caption{#2}
\vspace*{-3\medskipamount}
\endcenter%
\lstset{aboveskip=0pt,belowskip=0pt,#1}\ListRahm}{ \endListRahm}


\usepackage[pdftex,
colorlinks=true, linkcolor=blue, urlcolor=cyan, citecolor=red,
raiselinks=true,%
bookmarks=true,%
bookmarksopenlevel=1,%
bookmarksopen=true,%
bookmarksnumbered=true,%
hyperindex=true,%
plainpages=false,% correct hyperlinks
pdfpagelabels=true%,% view TeX pagenumber in PDF reader
%pdfborder={0 0 0.5}
]{hyperref} % erzeuge Hyperlinks z.B. für pdflatex


\begin{document}
T Text
\begin{ListingRahm}[mathescape=true]{Caption}
Zeile 1
x = $\left\{
\begin{array}{ll} true & \textrm{,falls Bedingung}\\
false & \textrm{, sonst}
\end{array}
\right.
$
Zeile 3
\end{ListingRahm}

\end{document}

Gruß
Marco

tom1986
06-04-2010, 12:11
Hallo,
danke für die Lösung, damit kann der unterbrochene Hintergrund wiederhergestellt werden.:)
Ich dachte das letzte mal, dass die Linien, die durch das Paket

\usepackage[showframe]{geometry}
auf der Seite eingefügt wurden, ebenfalls zur der ListRahm-Umgebung gehören. Aber durch's Auskommentieren hat es super funktioniert.:D
Eine kleine Frage hätte ich trotzdem: Bei einem Listing stand sonst immer noch eine Nummerierung, die jetzt fehlt, obwohl es mit korrekter Nummer in "listoflisting" angezeigt wird. Kann man die ListingRahm-Umgebung erweitern, dass auch wieder die Nummerierung angezeigt wird?

Viele Grüße,
Tom

mechanicus
06-04-2010, 12:44
Eine kleine Frage hätte ich trotzdem: Bei einem Listing stand sonst immer noch eine Nummerierung, die jetzt fehlt, obwohl es mit korrekter Nummer in "listoflisting" angezeigt wird. Kann man die ListingRahm-Umgebung erweitern, dass auch wieder die Nummerierung angezeigt wird?

\documentclass[a4paper]{report}
\pdfoutput=1
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[showframe]{geometry}

\usepackage{xcolor,framed}
\usepackage{listings}
\usepackage{caption}
% \DeclareCaptionFormat{plain}{#1#2#3\par}
\captionsetup[lstlisting]{labelformat=listingsformart}
\DeclareCaptionLabelFormat{listingsformart}{\bfser ies #1 #2}

\lstset{backgroundcolor=\color{gray}, numbers=left, numberstyle=\small, breaklines=true, basicstyle=\footnotesize}
\definecolor{gray}{gray}{.85}
\newenvironment{ListRahm}{%
\def\FrameCommand{\FrameSep=4pt\fcolorbox{gray}{gr ay}}%
\setlength{\fboxrule}{2pt}%
\MakeFramed {\advance\hsize-\width\FrameRestore}}%
{\endMakeFramed}
\lstnewenvironment{ListingRahm}[2][]{%
\center
\captionsetup{type=lstlisting}\caption{#2}
\vspace*{-3\medskipamount}
\endcenter%
\lstset{aboveskip=0pt,belowskip=0pt,#1}\ListRahm}{ \endListRahm}


\usepackage[pdftex,
colorlinks=true, linkcolor=blue, urlcolor=cyan, citecolor=red,
raiselinks=true,%
bookmarks=true,%
bookmarksopenlevel=1,%
bookmarksopen=true,%
bookmarksnumbered=true,%
hyperindex=true,%
plainpages=false,% correct hyperlinks
pdfpagelabels=true%,% view TeX pagenumber in PDF reader
%pdfborder={0 0 0.5}
]{hyperref} % erzeuge Hyperlinks z.B. für pdflatex


\begin{document}
\lstlistoflistings
T Text
\begin{ListingRahm}[mathescape=true]{Caption}
Zeile 1
x = $\left\{
\begin{array}{ll} true & \textrm{,falls Bedingung}\\
false & \textrm{, sonst}
\end{array}
\right.
$
Zeile 3
\end{ListingRahm}

\end{document}


Gruß
Marco

tom1986
06-04-2010, 19:16
Hallo,

hat super funktioniert.:)
Eine Sache ist mir allerdings aufgefallen. Ich habe jetzt alle meine Listings auf die neue Umgebung geändert. Bei manchen war die Option "nolol=true", da ich einzelne Listings nicht im Listing-Verzeichnis stehen haben wollte. Mit der neuen Umgebung scheint die Option allerdings keine Wirkung mehr zu haben. Andere Optionen wie "mathescape" funktionieren weiterhin. Kann man die Option wieder irgendwie aktivieren?

Viele Grüße,
Tom

tom1986
09-04-2010, 17:13
Hi,

Wenn die Option "nolol=true" keine Wirkung mehr zeigt :confused: und sich in der neuen Umgebung 'ListingRahm' nicht mehr aktivieren lässt, ist es dann vielleicht möglich, Einträge aus dem Listings-Verzeichnis (lstlistoflistings) wieder zu entfernen?

Viele Grüße,
Tom

lockstep
09-04-2010, 18:24
Vielleicht nicht die eleganteste Lösung - ich habe eine neue Umgebung ListingRahmNolol definiert, die praktisch das gleiche tut wie ListingRahm, jedoch statt \caption \caption* verwendet.



\documentclass[a4paper]{report}
\pdfoutput=1
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[showframe]{geometry}

\usepackage{xcolor,framed}
\usepackage{listings}
\usepackage{caption}
% \DeclareCaptionFormat{plain}{#1#2#3\par}
\captionsetup[lstlisting]{labelformat=listingsformart}
\DeclareCaptionLabelFormat{listingsformart}{\bfser ies #1 #2}

\lstset{backgroundcolor=\color{gray}, numbers=left, numberstyle=\small, breaklines=true, basicstyle=\footnotesize}
\definecolor{gray}{gray}{.85}
\newenvironment{ListRahm}{%
\def\FrameCommand{\FrameSep=4pt\fcolorbox{gray}{gr ay}}%
\setlength{\fboxrule}{2pt}%
\MakeFramed {\advance\hsize-\width\FrameRestore}}%
{\endMakeFramed}
\lstnewenvironment{ListingRahm}[2][]{%
\center
\captionsetup{type=lstlisting}\caption{#2}
\vspace*{-3\medskipamount}
\endcenter%
\lstset{aboveskip=0pt,belowskip=0pt,#1}\ListRahm}{ \endListRahm}
\lstnewenvironment{ListingRahmNolol}[2][]{%
\center
\captionsetup{type=lstlisting,list=false}\caption* {#2}
\vspace*{-3\medskipamount}
\endcenter%
\lstset{aboveskip=0pt,belowskip=0pt,#1}\ListRahm}{ \endListRahm}


\usepackage[pdftex,
colorlinks=true, linkcolor=blue, urlcolor=cyan, citecolor=red,
raiselinks=true,%
bookmarks=true,%
bookmarksopenlevel=1,%
bookmarksopen=true,%
bookmarksnumbered=true,%
hyperindex=true,%
plainpages=false,% correct hyperlinks
pdfpagelabels=true%,% view TeX pagenumber in PDF reader
%pdfborder={0 0 0.5}
]{hyperref} % erzeuge Hyperlinks z.B. für pdflatex


\begin{document}
\lstlistoflistings
T Text

\begin{ListingRahmNolol}[mathescape=true]{Caption}
Zeile 1
x = $\left\{
\begin{array}{ll} true & \textrm{,falls Bedingung}\\
false & \textrm{, sonst}
\end{array}
\right.
$
Zeile 3
\end{ListingRahmNolol}

\begin{ListingRahm}[mathescape=true]{Caption}
Zeile 1
x = $\left\{
\begin{array}{ll} true & \textrm{,falls Bedingung}\\
false & \textrm{, sonst}
\end{array}
\right.
$
Zeile 3
\end{ListingRahm}

\end{document}


lockstep

mechanicus
09-04-2010, 20:57
Hi,


\documentclass[a4paper]{report}
\pdfoutput=1
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[showframe]{geometry}

\usepackage{xcolor,framed}
\usepackage{listings}
\usepackage{caption}
% \DeclareCaptionFormat{plain}{#1#2#3\par}
\captionsetup[lstlisting]{labelformat=listingsformart}
\DeclareCaptionLabelFormat{listingsformart}{\bfser ies #1 #2}

\lstset{backgroundcolor=\color{gray}, numbers=left, numberstyle=\small, breaklines=true, basicstyle=\footnotesize}
\definecolor{gray}{gray}{.85}
\newenvironment{ListRahm}{%
\def\FrameCommand{\FrameSep=4pt\fcolorbox{gray}{gr ay}}%
\setlength{\fboxrule}{2pt}%
\MakeFramed {\advance\hsize-\width\FrameRestore}}%
{\endMakeFramed}
\makeatletter
\lstnewenvironment{ListingRahm}[2][]{%
\center\captionsetup{type=lstlisting}
\lstset{#1}
\lst@ifnolol
\caption[]{#2}
\else
\caption{#2}
\fi
\vspace*{-3\medskipamount}
\endcenter%
\lstset{aboveskip=0pt,belowskip=0pt,#1}\ListRahm}{ \endListRahm}
\makeatother

\usepackage[pdftex,
colorlinks=true, linkcolor=blue, urlcolor=cyan, citecolor=red,
raiselinks=true,%
bookmarks=true,%
bookmarksopenlevel=1,%
bookmarksopen=true,%
bookmarksnumbered=true,%
hyperindex=true,%
plainpages=false,% correct hyperlinks
pdfpagelabels=true%,% view TeX pagenumber in PDF reader
%pdfborder={0 0 0.5}
]{hyperref} % erzeuge Hyperlinks z.B. für pdflatex

\usepackage{lipsum}
\begin{document}
\lstlistoflistings
\chapter{foo}
\lipsum[1]
\begin{ListingRahm}[mathescape=true]{Caption 1}
Zeile 1
x = $\left\{
\begin{array}{ll} true & \textrm{,falls Bedingung}\\
false & \textrm{, sonst}
\end{array}
\right.
$
Zeile 3
\end{ListingRahm}
\lipsum[1]
\begin{ListingRahm}[mathescape=true,nolol=true]{Caption 2}
Zeile 1
x = $\left\{
\begin{array}{ll} true & \textrm{,falls Bedingung}\\
false & \textrm{, sonst}
\end{array}
\right.
$
Zeile 3
\end{ListingRahm}
\lipsum[1]
\end{document}

Gruß
Marco

tom1986
16-04-2010, 18:37
Hallo,
ich bin gerade etwas im Abgabestress, deswegen hatte ich ganz vergessen zu antworten.:o
Ich hab mich für die Lösung von mechanicus/Marco entschieden (trotzdem danke lockstep!), da ich so nur eine Umgebung definieren muss, mit der beide Fälle möglich sind. Deine Lösung funktioniert super, deswegen vielen Dank dafür :).

Viele Grüße,
Tom

lockstep
16-04-2010, 18:39
Ich hab mich für die Lösung von mechanicus/Marco entschieden (trotzdem danke lockstep!), da ich so nur eine Umgebung definieren muss, mit der beide Fälle möglich sind.

Kein Problem - mein Ansatz war mehr als Notlösung für den Fall gedacht, dass mechanicus sich nicht meldet. :)

lockstep