텍스트 아래 목록 위치 지정

텍스트 아래 목록 위치 지정

코드를 강조표시하기 위해 lstlisting을 사용할 때 문제가 발생합니다. 라텍스 코드에서는 목록이 텍스트 아래에 나타나도록 의도했지만 코드 구조를 무시하고 코드 위에 배치했습니다. 라텍스 코드에 작성한 구조와 순서를 코드 목록이 따르도록 하려면 어떻게 해야 합니까?

핵심 라텍스 코드:

\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섹션 제목 뒤에 배치할 수 있습니다.

더 좋은 점은 부동(float)을 원하지 않는다면 부동(float)으로 만들지 마십시오. 플로트(float)로 포장할 필요가 없으며 간단히 \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}

결과

관련 정보