为什么 \setlist{nosep} 在首字母缩略词包中不起作用?

为什么 \setlist{nosep} 在首字母缩略词包中不起作用?

由于该acronym包是使用描述环境构建的,并且描述环境与 Enumitem 一起工作\setlist{nosep},为什么 Acronym 包不受此命令的影响?我需要重置环境AC@deflist才能获得类似的效果,这是一个比简单命令复杂得多的解决方案。是否可以配置 Acronym 以对该\setlist{nosep}命令做出反应?

\renewenvironment{AC@deflist}[1]{
    \ifAC@nolist%
    \else%
    \raggedright\begin{list}{}{
        \settowidth{\labelwidth}{\AC@makelabel{\aclabelfont{#1}}}%
        \setlength{\leftmargin}{\labelwidth}%
        \addtolength{\leftmargin}{\labelsep}%
        \setlength{\itemsep}{0pt}
        \setlength{\parsep}{0pt}
        \setlength{\parskip}{0pt}
        \renewcommand{\makelabel}{\AC@makelabel}
    }
    \fi
}{
    \ifAC@nolist%
    \else%
    \end{list}%
    \fi
}

答案1

可以AC@deflist使用以下代码重新定义环境以使用描述而不是列表。这样,该\setlist{nosep}命令也将应用于首字母缩略词列表。

\documentclass{article}
\usepackage{acronym}
\usepackage{enumitem}
\setlist{nosep}

\makeatletter
\renewenvironment{AC@deflist}[1]%
{\begin{description}[leftmargin=!, labelwidth=3cm, labelsep=0pt, itemindent=0pt]}%
{\end{description}}
\makeatother

\begin{document}

\begin{acronym}
    \acro{AI}{Artificial Intelligence}
    \acro{ML}{Machine Learning}
\end{acronym}

\end{document}

相关内容