在幾個文件中,我必須並排放置清單和圖表。
我為此使用了兩個 minipages 環境,但由於清單太長,我需要將其劃分並在環境之外繼續minipage
(使用連續編號,因此利用enumitem
套件的關鍵系列)。但是,正如我們所看到的,enumerate
外部環境中的第一個項目minipage
和 內部的最後一個項目之間的分隔minipage
不同於任何其他項目之間的分隔。
所以,我的問題是:有什麼方法可以確保所有 itens 之間的平等分離嗎?
當然,我很欣賞任何有關不同且更好的方法的提示。
\documentclass{article}
\usepackage{enumitem}
\setlist[enumerate,1]{leftmargin=*,label=\arabic*.}
\setlist[enumerate,2]{leftmargin=*,itemsep=.3cm,label=(\alph*)}
\begin{document}
\begin{enumerate}
\item Algum texto com referencia a uma figura.
\begin{minipage}[t]{0.55\linewidth}
Uma lista.
\begin{enumerate}[series=exercicio]
\item primeiro item
\item segundo item
\item terceiro item
\end{enumerate}
\end{minipage}\hfill
\begin{minipage}[t][2cm][c]{0.35\linewidth}
\centering
\rule{50pt}{50pt}
\end{minipage}
\begin{enumerate}[resume*=exercicio]
\item quarto item com bastante texto. mais texto e mais texto e mais
texto
\item quinto item
\end{enumerate}
\end{enumerate}
\end{document}
答案1
您可以簡單地覆蓋圖像並使用\rightskip
.唉,\hangindent
似乎不適用於 item。
\documentclass{article}
\usepackage{mwe}
\usepackage{enumitem}
\setlist[enumerate,1]{leftmargin=*,label=\arabic*.}
\setlist[enumerate,2]{leftmargin=*,itemsep=.3cm,label=(\alph*)}
\begin{document}
\begin{enumerate}
\item Algum texto com referencia a uma figura.
Uma lista.\hfill\llap{\raisebox{-\height}[0pt][0pt]{%
\begin{minipage}[t][2cm][c]{0.3\textwidth}% \linewidth is constantly changing here
\centering
\rule{50pt}{50pt}
\end{minipage}}}
\begin{enumerate}[series=exercicio]
\par\rightskip=0.3\textwidth
\item primeiro item. Just to demonstrate the effect of \verb$\rightskip$ I am going to add more text here.
\item segundo item.
\par\rightskip=0pt
\item terceiro item.
\item quarto item com bastante texto. mais texto e mais texto e mais
texto
\item quinto item
\end{enumerate}
\end{enumerate}
\end{document}
答案2
使用該包wrapfig
:
\documentclass{article}
\usepackage{enumitem,wrapfig}
\usepackage{graphicx}
\begin{document}
\begin{wrapfigure}{r}{0.5\textwidth}
\begin{center}
\rule{50pt}{50pt}
\end{center}
\end{wrapfigure}
Algúm texto que não é parte de uma lista.
\begin{enumerate}
\item Algum texto com referencia a uma figura.
Uma lista.
\begin{enumerate}
\item primeiro item
\item segundo item
\item terceiro item
\item quarto item com bastante texto. mais texto e mais texto e mais texto
\item quinto item
\end{enumerate}
\end{enumerate}
\end{document}
這wrapfig
文件從這個警告開始:
您不得
wrapfigure
在任何類型的清單環境中指定 a,也不能在其之前或之後指定 a。如果\par
清單之間有空行 ( ),則可以遵循清單。
這就是為什麼我在列表之前添加了一行文字。
我想你可以玩一點,這樣人物實際上就會出現在你的列表旁邊,但列表不能是圍繞人物的第一個或唯一的東西。
答案3
文字/框的佈局方式是使用\baselineskip
兩個連續基線之間或\lineskip
兩個框的下邊界和上邊界之間的最小間距(以較大者為準)。
實現相對恆定間距的一種方法是將第一個小型頁面的基線放置在底部,將第二個小型頁面的基線放置在頂部。
另一種方法是用 \strut 開始和結束每個小頁面。
對於 enumitem,在兩個小型頁面之間添加\strut
或\null
產生太多空間。相反,您只需要在預設小頁面之間添加大約 12pt 的空間(如果\strut
在最後添加 a 則空間會更少\item
)。我不確定 enumitem 是如何得出這個 12pt 的,但這是我最好的猜測。
應該注意的是,小型頁面內的文字不會被拉伸或擠壓以適合頁面底部。您還需要使用\raggedbottom
或放入某個\vfil
地方,或者將兩個小型頁面放入一個公共的\vbox
.
演示:
\documentclass{article}
\usepackage{paracol}
\usepackage{enumitem}
\begin{document}
\begin{paracol}{2}
\noindent
\begin{minipage}{\columnwidth}
\begin{enumerate}[series=test1]
\item One
\item Two
\end{enumerate}
\end{minipage}
\begin{minipage}{\columnwidth}
\begin{enumerate}[resume*=test1]
\item Three
\item Four
\end{enumerate}
\end{minipage}
\switchcolumn
\noindent
\begin{minipage}{\columnwidth}
\begin{enumerate}[series=test2]
\item One
\item Two\strut
\end{enumerate}
\end{minipage}
\vskip\partopsep\vskip\itemsep\vskip\parsep\noindent
\begin{minipage}{\columnwidth}
\begin{enumerate}[resume*=test2]
\item Three
\item Four
\end{enumerate}
\end{minipage}
\bigskip
\switchcolumn*
\noindent
\begin{minipage}{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\begin{minipage}{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\switchcolumn
\noindent
\begin{minipage}[b]{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\begin{minipage}[t]{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\bigskip
\switchcolumn*
\noindent
\begin{minipage}{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\begin{minipage}{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\switchcolumn
\noindent
\begin{minipage}{\columnwidth}
\strut
We need at least two lines here in order for this to work, so I hope that this is enough.
\strut
\end{minipage}
\begin{minipage}{\columnwidth}
\strut
We need at least two lines here in order for this to work, so I hope that this is enough.
\strut
\end{minipage}
\bigskip
\switchcolumn*
\end{paracol}
\end{document}