我想知道如何根据描述而不是符号对命名法进行排序,同时仍然使用子组(例如,下标、上标等的单独组)?以下建议定义一个新命令,\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}
输出:
如您所见,元素被放置在正确的子组中,并根据其描述排序。