PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrere Listings unter- bzw. nebeneinander



yussibaer
29-01-2006, 16:49
Hallo,
weiß jemand wie man mehrere Listings unter- bzw. nebeneinander darstellen kann. Mit Grafiken geht das ganz praktisch mit dem Befehl subfigure.
Gibt es sowas auch für Listings, so dass also zusammengehörige Listing auch mit z.B. 4.a), 4.b) usw. durchnummeriert werden.

Gruß
yussibaer

countbela666
29-01-2006, 18:54
Hallo yussibaer,

mir ist nicht bekannt, dass das listings-Paket solche Sub-Listings unterstützt, aber mit ein wenig Gebastel sollte das mit dem Paket subfig machbar sein.

Problematisch ist hierbei nur, dass verbatiminput, wie er in Listings ja nunmal vorkommt, innerhalb des \subfloat-Befehls des Pakets subfig nicht erlaubt ist. Deshalb müssen wir uns erst einmal eine SubFloat-Umgebung anlegen, die diesen verbatiminput in eine Box packt, die dann wieder dem \subfloat-Befehl übergeben wird (s. subfig-Doku Abschnitt 4.4).

Dann muss auch noch eine entsprechende Gleitumgebung angelegt werden, die die captions und Verzeichniseinträge verwaltet. Normalerweise macht das zwar das listings-Paket für seine lstlisting-Umgebung selbst, das erzeugt dann allerdings Probleme, wenn nicht alle Listings in subfloats stecken; dann würden die Einträge teilweise in verschiedenen Verzeichnissen landen. Aus diesem Grund müsstest du jetzt auch einzelne Listings nochmal in die neue mylisting-Umgebung packen und die caption innerhalb dieser angeben.

Klingt alles ein bisschen umstäbdlich, ist zugegebenermaßen auch ganz schön gebastelt, aber es sollte so funktionieren. Hier mal ein MB:

\documentclass{article}
\usepackage{listings,float,subfig}
%%%%%% neues SubFloat für verbatiminput
\makeatletter
\newbox\sf@box
\newenvironment{SubFloat}[2][]{%
\def\sf@one{#1}%
\def\sf@two{#2}%
\setbox\sf@box\hbox
\bgroup
}{%
\egroup
\ifx\@empty\sf@two\@empty\relax
\def\sf@two{\@empty}
\fi
\ifx\@empty\sf@one\@empty\relax
\subfloat[\sf@two]{\box\sf@box}%
\else
\subfloat[\sf@one][\sf@two]{\box\sf@box}%
\fi
}
\makeatother
%%%%%% neue Gleitumgebung mylisting
\newfloat{mylisting}{htbp}{lom}
\restylefloat*{mylisting}
\floatstyle{plain}
\floatname{mylisting}{Listing}
\captionsetup[mylisting]{position=bottom}
\newsubfloat[position=bottom]{mylisting}
%%%%%% Sub-Floats im jeweiligen Verzeichnis mit anzeigen
\captionsetup[subfloat]{%
lomdepth=2
}
\begin{document}
%%%%%% Listingsverzeichnis
\listof{mylisting}{\lstlistlistingname}
%%%%%% zwei Sub-Listings
\begin{mylisting}
\centering
\caption{Haupttitel}
\begin{SubFloat}{Nummer 1}
\begin{minipage}{.4\textwidth}
\begin{lstlisting}[frame=single]
bla
bla
blupp
\end{lstlisting}
\end{minipage}
\end{SubFloat}
\quad
\begin{SubFloat}{Nummer 2}
\begin{minipage}{.4\textwidth}
\begin{lstlisting}[frame=single]
text
und
noch mehr
text
\end{lstlisting}
\end{minipage}
\end{SubFloat}
\end{mylisting}
%%%%% einzelnes Listing
\begin{mylisting}
\caption{Nummer 3}
\begin{lstlisting}[frame=single]
text
text
text
\end{lstlisting}
\end{mylisting}
\end{document}Grüße,
Marcel