PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei Fragen zum Listings Paket



rapunzel
15-03-2012, 18:20
Hallo!
Ich habe im Moment so meine Probleme mit dem Listings Paket. Ich benutze das Paket Listings zusammen mit dem Caption Paket, sodass ich meinen Listings eine Art Titel-Leiste geben kann. Das Problem ist, dass diese Titel-Leiste manchmal alleine auf einer Seite steht und der Code dann auf der nächsten Seite. Das soll aber nicht passieren. Ich möchte gerne, dass die Titelleiste dann mit auf die nächste Seite kommt.
Meine zweite Frage betrifft Inline-Listings. Kann man das irgendwie so einstellen, dass nicht mitten im Listing ein Zeilenumbruch kommt? Das sieht nämlich blöd aus, wenn man im Listings schreibt funktionenName() und die beiden Klammern, stehen dann alleine in der nächsten Zeile. Wenn ich breaklines auf false stelle, schreibt Latex leider den Listing-Code auf den Rand, wo eigentlich gar nichts stehen darf.
Hier mal ein Beispiel, was alle Probleme zeigt.


\documentclass[a4paper,twoside,openright,11pt,]{report}
\usepackage[utf8]{inputenc}
\usepackage[scaled]{beramono}
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{color}
\lstset{
basicstyle=\footnotesize\ttfamily, % Standardschrift
keywordstyle=\bfseries,
numbers=left, % Ort der Zeilennummern
numberstyle=\tiny, % Stil der Zeilennummern
%stepnumber=2, % Abstand zwischen den Zeilennummern
numbersep=5pt, % Abstand der Nummern zum Text
tabsize=2, % Groesse von Tabs
extendedchars=true, %
breaklines=true, % Zeilen werden Umgebrochen
frame=b,
stringstyle=\slshape,
showspaces=false, % Leerzeichen anzeigen ?
showtabs=false, % Tabs anzeigen ?
xleftmargin=17pt,
framexleftmargin=17pt,
framexrightmargin=5pt,
framexbottommargin=4pt,
commentstyle=\color{black},
%backgroundcolor=\color{grey},
showstringspaces=false, % Leerzeichen in Strings anzeigen ?
literate=%
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ß}{{\ss}}2
{ü}{{\"u}}1
{ä}{{\"a}}1
{ö}{{\"o}}1
}

\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox{black}{\p arbox{\textwidth}{\vspace{2pt}#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,small}}

\begin{document}

Test\\[50em]
\begin{lstlisting}[caption=Test, language=Java]
Hier steht Code
\end{lstlisting}
Inline-Listing: sdfsdfsdffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff\lstinline!funktionenName()!\\
Inline-Listing: sdfsdfsdffffffffffffffffffffffffffffffffffffffffff fffffffffffffffff\lstinline[breaklines=false]!langerFunktionenName()!
Der Text vom Listing geht über den Rand hinaus. Dieser Text wird passend am Rand umgebrochen.
\end{document}

hakaze
16-03-2012, 09:33
Problem Nr. 1 lässt mit der Option float lösen. Du hast ja eh' schon eine Caption, warum nicht das ganze Listing als Gleitumgebung setzen !?!

...
\begin{lstlisting}[float=htb, caption=Test, language=Java] % htb ... Platzierungsparameter wie üblich bei Gleitumgebungen
Hier steht Code
\end{lstlisting}
...
Bei Problem Nr 2. ist es wie mit URLs. Wie soll man eine korrekte Trennung/einen Zeilenumbruch vornehmen, ohne den Leser mit zusätzlich Leerzeichen oder Bindestrichen zu verwirren, die nicht zum Befehl gehören? In diesem Fall würde ich den Satz umformulieren. Wenn das nicht geht, ist das Einfügen "unsichtbare" Trennstellen sicher noch verschmerzbar. Wenn du eh' nur kurze Befehle einfügen musst, reicht vielleicht schon:
... \texttt{\footnotesize funktionen\hspace{0pt}Name()} ...Für häufige Verwendung kannst du auch texttt und footnote size in ein eigenes Makro verpacken.

PS: Absätze sollten immer durch Leerzeilen gesetzt werden, nicht mit Doppel-Backslash.

rapunzel
16-03-2012, 21:40
Besten Dank, hat gut geklappt.