我正在尝试在所做的一些工作中重新创建一个列表,并努力使所有组成部分对齐。
中间的列表是我想要复制的内容。
有人知道我可以使用什么命令吗?
答案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}
结果如下: