我想在 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}
值得检查 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}
...
你会得到