我可以让列表向上移动两行而不在段落中引入中断吗?

我可以让列表向上移动两行而不在段落中引入中断吗?

可能重复:
如何防止 lstlisting 在页面之间分割代码?

我在一页上有一个相当长的列表,下一页有 3-4 行。列表之前有一个 7 行的段落。

我想提前 2 厘米开始发布(向上移动)以便整个列表适合页面。然后该段落必须将其最后 3-4 行移到下一页——但是:段落对齐不会中断

我想我得在列表周围引入一种“迷你页面”之类的东西,并且可以独立于正在运行的文本移动——与图像没什么不同。但是怎么做呢?

答案1

使用float选项lstlisting(或\lstset),您的列表将被视为浮动,并且不会跨页面、对象拆分:

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

\begin{document}

\lipsum[1-4]
\begin{lstlisting}[float]
for i:=maxint to 0 do
begin
j:=square(root(i));
end;
for i:=maxint to 0 do
begin
j:=square(root(i));
end;
for i:=maxint to 0 do
begin
j:=square(root(i));
end;
\end{lstlisting}
\lipsum[1]

\end{document}

您可以使用类似下面的命令float=ht来指定浮动位置。另一个选项是使用\enlargethispage*,在本例中,放大\textheight页面:

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

\begin{document}

\lipsum[1-4]\enlargethispage*{3\baselineskip}
\begin{lstlisting}
for i:=maxint to 0 do
begin
j:=square(root(i));
end;
for i:=maxint to 0 do
begin
j:=square(root(i));
end;
f    or i:=maxint to 0 do
begin
j:=square(root(i));
end;
\end{lstlisting}
\lipsum[1]

\end{document}

但请注意,这可能会导致文本的最后一行太靠近页脚。

相关内容