如何修复 enumitem 内联列表中的间距?

如何修复 enumitem 内联列表中的间距?

我在使用包中的内联列表时遇到了一些间距问题enumitem。我知道示例中使用这种方式的排版不够优雅,但这只是为了演示这个问题。

如果我使用标准列表作为内联描述列表(1),那么标签和项目文本之间的空间似乎是可拉伸的,而处理完整个项目后就不会了。

我尝试使用手册中的示例来设置选项 (2),但变化不大。同样令人好奇的是 ttfamily 和 truetype 之间的间距很大。我不知道这是怎么回事。

我尝试设置不同的标签和项目分隔符,但出现了一个奇怪的可破坏空间,参见(3)。

我也尝试过使用非装箱模式,这有点像我所期望的 (4)。然而,我的问题是我期望的东西与手册中写的不同 (第 9 页):

附加键是itemjoin*,如果设置了,则用于代替 itemjoin最后一项之前的 。因此, before=\unskip{: }, itemjoin={{; }}, itemjoin*={{, and }} 在项目之间使用以下标点符号:
Blah blah:(a) 一;(b) 二;(c) 三,和 (d) 四。Blah blah
itemjoin在垂直模式下会被忽略(即在非装箱模式下,在引号、显示列表等之后)。

在示例中,itemjoin={{, }}并没有被忽略,并且我开始相信该手册中缺少星号。这是手册中的拼写错误吗?

在 (5) 中,我尝试模拟我所期望的内容。我知道这看起来很奇怪,但这是因为所选示例。实际上,标签会很短,后面的文本会长一点。但它确实展示了我想要的内容,即

  1. 描述紧接着,afterlabel并且不允许中断;
  2. 之后允许打破itemjoin
  3. 空间都是可伸缩的
  4. 以最后一行向左对齐结束。

我必须如何设置内联列表的选项才能实现上述示例?

枚举 (6) 和逐项列举 (7) 版本也有一些奇怪的间距,但从视觉上看,小标签可能会缓解这个问题。不过,我期望它的行为与描述列表相同,但这实际上不是问题,比较一下 周围的空格1.

mwe 的输出

以下是相应的 MWE:

\documentclass[a5paper, twocolumn]{article}

\usepackage[inline]{enumitem}[2011/08/28]

\begin{document}

\section{Inline description list}

Testing a few inline lists with different options.

(1)\\
With the environment \texttt{description*} the list will be
set as a single paragraph.
For example:
\begin{description*}[font={\ttfamily}]
\item[bfseries] \textbf{bold};
\item[itshape]  \textit{italics};
\item[ttfamily] \texttt{truetype}.
\end{description*}

(2)\\
Setting manual options (example from manual) results in weird spacing
\begin{description*}[font={\ttfamily}, before=\unskip{: }, itemjoin={{; }}, itemjoin*={{, and }}]
\item[bfseries] \textbf{bold}
\item[itshape]  \textit{italics}
\item[ttfamily] \texttt{truetype}
\end{description*}

(3)\\
Trying a different label separator for the list:
\begin{description*}[font={\ttfamily}, itemjoin={{, }}, afterlabel={{:\nobreakspace}}, after={{.}}]
\item[bfseries] \textbf{bold}
\item[itshape]  \textit{italics}
\item[ttfamily] \texttt{truetype}
\end{description*}

(4)\\
Trying a different label separator for the list, and unboxing:
\begin{description*}[mode=unboxed, font={\ttfamily}, itemjoin={{, }}, afterlabel={{:\nobreakspace}}, after={{.}}]
\item[bfseries] \textbf{bold}
\item[itshape]  \textit{italics}
\item[ttfamily] \texttt{truetype}
\end{description*}

(5)\\
Trying manually:
\texttt{bfseries}:~\textbf{bold}, \texttt{itshape}:~\textit{italics}, \texttt{it}:~Do not use that one, \texttt{ttfamily}:~\texttt{truetype}.

(6)\\
For comparison, the list with the \texttt{enumerate*} environment looks quite okay:
\begin{enumerate*}
\item \textbf{bold};
\item \textit{italics};
\item \textit{it};
\item \texttt{truetype}.
\end{enumerate*}

(7)\\
For comparison, the list with the \texttt{itemize*} environment has also some weird spaces:
\begin{itemize*}
\item \textbf{bold};
\item \textit{italics};
\item \textit{it};
\item \texttt{truetype}.
\end{itemize*}

\end{document}

答案1

你对enumitem手动的:如果您添加了itemjoin*={{, and }}第四个示例,则文件中会出现以下内容.log

Package enumitem Warning: itemjoin* discarded in mode unboxed

如果不指定itemjoin*=<string>,则不会生成任何警告消息。事实上,您引用的段落后面紧接着的一段指出

第 9 页: … [使用] 另一种“模式”,您可以使用 激活它mode=unboxed(默认为mode=boxes)。使用它可以自由使用浮动,但错位的\items 不会被捕获并被itemjoin*忽略……

但是,您的第四个示例运行良好,并且已经满足您的所有四个要求:

\documentclass[a5paper, twocolumn]{article}
\usepackage[inline]{enumitem}[2011/09/28]%[2011/08/28]
\begin{document}

\section{Inline description list}

Testing a few inline lists with different options.

(4)\\
Trying unboxing:
\begin{description*}[mode=unboxed, font={\ttfamily}, itemjoin={{, }}, afterlabel={{:\nobreakspace}}, after={{.}}]
\item[bfseries] \textbf{bold}
\item[itshape]  \textit{italics}
\item[it] Do not use that one
\item[ttfamily] \texttt{typewriterfont}%\texttt{truetype}
\end{description*}

(5)\\
Trying manually:
\texttt{bfseries}:~\textbf{bold},
\texttt{itshape}:~\textit{italics},
\texttt{it}:~Do not use that one,
\texttt{ttfamily}:~\texttt{typewriterfont}.%\texttt{truetype}.

\end{document}

描述列表

相关内容