标题描述了我的目标,到目前为止的 MWE:
\documentclass{article}
\usepackage{enumitem, lipsum}
\begin{document}
\begin{description}[leftmargin=!,
align=right,
]
\item[label 0] \lipsum[75]
\item[\begin{tabular}{c}
label 1 1st line\\
label 1 2nd line
\end{tabular}] \lipsum[75]
\item[\smash{\begin{tabular}{c}
label 2 1st line\\
label 2 2nd line
\end{tabular}}] \lipsum[75]
\end{description}
\end{document}
\smash
并tabular
帮助我更接近目标,但列表内容的第一行仍然与标签的中点对齐(不是第一行):
如何将列表内容的第一行与标签的第一行对齐以实现以下效果?
labe 0 { content of label 0 }
1st line of labe 1 { content of label 1; content of label 1;
2nd line of labe 1 content of label 1; content of label 1; c
ontent of label 1 }
理想情况下,标签和内容的垂直间距应该匹配,这也是我希望最终摆脱它的原因,tabular
因为它在垂直和水平方向上增加了提取空间。
答案1
您可能喜欢以下不用于tabular
形成物品标签的解决方案:
\documentclass{article}
\usepackage{enumitem}
\SetLabelAlign{right}{\strut\smash{\parbox[t]\labelwidth{\raggedleft #1}}} % <--
\usepackage{lipsum}
\begin{document}
\begin{description}[labelwidth=8em,
align=right,
leftmargin=!,
]
\item[label 0] \lipsum[75]
\item[label 1 1st line\\ % <--
label 1 2nd line] \lipsum[75] % <--
\item[label 2 1st line\\
label 2 2nd line] \lipsum[11]
\end{description}
\end{document}
编辑:right
仅当列表中的任何一个使用选项格式化时,才使用有意义和影响的 定义:
[labelwidth=8em, % <---
align=right,
leftmargin=!, % <---
]
但是,你可以限制\SetLabelAlign
到一些本地组:
\documentclass{article}
\usepackage{geometry}
\usepackage{enumitem}
\usepackage{lipsum}
\begin{document}
{ % <-- start of local group
\SetLabelAlign{right}{\strut\smash{\parbox[t]\labelwidth{\raggedleft #1}}}
\begin{description}[labelwidth=8em,
align=right,
leftmargin=!,
]
\item[label 0] \lipsum[75]
\item[label 1 1st line\\
label 1 2nd line] \lipsum[75]
\item[label 2 1st line\\
label 2 2nd line] \lipsum[66]
\end{description}
} % <-- end of local group
\begin{enumerate}
\item[1] \lipsum[66]
\item[22] \lipsum[66]
\item[333] \lipsum[66]
\end{enumerate}
\begin{description}
\item[test] \lipsum[66]
\item[longer item label] \lipsum[66]
\end{description}
\end{document}
答案2
解决方案如下stackengine
:
\documentclass{article}
\usepackage{enumitem, lipsum}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\begin{description}[leftmargin=!,
align=right,
]
\item[label 0] \lipsum[75]
\item[\smash{\Longunderstack{ label 1 1st line\\
label 1 2nd line}}] \lipsum[75]
\item[\smash{\Longunderstack{
label 2 1st line\\
label 2 2nd line}}] \lipsum[75]
\end{description}
\end{document}