
lstlisting を使用してコードを強調表示するときに問題が発生しています。LaTeX コードでは、リストをテキストの下に表示されるようにしましたが、コードの構造が無視され、コードの上に配置されます。コード リストを、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
の[H]
指定子を使用してフロートを配置できます。その通りコード内のどこにあるか。警告:それをすべきでない理由はいくつかあります(https://tex.stackexchange.com/a/373265/237192いくつか例を挙げます。
placeins
もう 1 つの方法は、フロートがその障壁を越えてフロートしないようにする'を使用することです\FloatBarrier
。そのため、セクション タイトルの後に ' を配置できます。
さらに良いのは、フロートにしたくない場合は、フロートにしないことです。フロートにラップする必要はなく、単に を使用できます\begin{lstlisting}[caption=test] ... \end{lstlisting}
。これが正しい方法です。
その他のヒント:
- 参考文献:表や図を記載されている場所の近くに置く
\begin{center} ... \end{center}
不要な垂直スペースを追加します。使用方法\centering
:図や表には、center と centering のどちらを使用すればよいですか?- ここで何を言いたかったのか忘れてしまいました。思い出したら編集します。
コメント後に編集
実際に最小限の動作例を挙げると、次のようになります。
\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}