对齐列表内的项目

对齐列表内的项目

我正在尝试在所做的一些工作中重新创建一个列表,并努力使所有组成部分对齐。

我想要得到的图片

中间的列表是我想要复制的内容。

有人知道我可以使用什么命令吗?

答案1

您还可以使用tabbing环境和一些代码来换行

\documentclass[a4paper,10pt]{article}
\makeatletter

\newlength\tdima
\newcommand\tabfill[1]{%-- Parbox that fills up rest for the line
      \setlength\tdima{\linewidth}%
      \addtolength\tdima{\@totalleftmargin}%
      \addtolength\tdima{-\dimen\@curtab}%
      \parbox[t]{\tdima}{#1\ifhmode\strut\fi}}

\newcounter{numcntr}
\newcommand*\putnum{\stepcounter{numcntr}\alph{numcntr}.}

\makeatother
\begin{document}

\begin{tabbing}
a.\quad\=$J(m)[E1]$:~\=\kill

\putnum \>$P(n)$: \>\tabfill{add 1 to the number in register $n$, i.e.\ $\langle n'\rangle = \langle n\rangle+1$.}\\
\putnum \>$D(n)$: \>\tabfill{subtract 1 from the number in register $n$, i.e.\ $\langle n'\rangle = \langle n\rangle-1$.  $(\langle n\rangle \not= 0)$.}\\
\putnum \>$O(n)$: \>\tabfill{``clear'' register $n$, i.e.\ place 0 in it, i.e.\ $\langle n'\rangle=0$.}

\end{tabbing}

\end{document}

在此处输入图片描述

答案2

使用此处的 hack枚举描述列表font,这很丑陋,因为它利用了-key 中的命令在标签排版之前执行的事实,我整理了以下 MWE:

\documentclass{scrartcl}
\usepackage{enumitem}
\newcounter{descriptcount}
\begin{document}
\itshape
\begin{description}[
  leftmargin=2.5cm,
  style=nextline,
  before={\setcounter{descriptcount}{0}},
  font=\normalfont\itshape{\stepcounter{descriptcount}\alph{descriptcount}.)}~
]
  \item[$P(n)$:] add $1$ to the number in register $n$, i.e. $\langle n' \rangle = \langle n \rangle + 1$.
  \item[$D(n)$:] subtract $1$ from the number in register $n$, i.e. $\langle n' \rangle = \langle n \rangle - 1$. \quad ($\langle n \rangle \neq 0$)
  \item[long label bla bla bla] Content skips to next line.
\end{description}
\end{document}

期望输出

请注意,这仅在具有description可用环境的文档类中有效。

更持久的解决方案

如果您想在文档中反复使用列表,请考虑在序言中定义一个新的列表环境:

\documentclass{scrartcl}
\usepackage{enumitem}
\newcounter{descriptcount}
\newlist{enum-descr}{description}{10} % 10 is the max-depth
\setlist[enum-descr]{
  leftmargin=2.5cm,
  style=nextline,
  before={\setcounter{descriptcount}{0}},
  font=\normalfont\itshape{\stepcounter{descriptcount}\alph{descriptcount}.)}~
}
\begin{document}
\itshape
\begin{enum-descr}
  \item[$P(n)$:] add $1$ to the number in register $n$, i.e. $\langle n' \rangle = \langle n \rangle + 1$.
  \item[$D(n)$:] subtract $1$ from the number in register $n$, i.e. $\langle n' \rangle = \langle n \rangle - 1$. \quad ($\langle n \rangle \neq 0$)
  \item[long label bla bla bla] Content skips to next line.
\end{enum-descr}
\end{document}

请注意,每个子列表都会再次有 a.)、b.)、c.) 编号。

答案3

这是一个使用的解决方案tabularx

