LaTeX - 多页的单一代码列表

LaTeX - 多页的单一代码列表

我在我的毕业论文中使用该lstlisting软件包来包含代码片段。不幸的是,其中一个代码片段无法放在一页上。Stil LaTeX 不会将其拆分到多页上,而是将文本放在页面底部。

我做错了什么?我的设置如下。

...
\newfloat{Algorithm}{t}{lop}
...
\lstset{ %
basicstyle=\footnotesize,       % the size of the fonts that are used for the code
numbers=left,           % where to put the line-numbers
numberstyle=\footnotesize,  % the size of the fonts that are used for the line-numbers
stepnumber=1,           % the step between two line-numbers. If it is 1 each line will be numbered
numbersep=5pt,          % how far the line-numbers are from the code
backgroundcolor=\color{white},  % choose the background color. You must add \usepackage{color}
showspaces=false,           % show spaces adding particular underscores
showstringspaces=false,     % underline spaces within strings
showtabs=false,         % show tabs within strings adding particular underscores
frame=single,           % adds a frame around the code
tabsize=2,              % sets default tabsize to 2 spaces
captionpos=b,           % sets the caption-position to bottom
breaklines=true,            % sets automatic line breaking
breakatwhitespace=false,        % sets if automatic breaks should only happen at whitespace
escapeinside={\%*}{*)}      % if you want to add a comment within your code
}
...
\begin{Algorithm}[!htp]
   \begin{lstlisting}[mathescape]
... a code snippet which is way too long ...
   \end{lstlisting}
   \caption{caption}
   \label{label}
\end{Algorithm}
...

答案1

因为浮动元素在定义和概念上是单页(最多)实体,所以您必须解决这个问题 - 这里有一些建议:

  1. 不要让它成为浮点数,把长段代码放在附录中(通常在风格上更好,但我不知道代码与你正在写的内容有何关系)
  2. 不要让它浮动,只需将其放在内联即可(可能作为其自身的(子)部分)
  3. 通过指定每个浮点数中包含的行号,使其成为多个浮点数。有点杂乱,但可以实现你想要的效果
  4. 仅包含代码真的必需的。

我个人的做法是(可能很快就会)将 1、3 和 4 结合起来——我敢打赌,有很多内容实际上不需要在正文中讨论,但为了完整性应该包括在内。因此,将所有内容放在附录中,并将需要讨论的部分放在讨论附近的浮动部分中。如果代码运行到多页,它将与讨论它的任何文本分开。

我承认这可能不是您想要的答案,它来自物理学的角度,其中浮点数(通常意义上的图形和表格)在正文中讨论,理想情况下不要距离它们出现的位置太远。

答案2

您可以使用定义浮动\lstset参数

float=H,

您还可以使用以下方式定义标签和标题

\begin{lstlisting}[label={lst:firstLst},caption={The first listing}]

\end{lstlisting}

然后你的列表就会浮动,并带有标题和标签。我认为,你的算法环境就不再有必要了。

相关内容