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, 12:03

feynman's gravatar image

feynman
9671431
Akzeptiert: 100%

bearbeitet 09 Aug '14, 12:04

Clemens's gravatar image

Clemens
19.0k112960


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, 14:54

Ijon%20Tichy's gravatar image

Ijon Tichy
4.4k618

bearbeitet 09 Aug '14, 14:57

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

(09 Aug '14, 14: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, 15:07) Ijon Tichy
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×44
×43
×5

Frage gestellt: 09 Aug '14, 12:03

Frage wurde angeschaut: 2,073 Mal

Zuletzt aktualisiert: 09 Aug '14, 15:15