enumitem:设置 labelsep 的描述会影响其中其他类型的列表

enumitem:设置 labelsep 的描述会影响其中其他类型的列表

当我使用oversizetcolorbox 作为描述标签时,默认值labelsep不够大,因此当标签很长时,标签和文本可能会粘在一起。为了解决这个问题,enumitem我使用包将其设置labelsep1em,以确保描述标签和文本之间至少有这样的距离。

但是,我注意到,即使我的设置是专门针对description(via \setlist[description])的,该设置也可能会干扰其中的其他类型的列表。下面是一个 MWE(我将其设置得labelsep非常大,以便可以轻松看到结果):

\documentclass{article}
\usepackage{enumitem}
\begin{document}

\setlist[description]{labelsep=3cm}
% \setlist[itemize]{labelsep=1cm}

\begin{description}
    \item[label] first level
    \begin{itemize}
        \item second level
    \end{itemize}
    \begin{enumerate}
        \item second level
    \end{enumerate}
\end{description}

\begin{itemize}
    \item first level
    \begin{description}
        \item[label] second level
    \end{description}
\end{itemize}

\end{document}

在此处输入图片描述

我想知道是否有某种方法可以避免这种交互。似乎可以通过labelsep同时为其他类型的列表设置来解决这个问题。但是,由于我只想改变的行为,description并且(更重要的是)不知道其他类型列表的确切当前值是什么,因此我很难在不改变其他列表外观的情况下触及该值。那么有没有办法解决这个问题,而不必修改其他类型列表的设置?


添加:

我之所以使用,description是因为我希望标签后面的文本能够正确缩进。因此,我不希望 a 内部的其他类型的列表受到影响,description因为我并没有真正使用/考虑将这个外部description列表作为列表。

\hangindent我尝试使用或来实现相同的效果,\leftskip但没有完全成功——如果它后面的文本包含\par(由用户手动给出),那么缩进行为将被中止。

答案1

文档指出\labelsep已通过。您可以重置它:

\documentclass{article}
\usepackage{enumitem,lipsum}
\begin{document}

\newlength\mylabelsep
\setlength\mylabelsep{\labelsep}
\setlist[description]{labelsep*=3cm,itemindent=!}
\setlist[2]{labelsep=\mylabelsep,labelwidth=!}


\begin{description}
    \item[label] first level \lipsum[1]
    \begin{itemize} 
        \item second level \lipsum[1]
    \end{itemize}
    \begin{enumerate}
        \item second level
    \end{enumerate}
\end{description}

\begin{itemize}
    \item first level
    \begin{description}
        \item[label] second level
    \end{description}
\end{itemize}

\end{document}

但我根本不会使用超大尺寸选项。告诉 LaTeX 标签比实际尺寸小,然后解决谎言产生的问题是没有意义的。

相关内容