Listing Caption in Listenstrukturen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Listing Caption in Listenstrukturen

Re: Listing Caption in Listenstrukturen

von sommerfee » Mi 28. Okt 2020, 11:01

Das ist ein Fehler im listings-Paket, oder zumindest eine Inkompatiblität des listing-Paketes mit Umgebungen, die auf Listen basieren. Beispiel:

\documentclass{book}
\usepackage{listings}
\lstset{language=C++,basicstyle={\ttfamily}}

\begin{document}
\begin{enumerate}
\item Erstes Item
\begin{lstlisting}[caption={Überschrift test test test test test test test test test test test test}]
#include <iostream>
int main()
{
  std::cout << "Hallo Welt!" << std::endl;
}\end{lstlisting}
\item Zweites Item
\end{enumerate}
\end{document}

Der Maintainer des listings-Paket weiß bescheid, allerdings habe ich keine Rückmeldung mehr seit August bekommen und weiß auch nicht, ob und für wann eine Anpassung geplant ist.

Konkret verwendet das listings-Paket \@makecaption zum Setzen der Beschriftung, welches \hsize als Bemessungsgrundlage verwendet, wie die Beschriftung gesetzt wird. Innerhalb von Listen ist aber \hsize so gesetzt, daß es die Seitenbreite umfasst, also passt das hier nicht. (Dies ist ein bekanntes Problem von \@makecaption in LaTeX, siehe auch https://www.latex-project.org/cgi-bin/l ... latex/2472 )

Eine mögliche Abhilfe innerhalb des listings-Paketes wäre es z.B., \@makecaption innerhalb einer \parbox der korrekten Breite zu verwenden.

Mein Rat: Schreibe dem Maintainer des listings-Paketes eine e-mail deswegen. (Er spricht deutsch.)

Listing Caption in Listenstrukturen

von Zentox » Do 22. Okt 2020, 12:30

Ich verwende das Package listings und habe dazu einen custom Listing Design angelegt. Nun habe ich folgendes Problem in itemize bzw. enumerate, dass die Listings nicht wie gewünscht aussehen. Ich habe hierzu ein Beispiel eingefügt und hoffe, dass jemand mir weiterhelfen kann. Das unerwünschte Ergebnis seht ihr jeweils in enumerate. Alle Listings sollen wie Beispiel 0 aussehen.

Danke im Voraus!

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}

\definecolor{lstbgc}{gray}{0.9}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{caption}

\definecolor{backgroundcolor}{rgb}{0.95, 0.95, 0.92}
\definecolor{commentcolor}{rgb}{0.55, 0.55, 0.55}
\definecolor{identifiercolor}{rgb}{0, 0, 0}
\definecolor{keywordcolor}{rgb}{0, 0, 0.5}
\definecolor{numbercolor}{rgb}{0, 0, 0}
\definecolor{stringcolor}{rgb}{0, 0.5, 0}

\lstdefinestyle{Java}{
	basicstyle = \mdseries,
	backgroundcolor =  \color{backgroundcolor},
	breaklines = true,
	commentstyle = \color{commentcolor},
	identifierstyle = \color{identifiercolor},
	keywordstyle = \color{keywordcolor},
	language = Java,
	morekeywords = {assert},
	numbers = left,
	numberstyle = \color{numbercolor},
	showspaces = false,
	showstringspaces = false,
	showtabs = false,
	stringstyle = \color{stringcolor},
	tabsize = 2,
	title = ~
}

\usepackage{caption}[2015/09/20]
\captionsetup[lstlisting]{%
	box = colorbox,
	boxcolor = black,
    font = {color = white},
    singlelinecheck = off
    }

\begin{document}
\begin{lstlisting}[style = Java,title = Beispiel 0]
public static void main(String[] args) {
	System.out.println("Hello World");
}
\end{lstlisting}
\begin{enumerate}
    \item item 1
        \begin{lstlisting}[style = Java ,title = Beispiel 1]
public static void main(String[] args) {
	System.out.println("Hello World");
}
        \end{lstlisting}
        bla bla
    \item item 2
        \begin{lstlisting}[style = Java ,title = Beispiel 2]
public static void main(String[] args) {
	System.out.println("Hello World");
}
        \end{lstlisting}
\end{enumerate}
\end{document}

Bild


Nach oben