Listenauflistung unter dem Text positionieren

Listenauflistung unter dem Text positionieren

Ich habe Probleme, wenn ich lstlisting verwende, um Code hervorzuheben. Im Latex-Code wollte ich, dass die Auflistung unter dem Text erscheint, aber sie ignoriert die Struktur des Codes und platziert sie über dem Code. Wie erzwinge ich, dass Codeauflistungen der Struktur und Reihenfolge folgen, die ich im Latex-Code schreibe?

Der Kern-Latex-Code:

\documentclass[12pt, a4paper]{article}
%% PACKAGES %%
\usepackage[a4paper,left=1.6cm, right=2cm, top=1.5cm, bottom=0.5cm,includefoot, footskip=30pt]{geometry}
\usepackage[backend=biber, style=iso-numeric, babel=other, urldate=short]{biblatex}
\addbibresource{ref.bib}
\usepackage{url}
\usepackage{float}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{caption}
\usepackage{pdfpages}
\usepackage{setspace}
\usepackage{lipsum}

%% FORMATING %%
\DeclareCaptionType{code}[code][list of code] 
\renewcommand{\lstlistingname}{code}
\onehalfspacing

%% CODE COLORS %%
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.97,0.97,0.97}

\lstdefinestyle{mystyle}{
    backgroundcolor=\color{backcolour},   
    commentstyle=\color{codegray},
    keywordstyle=\color{codegreen},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codepurple},
    basicstyle=\ttfamily\footnotesize,
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                 
    numbers=left,                    
    numbersep=5pt,                  
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=2
}

\lstset{style=mystyle}
\setcounter{section}{-1}

\begin{document}
%% START DOCC %%

\section{sample that should be on top}
\lipsum[1]

\begin{center}
    \begin{code}
    \begin{lstlisting}[language=python, frame=single]
        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. Donec vehicula augue eu neque. Pellentesque habitant
        morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras    \end{lstlisting}
    \caption[bleh1]{bleh1}
    \end{code}
\end{center}

\begin{center}
    \begin{code}
    \begin{lstlisting}[language=python, frame=single]
        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,
    \end{lstlisting}
    \caption[bleh2]{bleh2}
    \end{code}
\end{center}

%% END OF DOCC %%
\end{document}

Ausgabe:

Latex-Ausgabe

Antwort1

Willkommen bei TeX.SX!

Wenn Sie verwenden, \DeclareCaptionTypescheinen Sie im Grunde eine neue Float-Umgebung zu definieren. Der Inhalt wird, nun ja, schweben! Wenn Sie nicht möchten, dass er schwebt, können Sie floatden Spezifizierer von verwenden [H], um den Float zu platzierengenauwo es in Ihrem Code ist.Warnung:Es gibt mehrere Gründe, warum Sie es nicht tun sollten (https://tex.stackexchange.com/a/373265/237192um einige zu nennen).

Eine andere Möglichkeit besteht in der Verwendung von placeins' \FloatBarrier, wodurch verhindert wird, dass Floats über diese Barriere hinweg schweben. Sie können also eines nach Ihrem Abschnittstitel platzieren.

Noch besser: Wenn Sie nicht möchten, dass es schwebt, machen Sie es nicht zu einem Float. Sie müssen es nicht in ein Float einbinden, Sie können einfach verwenden \begin{lstlisting}[caption=test] ... \end{lstlisting}. So gehen Sie vor.

Noch ein paar Hinweise:

Nach Kommentar bearbeiten

Um tatsächlich ein wirklich minimales funktionierendes Beispiel zu haben:

\documentclass[12pt, a4paper]{article}
%% PACKAGES %%
\usepackage{lipsum}
\usepackage{listings}
\lstset{basicstyle=\ttfamily\footnotesize,breaklines=true,captionpos=b}

\begin{document}
    \section{sample that should be on top}
    \lipsum[1][1-3]
    \begin{lstlisting}[language=python, frame=single, caption=This is code 1]
        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, ...
    \end{lstlisting}
    \begin{lstlisting}[language=python, frame=single, caption=This is code 2]
        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, ...
    \end{lstlisting}
    \lstlistoflistings
\end{document}

Ergebnis

verwandte Informationen