我将尝试解释我的情况。
我有一份字体很小的文档,以代码形式打印。不幸的是,它只占用了文档的一侧,而另一侧则留有很大空白。我正试图填满另一侧以节省空间。
以下是一个示例
\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
您可以使用两个minipage
s:
\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}