使用代码清单拆分浮点数

使用代码清单拆分浮点数

使用floatslistings包,我定义了一个用于代码列表的浮点数以及使用它的快捷方式,如下所示:

\usepackage{floats}
\usepackage{listings}

\newfloat{program}{tbphH}{lop}[section]
\floatname{program}{Program}

\newcommand{\codefrom}[2][Matlab]
{
\begin{program}[p]
    \lstinputlisting[language=#1]{#2}
    \caption{#2}
    \label{#2}
\end{program}
}

现在,如果代码文件太长,它就会继续延伸到页面之外。相反,我想自动在页面末尾拆分浮动,然后继续到下一页。

有没有办法在不牺牲浮点结构的情况下实现这一点?如果没有,是否有其他方法可以像使用浮点数一样轻松地获得编号等?

答案1

前几天我花了一些时间尝试做类似的事情。似乎没有办法在 LaTeX 中分页浮动。例如讨论,据我所知,它基本上说的是浮动的哲学是它们被放置在它们适合的地方,如果它们不适合,它们将继续在文本下方浮动。因此,如果浮动高于页面高度,它们将继续浮动。我真希望有办法……

至于像浮点数那样进行编号,我想你可以使用\newcounter,\addtocounter{counter}{value}和包装你自己的计数器\value{counter}

答案2

我不知道自动分页功能,但该listings软件包能够将列表分成几部分,继续行号等。它也适用于浮动,但我不知道如何抑制编号。在此示例中,每个浮动都有自己的编号。

\documentclass{article}

\usepackage{listings}

\begin{document}

\lstset{language=Pascal}

\begin{lstlisting}[float,name=Test,numbers=left,caption={our listing}]
for i:=maxint to 0 do
begin
{ do nothing }
end;
\end{lstlisting}

And we continue the listing. 

\begin{lstlisting}[float,name=Test,numbers=right,caption={our listing continued}]
Write('Case insensitive ');
WritE('Pascal keywords.');
\end{lstlisting}

\end{document}

相关内容