\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
我认为我可以通过测量最长标签名称的长度并使用来实现这一点leftmargin
,labelindent
但我想知道有没有更聪明的方法来做到这一点?
答案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}