Im folgenden Beispiel möchte ich den Abstand der Caption zum Listing verringern?

Open in writeLaTeX
\documentclass[12pt]{article}

\usepackage{minted}
    \usemintedstyle{colorful}

\begin{document}

\begin{listing}[H]
\caption{Allgemeine Struktur einer \texttt{while}-Schleife}
\begin{minted}[frame=lines,linenos,fontsize=\small]{python}
while Bedingung:
    Anweisung
else:
    Alternative_Anweisung
\end{minted}
\end{listing}

\end{document}

Kann mir jemand erklären, wie das zu bewerkstelligen ist?

gefragt 09 Aug '14, 18:03

feynman's gravatar image

feynman
1.0k122937
Akzeptiert-Rate: 23%

bearbeitet 09 Aug '14, 18:04

cgnieder's gravatar image

cgnieder
22.1k243463


Die Ursache des Problems ist: Das Paket minted definiert die Umgebung minted so, dass sie am Ende einen vertikalen Abstand einfügt. Der trifft dann mit dem vertikalen Abstand der Unterschrift (\caption) zusammen, wodurch dieser Abstand vergrößert wird. Damit ist auch der Weg klar, um das Problem zu lösen. Man muss irgendwie dafür sorgen, dass der Abstand, den minted am Ende einfügt, innerhalb der listing-Umgebung wieder entfernt wird. Das könnte man mit einem \unskip direkt nach \end{minted} lösen oder man ändert minted innerhalb listings generell:

Open in writeLaTeX
\documentclass[12pt]{article}
\usepackage{minted}
    \usemintedstyle{colorful}
\usepackage{etoolbox}
\pretocmd{\listing}{%
  \apptocmd{\endminted}{\unskip}{}{\undefined}%
}{}{\undefined}

\begin{document}

\noindent\hrulefill\ Beispielzeile \hrulefill
\begin{listing}[H]
\caption{Allgemeine Struktur einer \texttt{while}-Schleife}
\begin{minted}[frame=lines,linenos,fontsize=\small]{python}
while Bedingung:
    Anweisung
else:
    Alternative_Anweisung
\end{minted}
\end{listing}
\noindent\hrulefill\ Beispielzeile \hrulefill
\begin{table}[H]
  \centering
  \begin{tabular}{c}
    \hline
    Das ist eine Beispieltabelle\\
    \hline
  \end{tabular}
  \caption{Ein Beispiel einer Abildung zum Vergleich}
\end{table}
\noindent\hrulefill\ Beispielzeile \hrulefill

\end{document}

Ich habe noch ein paar Zeilen und eine table-Umgebung eingefügt, damit man die nun geänderten Abstände besser abschätzen kann. Da writerLaTeX eventuell irgendwann einmal minted nicht beherrscht, hier das Ergebnis:

listing ohne Abstand nach minted

Permanenter link

beantwortet 09 Aug '14, 20:54

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 09 Aug '14, 20:57

@Ijon Danke für die Antwort. Kann man das Verhalten als "Bug" des minted Pakets ansehen?

(09 Aug '14, 20:59) feynman

@feynman Es ist sicher nicht ideal. Wenn man aber ggf. mehrere minted-Umgebungen in einem listing hat, dann braucht man eigentlich den Abstand. Dann wäre mein Patch ein Misfeature. Eigentlich ist das ganze auch eher ein Misfeature des float-Pakets. Dieses ist dafür verantwortlich, dass die Abstände addiert werden. Leider funktioniert es auch nicht, das \vspace im float-Paket an dieser Stelle durch \addvspace zu ersetzen, weil \lastskip dort bereits 0pt ist, TeX also den vorherigen Abstand bereits vergessen hat.

(09 Aug '14, 21:07) gast3
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×55
×50
×9

gestellte Frage: 09 Aug '14, 18:03

Frage wurde gesehen: 9,168 Mal

zuletzt geändert: 09 Aug '14, 21:15