我知道使用该包可以enumitem
将列表标签修改为自定义格式。我根据在 StackExchange 上找到的其他几个问题的解决方案,得出了下面的“解决方案”。虽然这是我想要的输出,但序言中的代码并不简洁。
是否可以仅使用\newlist
和命令(以及我可能需要的任何其他命令)\setlist
来执行相同(或类似)的操作?enumitem
enumitem
\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}