PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Caption für mehrspaltige Listings



bluepoke
15-01-2009, 17:52
Hallo zusammen!
Ich würde gern ein ziemlich langes Quellcode-Listing über mehrere Spalten verteilen. Mir bereitet nur die Caption dafür ein Problem, die sich als erste Zeile über die gesamte Breite des Blattes erstrecken sollte.

Ich verwende die Pakete multicol und listings hierfür.



\usepackage{listings}

\usepackage{multicol}

\begin{document}

\renewcommand*{\thelstlisting}{\arabic{section}.\a rabic{lstlisting}} %Format
\makeatletter \@addtoreset{lstlisting}{section} \makeatother

\begin{multicols}{3}[\ref{lst:littleendian} Einlesen der Daten in Little-Endian-Reihenfolge]
\begin{lstlisting}[label=lst:littleendian]
%Code...
\end{lstlisting}
}end{multicols}

\end{document}


Die Listings sind im Format Section.LfdNr nummeriert (wie oben zu sehen), aber bei \ref bekomme ich nur die Section-Nummer ohne laufende Nummer ausgegeben, wenn ich bei lstlisting im optionalen Argument keine Caption angebe. Steht dort auch eine drin, also

\begin{lstlisting}[label=lst:littleendian,caption=Einlesen der Daten in Little-Endian-Reihenfolge]
erhalte ich auch das richtige Format im optionalen Argument der multicols-Umgebung.

mechanicus
16-01-2009, 12:38
Hallo,

funktioniert das bei dir jetzt? Alternativ schlage ich eine geschusterte Lösung vor, welche man auch als eigenen Umgebung definieren kann:

\documentclass{scrreprt}
\usepackage{listings}
% \renewcommand*{\thelstlisting}{\arabic{section}.\a rabic{lstlisting}} %Format
% \makeatletter \@addtoreset{lstlisting}{section} \makeatother
\usepackage{multicol}

\begin{document}

\begin{lstlisting}[caption=Einlesen der Daten in Little-Endian-Reihenfolge,label=lst:littleendian]
\end{lstlisting}
\begin{multicols}{3}
\begin{lstlisting}
%Code...
\end{lstlisting}
\end{multicols}
Das war der Programmcode \ref{lst:littleendian}.
\end{document}

Gruß
Marco

bluepoke
17-01-2009, 15:31
Hallo,

funktioniert das bei dir jetzt? Alternativ schlage ich eine geschusterte Lösung vor, welche man auch als eigenen Umgebung definieren kann:

\documentclass{scrreprt}
\usepackage{listings}
% \renewcommand*{\thelstlisting}{\arabic{section}.\a rabic{lstlisting}} %Format
% \makeatletter \@addtoreset{lstlisting}{section} \makeatother
\usepackage{multicol}

\begin{document}

\begin{lstlisting}[caption=Einlesen der Daten in Little-Endian-Reihenfolge,label=lst:littleendian]
\end{lstlisting}
\begin{multicols}{3}
\begin{lstlisting}
%Code...
\end{lstlisting}
\end{multicols}
Das war der Programmcode \ref{lst:littleendian}.
\end{document}

Gruß
Marco

Dankeschön, das funktioniert prima!