PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Listings Problem



DaPhil
26-03-2010, 11:06
Hallo zusammen,
ich habe ein Problem. Meine listings-Umgebung will nicht ganz so wie ich! Bei Kommentaren, die in die nächste Zeile aufgrund der Länge umgebrochen werden, verfärbt sich der Rand der Box in die Farbe, die ich den Kommentaren zugewiesen habe. Das sieht aber Käse aus, wenn da ein schwarzer Kasten mit ein paar grauen Flecken drumrum ist. Kann mir jemand helfen? Angehängt hab ich den Quelltext, der in der listing-Umgebung stehen soll.


\documentclass[oneside]{scrreprt}

\usepackage[applemac]{inputenc}
\usepackage{ngerman}
\usepackage{amsmath}
\usepackage{listings}
\usepackage{xcolor}

\definecolor{LightYellow}{rgb}{1.0,1.0,0.59}
\definecolor{LightGrey}{rgb}{0.5,0.5,0.5}

\usepackage{listings}
\lstset{
backgroundcolor=\color{LightYellow}, % Hintergrundfarbe
basicstyle=\tt, % Schriftart (\tt für Schreibmaschinenstil)
breaklines=true, % bricht überlange Zeilen um falls true
captionpos=b, % Position der Beschriftung (t/b)
commentstyle=\color{LightGrey}, % Stil der Kommentare
extendedchars=true, % erweiterte Buchstaben (ä,ö,ü,...) verfügbar falls true
firstnumber=1, % Nummer der ersten Zeile
flexiblecolumns=true, % dynamische Spaltenanpassung falls true
frame=single, % Umrandung
keywordstyle=\bf, % Stil der Schlüsselwörter (\bf für fett)
language = Matlab, % Programmiersprache
numberbychapter=true, % nummeriert die Beschriftung innerhalb eines Kapitels falls true
numberblanklines=true, % nummeriert leere Zeilen falls true
numberfirstline=true, % zeigt für die erste Zeile die Nummerierung falls true
numbers=left, % Position der Nummerierung (left/right/none)
numbersep=8pt, % Abstand der Nummerierungen
numberstyle=\tiny\color{red}, % Stil der Nummerierungen
showspaces=false, % zeigt Leerzeichen an falls true
showstringspaces=false, % zeigt Leerzeichen in Zeichenketten an falls true
showtabs=false, % zeigt Einschübe an falls true
stepnumber=5, % Abstand zwischen den Nummerierungen
stringstyle=\color{blue}, % Stil von Zeichenketten
tabsize=3 % Größe der Einschübe
}

\begin{document}

\lstset{caption=Das ganze nochmal mit einer anderen Caption}
\lstinputlisting[]{Bewegungsgleichung.m}

\end{document}

Xenara
26-03-2010, 11:29
Hi DaPhil,

vielen Dank für diese Frage, hab nämlich in meinem Dokument festgestellt, dass genau das gleiche aufgetreten ist, als Befehle getrennt wurden. Dann war die Linie plötzlich blau. Das ist mir bisher nie aufgefallen.

Es scheint leicht zu beheben zu sein: Einfach explizit die Farbe der Rahmenlinie (rulecolor) angeben:



\documentclass[oneside]{scrreprt}

\usepackage[applemac]{inputenc}
\usepackage{ngerman}
\usepackage{amsmath}
\usepackage{listings}
\usepackage{xcolor}

\usepackage{filecontents}
\begin{filecontents}{Bewegungsgleichung.m}
clear all;

format long e;

DGL=@(t,z) [z(2);-z(1).^3]; % Differentialgleichung
options=odeset('RelTol',1e-8,'AbsTol',1e-8,'InitialStep',0.1,'MaxStep',0.5); % Optionen für den ode-solver
t=[0,2*pi]; % Zeitraum, in dem die DGL gelöst wird
z_0=[1,0]; % Anfangsbedingungen

[times,traj]=ode45(DGL,t,z_0,options); % DGL mit Runge-Kutta-4/5-Verfahren lösen

plot(times,traj); % plot des Ergebnisses

T=length(times); % Anzahl der Stützpunkte
x_T=traj(:,1)(T) % x(T)
v_T=traj(:,2)(T) % v(T)
E_0=traj(:,2)(1).^2/2+traj(:,1)(1).^4/4
E_T=traj(:,2)(T).^2/2+traj(:,1)(T).^4/4
\end{filecontents}


\definecolor{LightYellow}{rgb}{1.0,1.0,0.59}
%\definecolor{LightGrey}{rgb}{0.5,0.5,0.5}

\usepackage{listings}
\lstset{
backgroundcolor=\color{LightYellow}, % Hintergrundfarbe
basicstyle=\tt, % Schriftart (\tt für Schreibmaschinenstil)
breaklines=true, % bricht überlange Zeilen um falls true
captionpos=b, % Position der Beschriftung (t/b)
frame=single, % Umrandung
commentstyle=\color{red}, % Stil der Kommentare
extendedchars=true, % erweiterte Buchstaben (ä,ö,ü,...) verfügbar falls true
firstnumber=1, % Nummer der ersten Zeile
flexiblecolumns=true, % dynamische Spaltenanpassung falls true
keywordstyle=\bf, % Stil der Schlüsselwörter (\bf für fett)
language = Matlab, % Programmiersprache
numberbychapter=true, % nummeriert die Beschriftung innerhalb eines Kapitels falls true
numberblanklines=true, % nummeriert leere Zeilen falls true
numberfirstline=true, % zeigt für die erste Zeile die Nummerierung falls true
numbers=left, % Position der Nummerierung (left/right/none)
numbersep=8pt, % Abstand der Nummerierungen
numberstyle=\tiny\color{red}, % Stil der Nummerierungen
showspaces=false, % zeigt Leerzeichen an falls true
showstringspaces=false, % zeigt Leerzeichen in Zeichenketten an falls true
showtabs=false, % zeigt Einschübe an falls true
stepnumber=5, % Abstand zwischen den Nummerierungen
stringstyle=\color{blue}, % Stil von Zeichenketten
tabsize=3, % Größe der Einschübe
rulecolor = \color{black} % Explizite Angabe der Rahmenfarbe. Sonst nimmt sie die Farbe dessen an, was gerade umbrochen wurde (z.B. Kommentarfarbe)
}

\begin{document}

\lstset{caption=Das ganze nochmal mit einer anderen Caption}
\lstinputlisting[]{Bewegungsgleichung.m}

\end{document}


Ich hab die Farbe der Kommentare auf Rot gesetzt, so sieht man leichter, obs im Rahmen stimmt oder nicht.

P.S. Für externe Files, die wichtig sind, ist die filecontents-Umgebung ein heisser Tipp.