enumitem 水平间距参数

enumitem 水平间距参数

我仍然在苦苦挣扎enumitem。我完全不理解水平间距参数。我确实读过文档,也看过许多问题的答案,但尽管如此,我还是不明白!我完全不知道应该做什么labelindent=*labelindent=!应该做什么。有人能简单解释一下这五个参数是什么,以及这些选项有什么作用*!

具体来说,我希望此处列表的第二行堆叠在第一行下方,而不是从左侧稍微偏一点的地方开始。这是我尝试这样做的,但如您所见,它不起作用。(顺便说一句,我明确设置了,因为在本文档中,labelindent=0pt它已全局设置为正常使用。)\parindent

\documentclass[12pt, a4paper, oneside, fleqn]{report}

\usepackage{enumitem}
\setlist[description]{leftmargin=\parindent,labelindent=\parindent,itemsep=1pt,parsep=0pt,topsep=0pt}

\begin{document}

\chapter*{Symbols list}

\begin{description}[labelindent=0pt,labelwidth=0.7cm,leftmargin=0.7cm]
%
\item[x] Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[y] Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[z] Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah

\end{description}   

\end{document}

可疑名单

更新

我尝试了@Bernard 在他的回答中提出的解决方案,但对我来说不起作用。我正在更新我的代码,因为我的标签文本相当宽(我最初没有包括它,因为我觉得我的整个论文将在我提交之前在 tex.se 上发布 ;-)。

这是 Bernard 的建议,将labelwidth扩展到 2.1 厘米以适应宽文本,labelindent=0pt这是我想要的设置:

\documentclass[12pt, a4paper, oneside, fleqn]{report}

\usepackage{enumitem}
\setlist[description]{leftmargin=\parindent,labelindent=\parindent,itemsep=1pt,parsep=0pt,topsep=0pt}

\usepackage[showframe, top=2.5cm, left=3.5cm, bottom=2.5cm, right=2.5cm, includehead]{geometry}
\geometry{headheight=28pt, headsep=18pt}

\begin{document}

\chapter*{Symbols list}

\begin{description}[labelindent=0em ,labelwidth=2.1cm, labelsep*=1em, leftmargin =!, style = standard]%

\item[$\mathbf{H}$] Forward model Jacobian matrix
\item[$\mathbf{MoistCov}$] Background error covariance matrix calculated from an ensemble of forecast states and using a new moisture control variable designed to eliminate increments in the stratosphere.

\end{description}   

\end{document}

它看起来是这样的: 在此处输入图片描述

除此之外,当我\setlist在开头注释掉命令时,会发生以下情况,这很奇怪,因为显然存在一些交互,尽管我不知道具体是什么,因为看起来我应该覆盖水平设置。看起来leftmargin=!不是leftmargin从其他设置计算的: 注释掉

答案1

Enumitem引入了一个新的非常有用的长度,labelsep*,这样labelsep* + itemindent = labelsep(参见文档的§3.3)。设置labelindent + labelwidth + labelsep* = leftmargin可以满足您的需要,同时允许标签文本比默认值更长。如果style=standard,较宽的标签会更改列表的左边距,而使用style=sameline,它可以超出左边距:

\documentclass[12pt, a4paper, oneside, fleqn]{report}
\usepackage[showframe, nomarginpar]{geometry}

\usepackage{enumitem}

\begin{document}

\chapter*{Symbols list}

\begin{description}[labelindent=1em ,labelwidth=1.3cm, labelsep*=1em, leftmargin =!, style = standard]% 
\item[x text]Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[y] Another text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[z] Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\end{description}

\begin{description}[labelindent=1em ,labelwidth=1.2cm, labelsep*=1em, leftmargin =! , itemindent = 0pt, style = sameline]
\item[x text]Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[y] Another text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[z] Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\end{description}

\end{document}

在此处输入图片描述

为了更详细地解释发生了什么,标签从标签缩进处开始,标签行后面的行的开头是左边距,等于标签缩进 + 标签宽度 + 标签间隔*。设置前 3 个值,然后 leftmargin=! 使左边距从前三个值计算出来,如所示。

它的工作方式与枚举和逐项操作相同,只是在这些情况下标签对齐方式为right,因此如果标签宽度太小,标签可以进入(页面)左边距。它的行为类似于\llap{label}

让我解释一下为什么你的代码不起作用:设置键的顺序很重要。style=standard最后设置时,你用标准样式中定义的值覆盖了以前的值——就像setlist{description}{…}序言中的值可以被描述环境中的实际可选参数覆盖一样。如果你将代码更改为以下内容,它就会按你想要的方式工作:

\documentclass[12pt, a4paper, oneside, fleqn]{report}
\usepackage[utf8]{inputenc}

\usepackage{enumitem}

\usepackage[showframe, top=2.5cm, left=3.5cm, bottom=2.5cm, right=2.5cm, includehead]{geometry}
\geometry{headheight=28pt, headsep=18pt}

\begin{document}

\chapter*{Symbols list}

\begin{description}[style =standard, labelindent=0em , labelwidth=2cm, labelsep*=1em, leftmargin =!]%
\item[$\mathbf{H}$] Forward model Jacobian matrix
\item[$\mathbf{MoistCov}$] Background error covariance matrix calculated from an ensemble of forecast states and using a new moisture control variable designed to eliminate increments in the stratosphere.

\end{description}

\end{document} 

在此处输入图片描述

leftmargin=!表示左边距是根据 § 3.3 中描述的其他参数计算得出的,即 leftmargin=labelindent + labelwidth + labelsep*,这些参数都已选定。请注意,对于几乎相同的键,只有删除leftmargin=!会产生不同的结果,因为必须有一个预定义的 leftmargin 值不是覆盖:

在此处输入图片描述

写为parameterkey=! 意味着此参数是根据其他参数计算的,无论您是明确设置了它们,还是由环境、样式和 & 设置。据我所知,parameterkey=* 意味着与附加功能相同,该功能labelwidth设置为常规值(例如,对于罗马样式枚举,设置为 viii)。我认为它对枚举环境有意义,尽管从文档中我看不太清楚。

答案2

\documentclass{article}
\usepackage{enumitem}
\usepackage{layouts}
\begin{document}
\listdiagram

\clearpage
\begin{enumerate}
\item The figure illustrates the layout of an \texttt{enumerate} list.
\currentlist
\listdesign
\end{enumerate}

\end{document}

在此处输入图片描述

在此处输入图片描述

答案3

你可以从这个问题中看到如何用 tikzmark 绘制这些线条该方案展示了枚举环境中不同的水平长度

在此处输入图片描述

答案4

我找到了下面的图表,来自§8.16listLaTeX2e 非官方参考手册(2018 年 10 月)非常有帮助:

在此处输入图片描述

在哪里:

  • h0\labelwidth
  • h1\labelsep
  • h2\listparindent
  • h3\leftmargin
  • h4\itemindent
  • h5\rightmargin

关键的等式是, 的括号右边缘h1与 的括号右边缘位于相同的水平位置h4,这意味着标签框的左边缘位于:

h3+h4-(h0+h1)

相关内容