浮动列表

浮动列表

我正在尝试将浮动设置为我的 lstlisting(这意味着 lstlisting 没有分页符)。我找到了 2 种方法,但对我来说不起作用:

  • 浮点属性在 lstlisting 中。只有当 lstlisting 的行数小于半页时才可以(例如,最多 18 行)。如果行数大于半页,则 lstlisting 单独出现在页面上。

    \documentclass[12pt]{article}
    \usepackage{listings}
    \usepackage{color}
    \definecolor{backcolour}{rgb}{0.9,0.9,0.9}
    \lstset{
      backgroundcolor=\color{backcolour},
      numbers=left,
    }
    
    \begin{document}
      \par Paragraph 1 \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\
      \par Paragraph 2 \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\
      \par Paragraph 3 \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\
    
      \begin{lstlisting}[float]
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
        Code
      \end{lstlisting}
    
      \par Paragraph 4 \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\
      \par Paragraph 5 \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\ Text \\
    \end{document}
    
  • 小页面是错误的,因为我无法使用 100% 的代码宽度进行列表显示。当我不使用 minipage 时,核心区域和文本区域都会启动。(在 minipage 中,它会向右移动。)

    \documentclass[12pt]{article}
    \usepackage{listings}
    \usepackage{color}
    \definecolor{backcolour}{rgb}{0.9,0.9,0.9}
    \lstset{
      backgroundcolor=\color{backcolour},
    }
    
    \begin{document}
      A a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a.
    
      \begin{minipage}{\linewidth}
        \begin{lstlisting}
          Code
        \end{lstlisting}
      \end{minipage}
    
    \end{document}
    

谢谢您的建议。

答案1

我会考虑float使用包定义你自己的浮动环境,做这样的事情:

\usepackage{float}
\usepackage{listings}

\newfloat{lstfloat}{htbp}{lop}
\floatname{lstfloat}{Listing}
\def\lstfloatautorefname{Listing} % needed for hyperref/auroref

现在,您可以使用以下语法创建浮动列表:

\begin{lstfloat}
\begin{lstlisting}
% code here
\end{lstlisting}
\end{lstfloat}

这也适用于分页符,至少和和一样好figuretable例如,假设以下代码在floatlist.tex

\documentclass{article}
\usepackage{float}
\usepackage{listings}
\usepackage{lipsum}

\lstset{
    basicstyle=\ttfamily\footnotesize,
}

\newfloat{lstfloat}{htbp}{lop}
\floatname{lstfloat}{Listing}

\begin{document}
\lipsum[2]
\begin{lstfloat}
\lstinputlisting{floatlist.tex}
\lstinputlisting[firstline=1,lastline=10]{floatlist.tex}
\caption{The source of this document, one and a half times.}
\end{lstfloat}
\lipsum[3]

\end{document}

这是输出的第一页;请注意,浮动不必位于新页面上。

floatlist.tex 中的示例代码生成的第一个页面的图片

相关内容