使用子组时,根据描述(而不是符号)对命名法进行排序

使用子组时,根据描述(而不是符号)对命名法进行排序

我想知道如何根据描述而不是符号对命名法进行排序,同时仍然使用子组(例如,下标、上标等的单独组)?以下建议定义一个新命令,\Nomenclature用于根据描述而不是符号进行排序:

\documentclass[a4paper]{report}

\usepackage{nomencl}
\makenomenclature

\newcommand\Nomenclature[2]{\nomenclature[#2]{#1}{#2}}

\begin{document}
Text% to produce a non-empty page

\Nomenclature{$\omega$}{Absolute Frequency}
\Nomenclature{HOA}{Acetic acid}
\Nomenclature{Al}{Aluminium}
\Nomenclature{ASTM}{American Standard Testing Machine}

\printnomenclature

\end{document}

但是,我不确定如何让它与子组一起工作,我使用\nomgroup以下命令创建了子组:

\renewcommand\nomgroup[1]{%
  \item[\large\bfseries
  \ifstrequal{#1}{A}{Acronyms}{%
  \ifstrequal{#1}{R}{Roman Symbols}{%
  \ifstrequal{#1}{G}{Greek Symbols}{%
  \ifstrequal{#1}{S}{Superscripts}{% 
  \ifstrequal{#1}{U}{Subscripts}{%   
  \ifstrequal{#1}{X}{Other Symbols}{}}}}}}]
  \insertnomheaders
  }

有什么建议吗?谢谢

答案1

这是可能的,但是你必须声明你的\Nomenclature命令有三个参数:

\newcommand\Nomenclature[3][X]{\nomenclature[#1#3]{#2}{#3}}

此外,命令\insertnomheaders未定义。我已重新定义\nomgroup该命令(并做了一些更改):

\renewcommand\nomgroup[1]{%
  \item[\large\bfseries
  \ifstrequal{#1}{A}{Acronyms}{%
  \ifstrequal{#1}{R}{Roman Symbols}{%
  \ifstrequal{#1}{G}{Greek Symbols}{%
  \ifstrequal{#1}{M}{Molecules}{%
  \ifstrequal{#1}{X}{Other Symbols}{}}}}}]%
  }

使用时,\Nomenclature必须将第一个可选参数指定为 中列出的参数之一,\nomgroup以便将其插入正确的子组中。如果省略可选参数,则默认值为X

一位 MWE 表示:

\documentclass[a4paper]{report}
\usepackage{etoolbox}
\usepackage{nomencl}

\newcommand\Nomenclature[3][X]{\nomenclature[#1#3]{#2}{#3}}

\renewcommand\nomgroup[1]{%
  \item[\large\bfseries
  \ifstrequal{#1}{A}{Acronyms}{%
  \ifstrequal{#1}{R}{Roman Symbols}{%
  \ifstrequal{#1}{G}{Greek Symbols}{%
  \ifstrequal{#1}{M}{Molecules}{%
  \ifstrequal{#1}{X}{Other Symbols}{}}}}}]%
  }

\makenomenclature

\begin{document}
Text% to produce a non-empty page

\Nomenclature[G]{$\omega$}{Absolute Frequency}
\Nomenclature[G]{$f$}{Frequency}
\Nomenclature[M]{HOA}{Acetic acid}
\Nomenclature[M]{Al}{Aluminium}
\Nomenclature[A]{ASTM}{American Standard Testing Machine}
\Nomenclature[X]{foo2}{foo2}
\Nomenclature{foo1}{foo1}

\printnomenclature

\end{document}  

输出:

在此处输入图片描述

如您所见,元素被放置在正确的子组中,并根据其描述排序。

相关内容