定义新环境时如何传递选项?

定义新环境时如何传递选项?

我正在尝试定义一个新环境,它是环境的定制版本itemize,其中我传递给新环境的任何选项都会传递到底层itemize例如

\documentclass[12pt]{article}
\newenvironment{itemOpt}[1][]%
{%
    \begin{itemize}[#1]
    % some customization here
}%
{%
    \end{itemize}
}

\begin{document}

\begin{itemOpt}
  \item abc
\end{itemOpt}

\begin{itemOpt}[leftmargin=1in]
  \item abc
\end{itemOpt}
\end{document}

但是,这会引发missing \item错误。我做错了什么?

注意:我在这里仅用itemize作示例。

答案1

enumitem在自定义列表方面,它拥有一切。您无需编写新环境,而是可以随时更改属性。请考虑以下内容:

\documentclass{article}
\usepackage{enumitem}
\setlist[itemize]{itemsep=0pt}

\begin{document}

\begin{itemize}
  \item abc
\end{itemize}

\begin{itemize}[leftmargin=1in]
  \item abc
\end{itemize}
\end{document}

可以使用 全局修复选项\setlist,可以通过克隆基本列表来定义新列表,可以中途更改属性等。有关详细信息,请参阅手册。

这是新列表的示例。

\documentclass{article}
\usepackage{enumitem}
\newlist{myitem}{itemize}{1}
\setlist[myitem]{label=$\bullet$,itemsep=0pt}

\begin{document}

\begin{myitem}
  \item abc
\end{myitem}

\begin{myitem}[leftmargin=1in]
  \item abc
\end{myitem}
\end{document}

相关内容