如何创建一个带参数的新命令?

如何创建一个带参数的新命令?

我正在使用enumitem包,并且我经常在代码中输入如下参数:

\begin{enumerate}[topsep=0.1cm, itemsep=0cm, parsep=0cm, label=(\roman*)]
\item
\end{enumerate}

我尝试通过定义命令来加快此速度:

\newcommand{\EnumParams}{topsep=0.1cm, itemsep=0cm, parsep=0cm, label=(\roman*)}

但是,当我运行以下命令时,显示错误。

\begin{enumerate}[\EnumParams]
\item
\end{enumerate}

你能说出为什么会崩溃吗?有什么解决办法吗?


我也尝试定义:

\newcommand{\EnumParams}{\ItemSep, \ParSep, \TopSep, \Label}
\newcommand{\ItemSep}{itemsep=0cm}
\newcommand{\ParSep}{parsep=0cm}
\newcommand{\TopSep}{topsep=0.1cm}
\newcommand{\Label}{label=(\roman*)}

但这也显示出错误。

答案1

您有几种选择:您可以定义自己的密钥,或者完全定义一个新列表。

\documentclass{article}

\usepackage{enumitem}

% 1st possibility: define new key
\SetEnumitemKey{mystyle}{topsep=0.1cm, itemsep=0cm, parsep=0cm, label=(\roman*)}

% 2nd possibility: define new list
\newlist{mylist}{enumerate}{1}% last parameter is maximum depth of nested lists
\setlist[mylist]{topsep=0.1cm, itemsep=0cm, parsep=0cm, label=(\roman*)}

\begin{document}

\noindent
Either
\begin{enumerate}[mystyle]
\item foo
\item bar
\item baz
\end{enumerate}
or equivalently
\begin{mylist}
\item foo
\item bar
\item baz
\end{mylist}

\end{document}

在此处输入图片描述

答案2

您可以使用给定的选项创建一个新的环境:

\documentclass{article}
\usepackage{enumitem}

\newenvironment{myenumerate}{\enumerate[topsep=0.1cm, itemsep=0cm, parsep=0cm, label=(\roman*)]}%
{\endenumerate}

\begin{document}
\begin{myenumerate}
\item
\end{myenumerate}

\end{document}

相关内容