我已经尝试让它工作了一段时间,但一直找不到合适的解决方案。我的想法是,我想在一行中有三个列表。我通过一个包含三个小页面的图来实现这一点,每个小页面都包含一个列表。
MWE 如下:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{listings}
\begin{document}
\begin{figure}
\centering
\begin{minipage}[t]{.30\textwidth}
\begin{lstlisting}[caption={a}]
for (i in 1..n):
. . .
lock.lock()
shared++
lock.unlock()
. . .
\end{lstlisting}
\end{minipage}
\begin{minipage}[t]{.30\textwidth}
\begin{lstlisting}[caption={b}]
for (i in 1..n):
. . .
lock.lock()
shared++
lock.unlock()
. . .
\end{lstlisting}
\end{minipage}
\begin{minipage}[t]{.30\textwidth}
\begin{lstlisting}[caption={c}]
for (i in 1..n):
. . .
lock.lock()
shared++
lock.unlock()
. . .
\end{lstlisting}
\end{minipage}
\end{figure}
\end{document}
这会将所有三个列表放在一行上。但是,我希望每个列表更宽,并且图表可以延伸到页面边缘。
感谢任何帮助!
答案1
将minipage
s 放入 a 中tabular
并增加其宽度。
您会收到警告Overfull \hbox
,但在这种情况下,这是需要的。
在左边距之前开始,\hspace*{-...}
在 之前放置一个tabular
。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{listings}
\usepackage{tabularx}
\usepackage{showframe}% only to show the page margins
\usepackage{mwe}% only to have some blind text
\begin{document}
\blindtext
\begin{figure}
\hspace*{-100pt}% to go to the left of the left margin
\begin{tabular}{ccc}
\begin{minipage}[t]{.3\paperwidth}% increase the width according to your needs
\begin{lstlisting}[caption={a}]
for (i in 1..n):
. . .
lock.lock()
shared++
lock.unlock()
. . .
\end{lstlisting}
\end{minipage} &
\begin{minipage}[t]{.3\paperwidth}
\begin{lstlisting}[caption={b}]
for (i in 1..n):
. . .
lock.lock()
shared++
lock.unlock()
. . .
\end{lstlisting}
\end{minipage} &
\begin{minipage}[t]{.3\paperwidth}
\begin{lstlisting}[caption={c}]
for (i in 1..n):
. . .
lock.lock()
shared++
lock.unlock()
. . .
\end{lstlisting}
\end{minipage}\\
\end{tabular}
\end{figure}
\end{document}