Позиция списка ниже текста

Позиция списка ниже текста

У меня возникают проблемы при использовании lstlisting для выделения кода. В коде latex я хотел, чтобы листинг отображался под текстом, но он игнорирует структуру кода и размещает его над кодом. Как заставить листинги кода подчиняться структуре и порядку, которые я пишу в коде latex?

Основной код латекса:

\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}

Выход:

Выход латекса

решение1

Добро пожаловать в TeX.SX!

Когда вы используете , \DeclareCaptionTypeвы, по сути, определяете новую среду float. Ее содержимое будет, ну, плавать! Если вы не хотите, чтобы оно плавало, вы можете использовать floatспецификатор , [H]чтобы поместить floatточногде это находится в вашем коде.Предупреждение:Есть несколько причин, по которым вам не следует этого делать (https://tex.stackexchange.com/a/373265/237192(чтобы назвать некоторых).

Другой способ — использовать placeins' \FloatBarrier, который не позволяет плавающим элементам пересекать этот барьер, поэтому вы можете разместить один из них после заголовка раздела.

Еще лучше: если вы не хотите, чтобы он плавал, не делайте его плавающим. Вам не нужно оборачивать его в плавающий, вы можете просто использовать \begin{lstlisting}[caption=test] ... \end{lstlisting}. Вот как это сделать.

Еще несколько советов:

Редактировать после комментария

Чтобы на самом деле иметь действительно минимальный рабочий пример:

\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}

Результат

Связанный контент