使用 nomencl 包为每个 \nomgroup 指定唯一的 \nomlabelwidth

使用 nomencl 包为每个 \nomgroup 指定唯一的 \nomlabelwidth

在我的论文中,我使用nomencl包含不同组的包。由于一个组中的几个条目相当长,因此我想专门增加其中的\nomlabelwidth\nomgroup全局增加\nomlabelwidth会导致所有其他组中出现大量不必要的空白,而我想避免这种情况。

是否有可能\setlength{\nomlabelwidth}{<value>}在一个群体内而不是在全球范围内进行?

这是 MWE

\documentclass{article}
\usepackage{amsmath}
\usepackage{nomencl}
\makenomenclature

\setlength{\nomlabelwidth}{3em}

\renewcommand{\nomgroup}[1]{%
    \ifthenelse{\equal{#1}{D}}{\item[\textbf{General notation}]}{%
        \ifthenelse{\equal{#1}{A}}{\item[\textbf{Acronyms}]}{}}
    \vspace{1.5em}% add space between groups
}

\begin{document}
Test nomenclature.
\nomenclature[D]{$\{\boldmath{e}_z,\boldmath{e}_y,\boldmath{e}_z\}$ or $\{\boldmath{e}_1,\boldmath{e}_2,\boldmath{e}_3\}$}{a long entry}
\nomenclature[D]{$\{\boldmath{E}\}$}{a short entry}
\nomenclature[A]{ADA}{a dummy acronym }

\printnomenclature

\end{document}

MWE 的输出

答案1

要获得所需的输出,您可以在\nomgroup命令中启动一个新列表,并在其中设置相关尺寸,其中\labelwidth控制标签宽度。其他相关尺寸是\leftmargin\itemsep。左边距是新标签宽度减去旧标签宽度。此代码主要取自包的源代码,特别是定义环境nomencl的部分(在 中的第 250 行左右)。nomenclaturenomencl.sty

此外,您还应该使用负数反转新列表生成的额外空间\vspace。总而言之,这有点混乱,但似乎有效:)

梅威瑟:

\documentclass{article}
\usepackage{amsmath}
\usepackage{nomencl}
\makenomenclature

\setlength{\nomlabelwidth}{3em}
\renewcommand{\nomgroup}[1]{%
    \ifthenelse{\equal{#1}{D}}{%
    \endlist%
    \list{}{%
      \labelwidth15em
      \leftmargin12em
      \itemsep\nomitemsep
      \let\makelabel\nomlabel}%
    \vspace{-1.5em}%
    \item[\textbf{General notation}]}{%
        \ifthenelse{\equal{#1}{A}}{\item[\textbf{Acronyms}]}{}}
    \vspace{1.5em}% add space between groups
}

\begin{document}
Test nomenclature.
\nomenclature[D]{$\{\mathbf{e}_z,\mathbf{e}_y,\mathbf{e}_z\}$ or $\{\mathbf{e}_1,\mathbf{e}_2,\mathbf{e}_3\}$}{a long entry}
\nomenclature[D]{$\{\mathbf{E}\}$}{a short entry}
\nomenclature[A]{ADA}{a dummy acronym }

\printnomenclature

\end{document}

结果:

在此处输入图片描述

相关内容