包含列表的图形的页边距较小

包含列表的图形的页边距较小

我已经尝试让它工作了一段时间,但一直找不到合适的解决方案。我的想法是,我想在一行中有三个列表。我通过一个包含三个小页面的图来实现这一点,每个小页面都包含一个列表。

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

minipages 放入 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}

在此处输入图片描述

相关内容