![定义新环境时如何传递选项?](https://linux22.com/image/320844/%E5%AE%9A%E4%B9%89%E6%96%B0%E7%8E%AF%E5%A2%83%E6%97%B6%E5%A6%82%E4%BD%95%E4%BC%A0%E9%80%92%E9%80%89%E9%A1%B9%EF%BC%9F.png)
我正在尝试定义一个新环境,它是环境的定制版本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}