如何在两栏上书写内容?

如何在两栏上书写内容?

我将尝试解释我的情况。

我有一份字体很小的文档,以代码形式打印。不幸的是,它只占用了文档的一侧,而另一侧则留有很大空白。我正试图填满另一侧以节省空间。

以下是一个示例

 \documentclass[10pt]{article}

 \textwidth = 520pt \textheight = 700pt \voffset = -90pt \oddsidemargin
 = -10pt \usepackage{listings} \usepackage{color}

 \usepackage{lmodern}

 \usepackage{scrextend} \changefontsizes[8pt]{8pt}

 \definecolor{dkgreen}{rgb}{0,0.6,0}
 \definecolor{gray}{rgb}{0.5,0.5,0.5}
 \definecolor{mauve}{rgb}{0.58,0,0.82}

 \lstset{frame=tb,   language=Java,   aboveskip=0mm,   belowskip=0mm,  
 showstringspaces=false,   columns=flexible,  
 basicstyle={\small\ttfamily},   numbers=none,  
 numberstyle=\tiny\color{gray},   keywordstyle=\color{blue},  
 commentstyle=\color{dkgreen},   stringstyle=\color{mauve},  
 breaklines=true,   breakatwhitespace=true   tabsize=90 }

 \begin{document}

 \begin{lstlisting}

 public void selectionSort(int[] numbers) {         
int min, temp;      
for (int x = 0; x < numbers.length; x++) {          
min = x;            
for (int y = x; y < numbers.length; y++) {

if (numbers[y] > numbers[min]) {
    min = y;}           
}           
temp = numbers[x];          
numbers[x] = numbers[min];          
numbers[min] = temp;        
}   }

 \end{lstlisting}
  \end{document}

如果你编译,你会发现整个 RHS 都是空白。我想用其他文本填充该空间。下面是正在发生的事情的快速截图

在此处输入图片描述

答案1

您可以使用两个minipages:

\documentclass[10pt]{article}

 \textwidth = 520pt \textheight = 700pt \voffset = -90pt \oddsidemargin
 = -10pt \usepackage{listings} \usepackage{color}

 \usepackage{lmodern}

 \usepackage{scrextend} 

 \changefontsizes[8pt]{8pt}

 \definecolor{dkgreen}{rgb}{0,0.6,0}
 \definecolor{gray}{rgb}{0.5,0.5,0.5}
 \definecolor{mauve}{rgb}{0.58,0,0.82}

 \lstset{frame=tb,   language=Java,   aboveskip=0mm,   belowskip=0mm,  
 showstringspaces=false,   columns=flexible,  
 basicstyle={\small\ttfamily},   numbers=none,  
 numberstyle=\tiny\color{gray},   keywordstyle=\color{blue},  
 commentstyle=\color{dkgreen},   stringstyle=\color{mauve},  
 breaklines=true,   breakatwhitespace=true   tabsize=90 }

 \begin{document}

\noindent\begin{minipage}[t]{0.48\linewidth}
\begin{lstlisting}[linewidth=\linewidth]

public void selectionSort(int[] numbers) {         
int min, temp;      
for (int x = 0; x < numbers.length; x++) {          
min = x;            
for (int y = x; y < numbers.length; y++) {

if (numbers[y] > numbers[min]) {
    min = y;}           
}           
temp = numbers[x];          
numbers[x] = numbers[min];          
numbers[min] = temp;        
}   }

\end{lstlisting}
\end{minipage}\hfill
\begin{minipage}[t]{0.48\linewidth}
\begin{lstlisting}[linewidth=\linewidth]

public void selectionSort(int[] numbers) {         
int min, temp;      
for (int x = 0; x < numbers.length; x++) {          
min = x;            
for (int y = x; y < numbers.length; y++) {

if (numbers[y] > numbers[min]) {
    min = y;}           
}           
temp = numbers[x];          
numbers[x] = numbers[min];          
numbers[min] = temp;        
}   }

\end{lstlisting}
\end{minipage} 

\end{document}

在此处输入图片描述

可以使用可选参数来控制垂直对齐minipage;在我的示例中,我使用它t来控制顶部对齐,但您也可以使用它b来控制底部对齐或c居中垂直对齐。

答案2

如果同一页中没有其他文本必须出现在某一列中,则更简单的替代方法minipages是使用文档类中的选项(参见 MWE)。您可以使用或twocolumn跳转到第二列,然后从这里跳转到下一页。\newpage\pagebreak

如果您需要在不同页面的同一列中插入一些文本,只需在需要时插入\onecolumn\twocolumn即可。这两个命令都会强制打开新页面。您也可以在没有该选项的文档类中使用这些命令twocolumn

如果您需要在同一页面顶部的某一列中显示一些文本,请使用\twocolumn[text in one column]

如果你的代码列表前后有一列文本,或者超过两列,那么请参阅包多色

\documentclass[twocolumn,10pt]{article}

 \textwidth = 520pt \textheight = 700pt \voffset = -90pt \oddsidemargin
 = -10pt \usepackage{listings} \usepackage{color}

 \usepackage{lmodern}

 \usepackage{scrextend} \changefontsizes[8pt]{8pt}

 \definecolor{dkgreen}{rgb}{0,0.6,0}
 \definecolor{gray}{rgb}{0.5,0.5,0.5}
 \definecolor{mauve}{rgb}{0.58,0,0.82}

 \lstset{frame=tb,   language=Java,   aboveskip=0mm,   belowskip=0mm,  
 showstringspaces=false,   columns=flexible,  
 basicstyle={\small\ttfamily},   numbers=none,  
 numberstyle=\tiny\color{gray},   keywordstyle=\color{blue},  
 commentstyle=\color{dkgreen},   stringstyle=\color{mauve},  
 breaklines=true,   breakatwhitespace=true   tabsize=90 }

 \begin{document}

 \begin{lstlisting}

 public void selectionSort(int[] numbers) {         
int min, temp;      
for (int x = 0; x < numbers.length; x++) {          
min = x;            
for (int y = x; y < numbers.length; y++) {

if (numbers[y] > numbers[min]) {
    min = y;}           
}           
temp = numbers[x];          
numbers[x] = numbers[min];          
numbers[min] = temp;        
}   }

 \end{lstlisting}

\pagebreak
 \begin{lstlisting}

 public void selectionSort(int[] numbers) {         
int min, temp;      
for (int x = 0; x < numbers.length; x++) {          
min = x;            
for (int y = x; y < numbers.length; y++) {

if (numbers[y] > numbers[min]) {
    min = y;}           
}           
temp = numbers[x];          
numbers[x] = numbers[min];          
numbers[min] = temp;        
}   }

 \end{lstlisting}


 \end{document}

相关内容