Momentan verwende ich das listings
Paket, 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 booktabs
Paket 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 listings
Paket verwenden.
Antwort1
Das folgende Beispiel erstellt schwebende Listen unter Verwendung des tcolorbox
Pakets ohne Nummerierung der Listen. Die Umgebung preamblelisting
verwendet die Präambel als obligatorischen Parameter. Der optionale Parameter ist eine beliebige tcolorbox
Option. Das zugrunde liegende Paket für den Schriftsatz ist listings
.
Hinweis: Möglicherweise müssen Sie das tcolorbox
Paket 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}
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 cleveref
wird 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}