如何将列表中的长标签与左边距对齐?

如何将列表中的长标签与左边距对齐?

我想在 LaTeX 中创建一个列表,其中:
1. 最长的标签与左边距对齐,
2. 标签可以是复合的,看起来像“(1)(a)”,
3. 标签可以具有不同的宽度(例如,一个项目编号为“(1)(a)”,下一个项目编号为“(b)”),
4. 项目对齐并且不缩进。

因为没有什么能胜过图片,所以这就是我想要实现的效果:列表示例
好吧,正如您所见,我已经成功制作了这样一个列表 :) 问题是,我使用的解决方案涉及大量手动设置,例如指定leftmargin点(我使用了enumitem包),这不是最优雅的方式。我想知道是否有可能“自动”创建这样的列表。

因为提供一些代码来工作总是好的,所以我可以提供:

\documentclass{article}
\usepackage{enumitem}
\newcounter{ex}
\newcounter{ex_alph}
\begin{document}
\section{Lorem ipsum}
\Large
\begin{enumerate}
\item[\refstepcounter{ex}(\theex)\stepcounter{ex_alph}(\alph{ex_alph})]Lorem ipsum\ldots
\item[\stepcounter{ex_alph}(\alph{ex_alph})]Lorem ipsum\ldots
\setcounter{ex_alph}{0}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua\ldots
\end{enumerate}
\begin{enumerate}
\item[\refstepcounter{ex}(\theex)]Lorem ipsum\ldots
\end{enumerate}
\end{document}

答案1

下面的代码结果是否大致符合您的目标?

\documentclass{article}
\usepackage{lipsum}
\usepackage{enumitem}
% labelwidth = widest width; leftmargin = labelwidth + labelsep
\setenumerate{leftmargin=*}
\setenumerate[1]{label=(\arabic*),align=left} % widest=0
\setenumerate[2]{label=(\alph*)}              % widest=m
\newcommand*\lorem{Lorem ipsum\ldots}
\pagestyle{empty}
\begin{document}
\section{Lorem ipsum}
\Large
\begin{enumerate}
    \item
        \begin{enumerate}
            \item \lorem
            \item \lorem
        \end{enumerate}
        \ldots
        \begin{enumerate}[start=13]
            \item \lorem
        \end{enumerate}
    \item \lorem
\end{enumerate}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua\ldots
\begin{enumerate}[resume]
    \item \lipsum[1]
\end{enumerate}
\ldots
\begin{enumerate}[start=9]
    \item \lorem
\end{enumerate}
\end{document}

示例 1

值得检查 enumitem 文档(texdoc enumitem),因为它的强大之处在于良好的可配置性。

编辑

如果你更改下面的一些行

\setenumerate{leftmargin=*,labelsep=5pt}
...
\setenumerate[2]{label=(\alph*),align=left}   % widest=m
...
\begin{enumerate}[labelsep=0pt]
...
    \item \lorem {\small lacks proper alignment, as there is no per item labelsep}
\end{enumerate}
...

你会得到

示例 2

相关内容