
Das floatrow
Paket ermöglicht es, Randbeschriftungen für Abbildungen und Tabellen einzufügen, aber es scheint, als ob die Möglichkeit fehlt, dasselbe für die lstlisting
Umgebung des listings
Pakets zu tun.
Eine Problemumgehung besteht darin, dies in eine Abbildung einzufügen lstlisting
(siehe Beispiel). Dadurch können wir jedoch den Seitenumbruch für lange Codeauflistungen nicht beibehalten. Gibt es eine Möglichkeit, lstlisting
Bildunterschriften in den Rand einzufügen? Ich habe im floatrow
Paket nachgesehen, ob ich es erweitern kann, aber ich weiß nicht, wie.
\documentclass{memoir}
\usepackage{listings}
\usepackage{floatrow}
\floatsetup[figure]{margins=hangright,capposition=beside,capbesideposition={top,left},floatwidth=\textwidth}
\begin{document}
\begin{figure}
\begin{lstlisting}
This is a test
\end{lstlisting}
\caption{This is a test.}
\end{figure}
\end{document}
Das caption
Paket bietet eine Möglichkeit, Fig X:
den Rand einzufügen (siehe unten), aber das Einfügen des dritten Arguments innerhalb llap
scheint nicht zu funktionieren.
\DeclareCaptionFormat{llap}{\llap{#1#2}#3\par}
\captionsetup{lstlisting}{format=llap,labelsep=quad,singlelinecheck=no}
Antwort1
memoir
und floatrow
kooperieren nicht gut. Wenn Sie seitliche Beschriftungen für Tabelle und Abbildung wünschen, können Sie memoir
den \sidecap
Befehl verwenden (siehe Abschnitt10.10 SEITLICHE UNTERTITELdes Handbuchs). Bei mit erstellten Listings lstlisting
muss man etwas mehr Arbeit investieren.
Der folgende (verbesserungswürdige) Code zeigt einen Ansatz; die Überschrift wird in einer Box mit der Breite gespeichert \sidecapwidth
und dann mit in den Rand gesetzt \sidepar
:
\documentclass{memoir}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{marginnote}
\usepackage{lipsum}
\newsavebox\mycap
\newlength\mycapHt
\setlength\sidecapwidth{77pt}
\DeclareCaptionFormat{llap}{%
\begin{lrbox}{\mycap}
\begin{minipage}{\sidecapwidth}
\raggedright#1:#2#3
\end{minipage}%
\end{lrbox}%
\settoheight\mycapHt{\usebox\mycap}%
\addtolength\mycapHt{.85\baselineskip}%
\setlength\sideparvshift{\mycapHt}%
\sidepar{\usebox\mycap}}
\captionsetup[lstlisting]{format=llap,labelsep=space,singlelinecheck=no}
\begin{document}
\begin{figure}
\begin{sidecaption}{An illustration}[fig:ill]
\centering
\includegraphics[height=4cm]{example-image-a}
\end{sidecaption}
\end{figure}
\lipsum[4]
\begin{lstlisting}[caption={test caption for a listing}]
This is a test
This is a test
This is a test
This is a test
This is a test
\end{lstlisting}
\lipsum[4]
\begin{lstlisting}[caption={test caption for a listing that will span several lines}]
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
\end{lstlisting}
\lipsum[4]
\end{document}