完全自定义 Itemize 和 Enumerate

完全自定义 Itemize 和 Enumerate

假设需要更改大多数 itemize 或 enumerate 参数全球(在每个 itemize 或 enumerate 环境中都更改参数并不优雅)。如果要编写类似

\renewcommand{\@listI}{
\leftmargin=5mm
\labelsep=5mm
\itemindent=0mm
\listparindent=3mm}

它不适用于标准 LaTeX 类。此外,还可以创建自己的 itemize,例如

\newenvironment{itemizetest}
{\begin{list}{$\bullet$}{
\leftmargin=5mm
\labelwidth=3mm
\labelsep=3mm
}}{\end{list}}

但它只是单级项目(不嵌套)。

  1. 是否可以全局更改 itemize/enumerate 的默认参数(在序言中)?
  2. 如果要创建自己的项目或枚举,是否可以创建第二级(嵌套)?

答案1

enumitem提供了一种专门处理此问题的方法。有关更多信息,请参阅5 全局设置(第 9 页)enumitem文档

主界面提供:

\setlist[enumerate,<levels>]{<format>}
\setlist[itemize,<levels>]{<format>}
\setlist[description,<levels>]{<format>}
\setlist[<levels>]{<format>}

可用于<format>为不同<levels>的列表设置enumerateitemizedescription,或为所有列表设置 。如果没有<levels>,则适用于所有级别。

下图显示了左侧使用默认设置的嵌套enumerate/列表,而右侧已应用相同的嵌套结构:itemize\setlist[enumerate]{noitemsep,label*=\arabic*.}

在此处输入图片描述

正如所见,只有enumerate项目之间没有分离,并且嵌套 \arabic*.标签样式通过 提供\setlist

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\begin{document}

\noindent
\begin{minipage}[t]{0.5\textwidth}
\begin{enumerate}
  \item First item
  \begin{itemize}
    \item Second item
    \item Third item
    \begin{enumerate}
      \item Fourth item
      \item Fifth item
    \end{enumerate}
    \item Sixth item
    \begin{itemize}
      \item Seventh item
      \item Eighth item
    \end{itemize}
    \item Ninth item
  \end{itemize}
  \item Tenth item
\end{enumerate}
\end{minipage}%
\begin{minipage}[t]{0.5\textwidth}
\setlist[enumerate]{noitemsep,label*=\arabic*.}
\begin{enumerate}
  \item First item
  \begin{itemize}
    \item Second item
    \item Third item
    \begin{enumerate}
      \item Fourth item
      \item Fifth item
    \end{enumerate}
    \item Sixth item
    \begin{itemize}
      \item Seventh item
      \item Eighth item
    \end{itemize}
    \item Ninth item
  \end{itemize}
  \item Tenth item
\end{enumerate}
\end{minipage}

\end{document}

相关内容