我正在尝试实现两个版本的环境numberedlist
:
- 如果没有争论传递给它,它应该启动环境
enumerate
并通过默认值作为其论点, - 如果一个论点(或列表)传递给它,它应该启动环境
enumerate
并通过默认值+传递的参数作为其参数。
我的 MWE 无法正常工作。它打印出参数而不是使用它们。
\documentclass{article}
\usepackage{ifthen}
\usepackage{enumitem}
\newenvironment{numberedlist}[1][]{%
\let\tempstring{topsep=0.3cm,noitemsep,itemindent=0.5cm,labelsep=0.5cm}%default value
\ifthenelse{\equal{#1}{}}{}{%
\let\tempstring{\tempstring{}#1}%add further params
}%
\begin{enumerate}[\tempstring]%
}{\end{enumerate}}
\begin{document}
\begin{numberedlist}
\item item 1
\item item 2
\item item 3
\end{numberedlist}
\begin{numberedlist}[resume]
\item continue the list with 4th item!
\item item 5
\item item 6
\end {numberedlist}
\end{document}
答案1
您必须展开默认选项列表才能\begin{enumerate}
看到它:
\documentclass{article}
\usepackage{enumitem}
\newcommand\numberedlistdefault{%
topsep=0.3cm,noitemsep,itemindent=0.5cm,labelsep=0.5cm% default value
}
\newenvironment{numberedlist}[1][]
{\expandafter\enumerate\expandafter[\numberedlistdefault,#1]}
{\endenumerate}
\begin{document}
\begin{numberedlist}
\item item 1
\item item 2
\item item 3
\end{numberedlist}
\begin{numberedlist}[resume]
\item continue the list with 4th item!
\item item 5
\item item 6
\end {numberedlist}
\end{document}
但没有宏可能更简单:
\newenvironment{numberedlist}[1][]
{\enumerate[
topsep=0.3cm,
noitemsep,
itemindent=0.5cm,
labelsep=0.5cm,
#1
]}
{\endenumerate}
你不需要条件,因为enumitem
很乐意接受空选项。