使用 enumitem 创建列表样式

使用 enumitem 创建列表样式

我知道使用该包可以enumitem将列表标签修改为自定义格式。我根据在 StackExchange 上找到的其他几个问题的解决方案,得出了下面的“解决方案”。虽然这是我想要的输出,但序言中的代码并不简洁。

是否可以仅使用\newlist和命令(以及我可能需要的任何其他命令)\setlist来执行相同(或类似)的操作?enumitemenumitem

编译以下代码的结果

\documentclass[a4paper,10pt]{article}

\usepackage{enumitem}

\newcommand{\changeitem}{%
  \let\latexitem\item
  \renewcommand\item[1][]{\latexitem\relax{##1 --} }%
}

\newlist{steps}{enumerate}{1}
\setlist[steps]{label=\textit{Step \arabic*:},leftmargin=*}

\newenvironment{labelledsteps}[1][]
  {\begin{steps}[before=\changeitem,#1]}
  {\end{steps}}

\begin{document}

\begin{labelledsteps}
  \item[First Label]  First list item \newline
                      Still first list item
  \item[Second Label] Second list item
  \item[Third Label]  Third list item
\end{labelledsteps}

\end{document}

答案1

xparse顺便说一下,这段代码如何使用xspace

\documentclass[a4paper,10pt]{article}

\usepackage{enumitem}
\usepackage{xspace}
\usepackage{xparse}
\DeclareDocumentCommand\newstep{o}{%
\item\IfNoValueTF{#1}{}{#1 \textendash\xspace}}

\newlist{steps}{enumerate}{1}
\setlist[steps]{label=\textit{Step \arabic*:},leftmargin=*}

\begin{document}

\begin{steps}
    \newstep[First Label] First list item \newline
                      Still first list item
    \newstep[Second Label] Second list item
    \newstep[Third Label] Third list item
    \newstep A Fourth list item without a label.
\end{steps}

\end{document} 

在此处输入图片描述

答案2

这是不使用任何包的替代方案。优点是没有什么你不能改变的。缺点是它只有一层深(没有子项)。

\documentclass[a4paper,10pt]{article}

\newcounter{steps}

\newcommand{\step}[1][\empty]% #1 = label (optional)
{\stepcounter{steps}%
 \par
 \hangindent=4em
 \hangafter=1
 \makebox[4em][l]{\textit{Step \arabic{steps}:}}%
 \ifx#1\empty\else #1 --\fi
}
\newenvironment{labelledsteps}%
{\setcounter{steps}{0}%
 \let\item=\step
 \parskip=\baselineskip
 \parindent=0pt}%
{\par}

\begin{document}

\begin{labelledsteps}
  \item[First Label]  First list item \newline
                      Still first list item
  \item[Second Label] Second list item
  \item[Third Label]  Third list item
  \item No label
\end{labelledsteps}

\end{document}

步骤项

答案3

newlist无需使用,以简单的方式获得相同的输出setlist

\documentclass[a4paper,10pt]{article}

\usepackage{enumitem}

\begin{document}

\begin{enumerate}[label=\textit{Step \arabic*:}]
    \item First list item \newline
          Still first list item
    \item Second list item
    \item Third list item
    \item A Fourth list item without a label.
\end{enumerate}

\end{document} 

相关内容