enumitem:自定义标签破坏“labelindent”

enumitem:自定义标签破坏“labelindent”
\documentclass[letterpaper]{article}
\usepackage{enumitem, showframe, lipsum}

\setlength{\parindent}{0pt}

\begin{document}

\begin{enumerate}[leftmargin=*, labelindent=0pt, label=\bfseries label \arabic*.]
\item \lipsum[66]
\item \lipsum[75]
\end{enumerate}

\begin{enumerate}[leftmargin=*, labelindent=0pt]
\item[\bfseries label] blah blah
\item[\bfseries long label] blah
\item[\bfseries long long label] \lipsum[75]
\end{enumerate}

\end{document}

我希望将列表中的标签与左边界对齐,并labelindent=0pt生成我想要的内容。

但它不适用于自定义标签:

在此处输入图片描述

我怎样才能有这样的列表而不超出文档的左边界:

        label 0: XXXXXXXXXXXXXXXXXXXXXXXXXX
                 XXXXXXXXXXXXX
     label long: XXXXXXXXXXXXXXXXXXXXXXXXXX
                 XXXXXXXXXXXXX
label long long: XXXXXXXXXXXXXXXXXXXXXXXXXX
                 XXXXXXXXXXXXX

我认为我可以通过测量最长标签名称的长度并使用来实现这一点leftmarginlabelindent但我想知道有没有更聪明的方法来做到这一点?

答案1

(在原帖作者阐明了他的/她的格式化目标之后,我完全重写了这个答案。)

由于在第二个类似列表的环境中没有发生枚举,因此不要使用enumerate;而是使用description带有选项leftmargin=*(您已经在使用的选项)align=right、 和 的环境widest=\textbf{long long label}

在此处输入图片描述

观察一下,在description环境中,的可选参数\item默认以粗体显示。

\documentclass[letterpaper]{article}
\usepackage{enumitem,lipsum}

\begin{document}
\begin{description}[leftmargin=*,
                    align=right,
                    widest=\textbf{long long label},]
\item[label] blah blah
\item[long label] blah
\item[long long label] \lipsum[75]
\end{description}
\end{document}

相关内容