
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:
Antwort1
Willkommen bei TeX.SX!
Wenn Sie verwenden, \DeclareCaptionType
scheinen 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 float
den 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:
- Weiterführende Literatur:Tabellen/Abbildungen in der Nähe der Stelle platzieren, an der sie erwähnt werden
\begin{center} ... \end{center}
fügt unerwünschten vertikalen Raum hinzu. Verwenden Sie\centering
:Soll ich für Abbildungen und Tabellen „Mitte“ oder „Zentrierung“ verwenden?- Ich habe vergessen, was ich hier sagen wollte. Ich werde es bearbeiten, wenn ich mich daran erinnere.
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}