Listings mit Präambel setzen (vorzugsweise mit dem Listings-Paket)

Listings mit Präambel setzen (vorzugsweise mit dem Listings-Paket)

Momentan verwende ich das listingsPaket, um meine Auflistungen zu setzen. Die Auflistungen sind Floats, verwenden Zeilennummern und haben eine obere und untere Linie, um sich vom umgebenden Text abzuheben.

Was ich wirklich gerne hätte, ist eine kurze Präambel zu jedem Listing, die durch eine (leichtere) Regel getrennt ist und Anmerkungen zum Listing enthält, wie Behauptungen, Nebeneffekte, Anforderungen usw. Was ich also brauche, ist eine schwerere obere Regel, eine leichtere mittlere Regel und eine schwerere untere Regel, wie sie aus dem booktabsPaket bekannt sind. Außerdem sollten die Zeilen der Präambel nicht gezählt werden, da die Präambel eigentlich nicht Teil des Listings ist.

Wie erreiche ich dies in LaTeX am einfachsten? Am liebsten würde ich das listingsPaket verwenden.

Antwort1

Das folgende Beispiel erstellt schwebende Listen unter Verwendung des tcolorboxPakets ohne Nummerierung der Listen. Die Umgebung preamblelistingverwendet die Präambel als obligatorischen Parameter. Der optionale Parameter ist eine beliebige tcolorboxOption. Das zugrunde liegende Paket für den Schriftsatz ist listings.

Hinweis: Möglicherweise müssen Sie das tcolorboxPaket aktualisieren, damit es kompiliert werden kann.

\documentclass{report}
\usepackage[skins,listings]{tcolorbox}
\usepackage{lipsum}

\newtcblisting{preamblelisting}[2][]{%
  float=htb,empty,
  boxsep=0pt,left=0pt,right=0pt,boxrule=2pt,leftrule=0pt,rightrule=0pt,
  borderline horizontal={2pt}{0pt}{black},
  segmentation engine=path,
  segmentation style={solid,line width=1pt},
  comment and listing,
  fontupper=\itshape,
  listing options={% put any listing options here
    language={[LaTeX]TeX},
    aboveskip=0pt, belowskip=0pt,numbers=left,numberstyle=\tiny,
    basicstyle=\ttfamily,columns=fullflexible},
  comment={#2},#1
}

\begin{document}

\lipsum[1]

\begin{preamblelisting}{This is the preamble. Lorem ipsum dolor sit amet,
  consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida
  mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.}
\begin{test}{Example}
This is an example
\end{test}
\end{preamblelisting}

\begin{preamblelisting}[float=b]{This is the preamble. Lorem ipsum dolor sit amet,
  consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida
  mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.}
\begin{test}{Example}
This is an example
This is an example
This is an example
\end{test}
\end{preamblelisting}

\lipsum

\end{document}

Bildbeschreibung hier eingeben

AKTUALISIEREN:

Dieses Update berücksichtigt die Kommentare des OP und fügt eine Nummerierung mit darunter gesetzten Titeln hinzu. Außerdem fügt sich dies in normale Listings aus dem Listings-Paket ein, d. h. beide können parallel verwendet werden. Abschließend cleverefwird verwendet:

\documentclass{report}
\usepackage{cleveref,varwidth}
\usepackage[skins,listings]{tcolorbox}
\usepackage{lipsum}

\Crefname{lstlisting}{Listing}{Listings}

\AtBeginDocument{%
\newtcblisting[blend into=listings]{preamblelisting}[3][]{%
  float=htb,empty,
  boxsep=0pt,left=0pt,right=0pt,boxrule=2pt,leftrule=0pt,rightrule=0pt,
  borderline horizontal={2pt}{0pt}{black},
  segmentation engine=path,
  segmentation style={solid,line width=1pt},
  comment and listing,
  fontupper=\itshape,
  listing options={% put any listing options here
    language={[LaTeX]TeX},
    aboveskip=0pt, belowskip=0pt,numbers=left,numberstyle=\tiny,
    basicstyle=\ttfamily,columns=fullflexible},
  attach boxed title to bottom center,
  varwidth boxed title,
  coltitle=black,
  boxed title style={blanker,top=2mm},
  title={#2},comment={#3},#1
}}


\begin{document}

\lstlistoflistings

\chapter{Example}

\begin{lstlisting}[language={[LaTeX]TeX},
    numbers=left,numberstyle=\tiny,
    basicstyle=\ttfamily,columns=fullflexible,
    caption={My normal listing},
    captionpos=b,
    label=mynormal]
This is a normal listing
\end{lstlisting}

\lipsum[2]

\textcolor{red}{\Cref{mynormal} is a normal listing and \Cref{mypreamble} is a listing
with a preamble.}

\begin{preamblelisting}[label=mypreamble]{My preamble listing}%
{This is the preamble. Lorem ipsum dolor sit amet,
  consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida
  mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.}
\begin{test}{Example}
This is an example
\end{test}
\end{preamblelisting}

\begin{preamblelisting}[float=b,label=floatingpreamble]{My floating preamble listing}%
{This is the preamble. Lorem ipsum dolor sit amet,
  consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida
  mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.}
\begin{test}{Example}
This is an example
This is an example
This is an example
\end{test}
\end{preamblelisting}

\lipsum

\end{document}

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

verwandte Informationen