Ich möchte die verschachtelten Listenüberschriften wie im Bild unten neu erstellen. Ich habe Folgendes versucht:
\documentclass{article}
\usepackage{listings}
\usepackage{subcaption}
\begin{document}
\lstlistoflistings
\section{Example Python programs}
Here are two example Python programs that print "Hello, World!":
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{0.45\textwidth}
\begin{lstlisting}[language=Python,caption={[First program] Python program to print "Hello, World!"},label={lst:hello1}]
print("Hello, World!")
\end{lstlisting}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.45\textwidth}
\begin{lstlisting}[language=Python,caption={[Second program] Python program to print "Hello, World!"},label={lst:hello2}]
print("Hello, World!")
\end{lstlisting}
\end{subfigure}
\caption{Example Python programs.}
\label{fig:example}
\end{figure}
We can reference the first program using Listing \ref{lst:hello1}, and the second program using Listing \ref{lst:hello2}.
\end{document}
Allerdings werden dadurch zwei Einträge nebeneinander erstellt. Für jede Hilfe ist dankbar.
Antwort1
Hierbei wird die benutzerdefinierte Beschriftung der Listenliste verwendet.
\documentclass{article}
\usepackage{listings}
\usepackage{newfloat}
%\renewcommand{\lstlistingname}{Sublisting}
\DeclareFloatingEnvironment[fileext=lol,listname=Listings,name=Listing,placement=htp]{listing}
\usepackage{caption}
\captionsetup[listing]{position=above}
\AtBeginDocument{\counterwithin{lstlisting}{listing}}% not defined earlier
\begin{document}
\listoflistings
\section{Example Python programs}
Here are two example Python programs that print "Hello, World!":
\begin{listing}
\caption{Example Python programs.}% must be above
\label{fig:example}
\begin{lstlisting}[language=Python,caption={[First program] Python program to print "Hello, World!"},label={lst:hello1}]
print("Hello, World!")
\end{lstlisting}
\begin{lstlisting}[language=Python,caption={[Second program] Python program to print "Hello, World!"},label={lst:hello2}]
print("Hello, World!")
\end{lstlisting}
\end{listing}
We can reference the first program using Listing \ref{lst:hello1}, and the second program using Listing \ref{lst:hello2}.
\end{document}
Dies verwendet \subcaption
. Beachten Sie, dass der lstlisting
Zähler nicht erhöht wird.
\documentclass{article}
\usepackage{listings}
\usepackage{newfloat}
\renewcommand{\lstlistingname}{Sublisting}
\DeclareFloatingEnvironment[fileext=lol,listname=Listings,name=Listing,placement=htp]{listing}
\usepackage{subcaption}
\captionsetup[listing]{position=above}
\DeclareCaptionSubType{listing}
\renewcommand{\thesublisting}{\thelisting.\arabic{sublisting}}
\captionsetup[sublisting]{singlelinecheck=off,labelformat=simple,labelsep=colon,skip=0pt,list=true}
\def\sublistingname{Listing}
\begin{document}
\listoflistings
\section{Example Python programs}
Here are two example Python programs that print ``Hello, World!'':
\begin{listing}
\caption{Example Python programs.}% must to above
\label{fig:example}
\subcaption[First program]{Python program to print ``Hello, World!''}\label{lst:hello1}
\begin{lstlisting}[language=Python]
print("Hello, World!")
\end{lstlisting}
\subcaption[Second program]{Python program to print "Hello, World!"}\label{lst:hello2}
\begin{lstlisting}[language=Python]
print("Hello, World!")
\end{lstlisting}
\end{listing}
We can reference the first program using Listing \ref{lst:hello1}, and the second program using Listing \ref{lst:hello2}.
\end{document}