在 enumitem 中使用 before 作为全局设置

在 enumitem 中使用 before 作为全局设置

我正在做一个小项目,并使用 enumitem 包原因超出了这个示例。我阅读了文档并设法制作了这个示例。目前,我在 \begin{description} 上使用 before 参数(取消注释第 6 行的部分)。

为了便于重用,我想将其移至描述环境的全局设置中(第 4 行)。但是,这似乎超出了我的理解范围。

谢谢您的帮助

\documentclass{article}
  \usepackage{enumitem}

  %\setlist[description]{before={\renewcommand{\makelabel}[1]{\textit{##1}: }}} % Illegal parameter number in definition of \enit@@description.
  \begin{document}
    \begin{description}%[before={\renewcommand{\makelabel}[1]{\textit{##1}: }}]
      \item[square]{a four-sided polygon is a square if and only if all sides are equal and its vertex angles are all right angles.}
    \end{description}
  \end{document}

答案1

如果您的目标只是更改描述标签的格式,那么您before根本不应该使用参数,而应该只指定标签的格式。如果您只是更改字体属性,则可以使用参数font(例如font=\normalfont\itshape)如果您想向标签添加材料(如您在评论中所述),最好的方法是创建一个命令来添加冒号(或执行您想要的任何其他格式)并将该命令用作参数中的最后一个。通常,对于格式化列表本身的各个部分,参数format的需求很少。before

\documentclass{article}
\usepackage{enumitem}
\newcommand\addcolon[1]{#1:}
\setlist[description]{format=\normalfont\itshape\addcolon}.
\begin{document}
  \begin{description}
    \item[square]{a four-sided polygon is a square if and only if all sides are
     equal and its vertex angles are all right angles.}
  \end{description}
\end{document}

答案2

该包显然通过三个级别的宏定义传递该参数,因此您需要

\documentclass{article}
  \usepackage{enumitem}

  \setlist[description]{before={\renewcommand{\makelabel}[1]{\textit{########1}: }}} % Illegal parameter number in definition of \enit@@description.
  \begin{document}
    \begin{description}%[before={\renewcommand{\makelabel}[1]{\textit{##1}: }}]
      \item[square]{a four-sided polygon is a square if and only if all sides are equal and its vertex angles are all right angles.}
      \item[square]{a four-sided polygon is a square if and only if all sides are equal and its vertex angles are all right angles.}
    \end{description}
  \end{document}

相关内容