enumitem 中的 labelsep:忽略拉伸

enumitem 中的 labelsep:忽略拉伸

正如标题所说:包labelsep中的设置enumitem忽略了拉伸部分。我很乐意在那里进行拉伸(最终实际上是当前字体的单词间拉伸通过实现的\fontdimen2\font plus 5em minus\fontdimen4\font)。

查看 MWE(该值0pt plus 400pt当然是极端的,但它很好地显示了发生了什么):

在此处输入图片描述

\documentclass{article}

\usepackage[textwidth=4cm,textheight=5cm]{geometry}
\usepackage{showframe}

\usepackage{enumitem}

\newskip\mydescskip
\mydescskip0pt plus 400pt

% TRY EITHER ONE OF THESE TWO OPTIONS
\setlist[description]{labelsep=\mydescskip, leftmargin=0pt}
%\setlist[description]{labelsep=0pt plus 400pt, leftmargin=0pt}

\begin{document}

\texttt{REAL OUTPUT:}

\begin{description}
\item[X]
AAA\hspace{\mydescskip}BBB xxxxxxxxxxxxxxxx
\end{description}

\texttt{DESIRED OUTPUT:}

\noindent\textbf{X}\hspace{\mydescskip}%
AAA\hspace{\mydescskip}BBB xxxxxxxxxxxxxxxx

\end{document}

因为它是类的一部分,所以解决方案必须尽可能干净(并且肯定不需要对 UI 进行任何更改)。

答案1

参数\labelsep是 a \dimen,LaTeX 会照此使用,因此无论你指定多少拉伸都会被忽略。最好的办法可能是改变 的含义,\item使其在后面添加 skip;这应该不是问题,因为你不需要\label描述项目。

\setlist[description]{
  leftmargin=0pt,
  labelsep=0pt,
  before=\let\item\descitem,
}

\let\oriitem\item
\newcommand\descitem[1][]{\oriitem[#1]\hspace{\mydescskip}\ignorespaces}

结果如下:

在此处输入图片描述

不过,我认为使用可拉伸的标签并不是一个好主意。

相关内容