![使用自定义标签自动调整“枚举”的左边距](https://linux22.com/image/432519/%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%87%E7%AD%BE%E8%87%AA%E5%8A%A8%E8%B0%83%E6%95%B4%E2%80%9C%E6%9E%9A%E4%B8%BE%E2%80%9D%E7%9A%84%E5%B7%A6%E8%BE%B9%E8%B7%9D.png)
我想声明一个列表enumerate
使用声明一个列表enumitem 包,其中某些项目可能具有自定义标签。但是,问题是,如果标签非常长(即长度超过\labelwidth
),标签就会溢出。
例如以下代码:
\documentclass{article}
\begin{document}
\noindent
Text preceding the list.
\begin{enumerate}
\item Item 1.
\item[A very long label.] Item 2.
\item Item 3.
\end{enumerate}
Text following the list.
\end{document}
我希望前面文本的左边距与每个项目标签的左边距之间始终保持最小距离。换句话说,我希望上一个列表显示如下:
(右边距不应修改。)
这个问题类似,但该问题仅涉及具有默认标签编号的列表,而不是自定义标签(在这种情况下,接受的答案不起作用)。
我不想手动指定最长的标签:它应该自动计算。(请注意,根据所讨论的列表,最长的标签可能是自动编号的标签,例如1000.
,或自定义标签。)理想情况下,可以定义一个新的环境来替换enumerate
,或者定义一个要传递给enumerate
具有此修改行为的新选项。
(在该问题的先前迭代中,我尝试定义这样的环境,但是它根本没有起作用,并且使问题变得更长,所以我将其删除了。)
答案1
这是一个解决方案enumitem
:
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{enumitem}
\newlength{\lblwd}
\settowidth{\lblwd}{Very wide label}
\begin{document}
\begin{enumerate}[label=\arabic*., labelwidth=\lblwd, leftmargin=!]
\item An item
\item[Very wide label] An item
\item An item \addtocounter{enumi}{9997}
\item\label{last-item} An item
\end{enumerate}
\end{document}