我有一个双列文档,需要在其中并排放置两个源代码列表。双列文档的单列自然太窄,因此两个列表需要跨越页面宽度。
\onecolum
\twocolumn
不是一个选择,因为它们需要放在文档的中间,而且空间很宝贵。
我尝试了几种选项figure*
,table*
但不知道如何让它正确显示。
在单列文档中,它很简单,就像我以前使用{multicols}{2}
并用于lstlisting
显示代码一样,但按照预期切换到两列,将两列放在单个文档列中。
关于如何解决这个问题有什么想法吗?
答案1
这里有一个可能的解决方案,使用 twocolumn 类选项和figure*
和 twominipage
来排版列表(因为figure*
使用了 ,所以列表将出现在下一页的顶部):
\documentclass[twocolumn]{article}
\usepackage{listings}
\usepackage{lipsum}
\begin{document}
\lipsum[1-6]
\begin{figure*}
\begin{minipage}[t]{0.5\textwidth}
\begin{lstlisting}
if (i<=0) then i := 1;
if (i>=0) then i := 0;
if (i<>0) then i := 0;
\end{lstlisting}
\end{minipage}%
\begin{minipage}[t]{0.5\textwidth}
\begin{lstlisting}
if (i<=0) then i := 1;
if (i>=0) then i := 0;
\end{lstlisting}
\end{minipage}%
\caption{Two side-by-side listings}
\label{fig:listings}
\end{figure*}
\lipsum[1-6]
\end{document}
现在还有另一种选择:不使用twocolumn
文档选项,而是multicol
使用包以双列模式生成文本;环境结束,使用简单的smulticols
排版并排列表(该包用于使用 生成可能的标题),然后开始另一个环境:minipage
caption
\captionof
multicols
\documentclass{article}
\usepackage{multicol}
\usepackage{listings}
\usepackage{caption}
\usepackage{lipsum}
\begin{document}
\begin{multicols}{2}
\lipsum[1-2]
\end{multicols}
\noindent\begin{minipage}{\textwidth}
\begin{minipage}[t]{0.5\textwidth}
\begin{lstlisting}
if (i<=0) then i := 1;
if (i>=0) then i := 0;
if (i<>0) then i := 0;
\end{lstlisting}
\end{minipage}%
\begin{minipage}[t]{0.5\textwidth}
\begin{lstlisting}
if (i<=0) then i := 1;
if (i>=0) then i := 0;
\end{lstlisting}
\end{minipage}%
\captionof{figure}{Two side-by-side listings}
\label{fig:listings}
\end{minipage}
\begin{multicols}{2}
\lipsum[1-2]
\end{multicols}
\end{document}
multicol
在最后一个选项中,适用浮点数的通常限制。