枚举/描述和子级别的水平对齐问题

枚举/描述和子级别的水平对齐问题

enumerate我正在努力通过或获得正确的水平对齐description

我用简单的粗体阿拉伯数字后面跟着一个点作为标签。这些是练习的参考,因此它们可以从1.14.57.例如,因此需要易于定制。标签不能超出边距(我尝试过wide此选项)并且不能缩进。我希望项目文本不缩进(从第二行开始)以节省空间,但我可以接受它缩进到与第一行文本对齐。

然后有些练习有题目A。b.等需要enumerate环境。A。标签将位于第一行,紧挨着1.例如,b.将在另一行(显然)。我无法从我在这里找到的答案中解决的主要问题是:我想要A。b.,...标签与其项目文本一起水平对齐。

最后,我不希望在序言中写太多代码,因为该文件旨在让对 LaTeX 了解有限的人轻松重复使用。但我主要关心的是把事情做好,所以如果需要自定义环境,那就这样吧。

以下是我的代码的当前状态:

\documentclass[12pt, letterpaper]{article}
\usepackage[margin=1in, includefoot,showframe]{geometry}

\usepackage{enumitem}
\newcommand\setItemNumber[1]{\setcounter{enumi}{\numexpr#1-1\relax}}

\begin{document}
\begin{enumerate}[label={\textbf{\arabic*.}},wide,leftmargin=*,labelindent=0pt]
\setItemNumber{19}
\item bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
\setItemNumber{23}
\item \begin{enumerate}[label=\textbf{\alph*.}]
\item First question
\item Second question
\end{enumerate}
\end{enumerate}
\end{document}

在此处输入图片描述

编辑 为了获得相同的结果description,我使用了以下代码:

\documentclass[12pt, letterpaper]{article}
\usepackage[margin=1in, includefoot,showframe]{geometry}

\usepackage{enumitem}

\begin{document}
\begin{description}
\item[2.] bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
\item[56.] \begin{enumerate}[label=\textbf{\alph*.}]
\item bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
\item bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
\end{enumerate}
\end{description}
\end{document}

在此处输入图片描述

答案1

您没有解释描述问题,但是这里是枚举问题, if I've well understood: for the 1st level enumerate, the solution is simplywide=0pt` 的解决方案,对于第二级来说稍微复杂一些。

\documentclass[12pt, letterpaper]{article}
\usepackage[margin=1in, includefoot,showframe]{geometry}

\usepackage[shortlabels]{enumitem}
\newcommand\setItemNumber[1]{\setcounter{enumi}{\numexpr#1-1\relax}}
\setlist[enumerate, 1]{1., font=\bfseries, wide=0pt}
\setlist[enumerate, 2]{a., font=\bfseries, wide=2em, leftmargin=2em, topsep=0pt, before=\leavevmode\vspace*{-\glueexpr\baselineskip+\parskip}}

\begin{document}
\begin{enumerate}[start=19]
\item bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
\setItemNumber{23}
\item \begin{enumerate}
\item First question
\item Second question. bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
\end{enumerate}
\item All mimsy were the borogoves,
And the mome raths outgrabe.
\end{enumerate}

\end{document} 

在此处输入图片描述

答案2

最简单的解决方案仅使用 enumitem。此包非常高效,无需添加任何内容:

要使标签末尾和文本开头之间的间距相同,只需删除“align”或将其替换为 align=right。但无论发生什么,您都必须决定对齐哪一侧。

\documentclass{article}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{calc}

\newcommand{\setItemNumber}[1]{\setcounter{enumi}{\numexpr#1-1}}
\setlist[enumerate, 1]{label=\arabic*.,font=\bfseries,widest=50,leftmargin=\labelwidth+\labelsep,align=left}
\setlist[enumerate, 2]{label=\alph*., font=\bfseries, leftmargin=*, topsep=0pt}

\begin{document}
\lipsum[1-2][1-4]
    \begin{enumerate}
        \item \lipsum[1-2][1-4]
        \setItemNumber{19}
        \item \lipsum[1-2][1-4]
        %\setcounter{enumi}{19}
        \setItemNumber{23}
        \item \begin{enumerate}
                        \item \lipsum[1-2][1-4]
                        \item \lipsum[1-2][1-4]
                    \end{enumerate}
        \item \lipsum[1-2][1-4]
    \end{enumerate}
\end{document}

在此处输入图片描述

答案3

添加widest=99选项可修复水平对齐:

在此处输入图片描述

\documentclass[12pt, letterpaper]{article}
\usepackage[margin=1in, includefoot,showframe]{geometry}

\usepackage{enumitem}
\newcommand\setItemNumber[1]{\setcounter{enumi}{\numexpr#1-1\relax}}

\begin{document}
\begin{enumerate}[label={\textbf{\arabic*.}},wide,widest=99,leftmargin=*,labelindent=0pt]
\setItemNumber{19}
\item bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
\setItemNumber{23}
\item \begin{enumerate}[label=\textbf{\alph*.}]
\item First question
\item Second question
\end{enumerate}
\end{enumerate}
\end{document}

相关内容