PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kollision mit Caption bei mehrspaltiger Listing



Tobis
09-11-2012, 17:14
Hallo zusammen,

ich habe ein mehrspaltiges Listing erstellt. Dabei kollidieren die Spalten des Listings mit der Caption.

Hier das MB:

\documentclass{article}

\usepackage{caption}
\captionsetup{width=0.9\textwidth}
\usepackage{listings}
\usepackage{multicol}

\begin{document}
\lstset{caption= Das ist meine Ueberschrift, multicols=3}
\begin{lstlisting}
1
2
3
4
5
6
\end{lstlisting}
\end{document}

Wenn das captionsetup auskommentiert wird, dann tritt das Problem nicht auf. Allerdings sieht dann die Caption nicht so aus, wie ich will :) Außerdem erstreckt sich dann die Caption nur über die erste Spalte des Listings, was auch etwas unschön aussieht.

Hat jemand einen Tip für mich, wie ich das in den Griff bekomme?

Viele Grüße
Tobi

Lilliane
12-11-2012, 07:20
Wenn das captionsetup auskommentiert wird, dann tritt das Problem nicht auf. Allerdings sieht dann die Caption nicht so aus, wie ich will :)

So ganz hab ich nicht verstanden, wo denn jetzt die Caption hin soll. Daneben in die erste Spalte? Darüber? Darunter?

Da sich auch sonst niemand zu Deiner Frage geäußert hat, wär es vermutlich sinnvoll, hier ein bisschen mehr zu erklären, was für ein Ergebnis Du erreichen willst.

Tobis
12-11-2012, 07:29
Hallo Lilliane,

eigentlich soll die Caption über das komplette Listing. Falls das nicht funktioniert würde es auch reichen, wenn sie nur über der ersten Spalte ist.

Viele Grüße
Tobi

Lilliane
12-11-2012, 07:53
Hallo Tobi,

in der Package Documentation von listings (http://www.ctan.org/pkg/listings) steht, dass multicolumns mit einigen Keys Probleme hat. Vermutlich ist caption eins dieser Probleme.

Du könntest die Überschrift in ein captionof reinpacken, dann läuft es:

\documentclass{article}

\usepackage{caption}
\captionsetup{width=0.9\textwidth}
\usepackage{listings}
\usepackage{multicol}

\begin{document}
\captionof{lstlisting}{Das ist meine Ueberschrift}
\lstset{multicols=3}
\begin{lstlisting}
1
2
3
4
5
6
\end{lstlisting}
\end{document}

VG

Lilly

Tobis
12-11-2012, 18:09
Hallo Lilly,

von dem Problem habe ich in der Doku auch gelesen, das hat mich leider nicht weitergebracht. Ich bin aber auch nicht drauf gekommen es mit captionof zu versuchen. Damit sieht es jetzt so aus, wie ich es haben will.

Vielen Dank für deine Hilfe!
Tobi

p.S. für die Nachwelt: Bei Benutzung dieser Lösung erhalte ich eine Warnung, die ich durch hypcap=false im caption-Paket abstellen konnte (natürlich nur möglich wenn man hypcap=true, was anscheinend default ist, nicht braucht).