我正在建立一个包含以下要求的列表:
- 根据最长的标签缩进描述(最好是自动的)。
- 枚举列表。
- 数字的正常字体。
- “一个项目:”、“一个长项目:”等等采用粗体字体。
以下是我所拥有的:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{enumitem}
\newlength\widest
\begin{document}
\newcounter{descriptcount}
\settowidth\widest{\textbf{3 An even longer item:}}
\begin{description}[before={\setcounter{descriptcount}{0}},leftmargin=\dimexpr\widest+\labelsep\relax,labelindent=1cm,labelwidth=\widest,noitemsep,font=\stepcounter{descriptcount}\thedescriptcount~]
\item[An item:] lalallalalallala
\item[A long item:] item two
\item[An even longer item:] Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\end{description}
\end{document}
如您所见,数字是粗体(我不想要),第一行之后的缩进没有对齐(在项目 3 上),并且必须手动设置标签宽度。
我一直在研究 enumitem 和 eqlist,但似乎无法正确设置。
答案1
虽然我对 LaTeX 比较陌生,但将您的查询分解为以下内容
- 没有粗体数字
- 缩进对齐
就粗体部分而言,我觉得你需要将标签分成两部分 - 第一部分是计数器,第二部分是实际的标签文本 - 计数器正在增加数字,但文本仍然是用户定义的
\newcounter{notes}
\newenvironment{Notes}
{\begin{list}{\textsc{Note} \arabic{notes}.}%
{\setlength\labelsep{10pt}%
\setlength\itemindent{10pt}%
\setlength\leftmargin{0pt}%
\setlength\labelwidth{0pt}%
\usecounter{notes}}}%
{\end{list}}
正如你在上面看到的,它\textsc{Note}
与柜台是分开的\arabic{notes}.
使用此列表的方式如下
\begin{Notes}
\item This is the text of the first note item.
Some more text for the first note item.
\item This is the text of the second note item.
Some more text for the second note item.
\end{Notes}
并将产生以下输出
现在,如果我要反转计数器以位于文本标签之前,如下所示
\newcounter{notes}
\newenvironment{Notes}
{\begin{list}\arabic{notes}.{\textsc{Note}}%
{\setlength\labelsep{10pt}%
\setlength\itemindent{10pt}%
\setlength\leftmargin{0pt}%
\setlength\labelwidth{0pt}%
\usecounter{notes}}}%
{\end{list}}
然后在列表环境中使用它会产生
\documentclass{article}
\usepackage{enumitem}
\usepackage{environ}
\begin{document}
\newcounter{notes}
\newenvironment{Notes}
{\begin{list}{\arabic{notes}.\textsc{Note}}%
{\setlength\labelsep{10pt}%
\setlength\itemindent{10pt}%
\setlength\leftmargin{0pt}%
\setlength\labelwidth{0pt}%
\usecounter{notes}}}%
{\end{list}}
\begin{Notes}
\item This is the text of the first note item.
Some more text for the first note item.
\item This is the text of the second note item.
Some more text for the second note item.
\end{Notes}
\end{document}
你可以看到柜台位置的变化,而且变化并不明显
为了清楚起见,我没有删除计数器后的句号
现在,如果我将计数器后面的标签文本加粗,并删除句点
{\begin{list}{\arabic{notes}\textsc{\textbf{ Note}}}
这产生
练习的第一部分到此结束
另一部分是进行缩进对齐,可在https://tex.stackexchange.com/a/130099/197451
\documentclass{article}
\usepackage{enumitem}
\usepackage{environ}
\newlength\widest
\makeatletter
\NewEnviron{ldescription}{%
\vbox{%
\global\setlength\widest{0pt}%
\def\item[##1]{%
\settowidth\@tempdima{\textbf{##1}}%
\ifdim\@tempdima>\widest\global\setlength\widest{\@tempdima}\fi%
}%
\setbox0=\hbox{\BODY}%
}
\begin{description}[
leftmargin=\dimexpr\widest+0.5em\relax,
labelindent=0pt,
labelwidth=\widest]
\BODY
\end{description}%
}
\makeatother
\begin{document}
\begin{ldescription}
\item[Short] text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
\item[A really really long label] text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
\end{ldescription}
\begin{ldescription}
\item[Short] text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
\item[A medium label] text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
\end{ldescription}
\end{document}
产生以下缩进
练习的第二部分到此结束
结合上述第 1 部分和第 2 部分中提出的想法,应该足以产生一个计数器(无粗体)以及用户所需的缩进
如果你觉得这个答案有帮助,请在左侧勾选并点赞