\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}
\newcounter{itemcounter}
\newcommand{\myitem}{\stepcounter{itemcounter}\alph{itemcounter}.}
\usepackage{tabularx}
\pagestyle{empty}
\newcommand{\nvalue}[1]{\langle{#1}\rangle}
\begin{document}

\begin{tabularx}{\linewidth}{cl>{\em}X}
\myitem &    $P(x):$     &   add $1$ to the number in register $n$, \emph{i.e.} $\nvalue{n\prime}  = \nvalue{n}  +1$.   \\
\myitem &    $D(n):$     &   subtract $1$ from the number in register $n$, \emph{i.e.} $\nvalue{n\prime}  = \nvalue{n} -1$. $(\nvalue{n}  \not= 0)$. \\
\myitem &    $O(n):$     &  ``clear'' register $n$, \emph{i.e.} lace $0$ in it, \emph{i.e.} $\nvalue{n\prime} =0$.
\end{tabularx}

\end{document}

tabularx允许您指定表格的宽度,并为您提供一个X将格式化为段落列的列,其宽度是构建其他列后指定空间的剩余部分。

在此处输入图片描述

当然,如果您要拥有多个这样的表,您可能需要重置计数器(手动)或者您可以创建一个新的环境。

事实证明,使用 创建环境tabularx并不像人们想象的那么简单。由于这让我很头疼,所以我将向您展示如何操作(以防您想创建环境)。有关为什么必须这样做的详细信息,请参阅https://tex.stackexchange.com/a/25778/22413

定义环境的方法如下:

\newenvironment{mytablex}{\setcounter{itemcounter}{0}\tabularx{\linewidth}{clX}}
                         {\endtabularx}

但这个版本的间距会有点紧。

假设表格始终独立存在,并且您想将其视为自己的段落,那么您可以为其添加一些垂直间距(我还添加了\noindent)。

\newenvironment{mytablex}{\setcounter{itemcounter}{0}%
                          \par\vspace{2ex}%
                          \noindent\tabularx{\linewidth}{clX}}
                         {\endtabularx\par\vspace{2ex}}

这是一个新的 MWE:

\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}
\newcounter{itemcounter}
\newcommand{\myitem}{\stepcounter{itemcounter}\alph{itemcounter}.}
\usepackage{tabularx}
\pagestyle{empty}
\newcommand{\nvalue}[1]{\langle{#1}\rangle}
\newenvironment{mytablex}{\setcounter{itemcounter}{0}%
                          \par\vspace{2ex}%
                          \noindent\tabularx{\linewidth}{clX}}
                         {\endtabularx\par\vspace{2ex}}
\begin{document}

\begin{tabularx}{\linewidth}{cl>{\em}X}
\myitem &    $P(x):$     &   add $1$ to the number in register $n$, \emph{i.e.} $\nvalue{n\prime}  = \nvalue{n}  +1$.   \\
\myitem &    $D(n):$     &   subtract $1$ from the number in register $n$, \emph{i.e.} $\nvalue{n\prime}  = \nvalue{n} -1$. $(\nvalue{n}  \not= 0)$. \\
\myitem &    $O(n):$     &  ``clear'' register $n$, \emph{i.e.} lace $0$ in it, \emph{i.e.} $\nvalue{n\prime} =0$.
\end{tabularx}

Here's with the new environment.

\lipsum[1]

\begin{mytablex}
\myitem &    $P(x):$     &   add $1$ to the number in register $n$, \emph{i.e.} $\nvalue{n\prime}  = \nvalue{n}  +1$.   \\
\myitem &    $D(n):$     &   subtract $1$ from the number in register $n$, \emph{i.e.} $\nvalue{n\prime}  = \nvalue{n} -1$. $(\nvalue{n}  \not= 0)$. \\
\myitem &    $O(n):$     &  ``clear'' register $n$, \emph{i.e.} lace $0$ in it, \emph{i.e.} $\nvalue{n\prime} =0$.
\end{mytablex}

\lipsum[2]
\end{document}

结果如下:

在此处输入图片描述

相关内容