使用 {nomencl} + {etoolbox} 为命名法添加进一步分组

使用 {nomencl} + {etoolbox} 为命名法添加进一步分组

为了给我的硕士论文添加术语,我遵循overleaf 的推荐并使用以下代码。

分组对我来说非常重要。不幸的是,我不知道如何使用 创建子群etoolbox。对于这个特定示例,子群是指“物理常数”、“数字集”和“其他符号”的子部分。

我的总体目标是这样的:对于“公式和符号列表”部分(分组),有“空间和$ \ sigma$-代数”,“运算符”,“函数”等子部分...

我如何通过扩展下面的代码片段来实现这一点?

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

%% This code creates the groups
% -----------------------------------------
\usepackage{etoolbox}
\renewcommand\nomgroup[1]{%
  \item[\bfseries
  \ifstrequal{#1}{P}{Physics constants}{%
  \ifstrequal{#1}{N}{Number sets}{%
  \ifstrequal{#1}{O}{Other symbols}{}}}%
]}
% -----------------------------------------

\begin{document}
Here is an example:

\nomenclature[P]{\(c\)}{Speed of light in a vacuum}
\nomenclature[P]{\(h\)}{Planck constant}
\nomenclature[P]{\(G\)}{Gravitational constant}
\nomenclature[N]{\(\mathbb{R}\)}{Real numbers}
\nomenclature[N]{\(\mathbb{C}\)}{Complex numbers}
\nomenclature[N]{\(\mathbb{H}\)}{Quaternions}
\nomenclature[O]{\(V\)}{Constant volume}
\nomenclature[O]{\(\rho\)}{Friction index}

\printnomenclature
\end{document}

答案1

现在有一个更好的工具可以实现这样的字符串切换命令。

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

\renewcommand{\nomname}{List of formulas and symbols}

\ExplSyntaxOn
\NewExpandableDocumentCommand{\strcase}{mm}
 {
  \str_case:nn { #1 } { #2 }
 }
\ExplSyntaxOff

\renewcommand\nomgroup[1]{%
  \item[\bfseries
    \strcase{#1}{
      {S}{Spaces and \(\sigma\)-algebras}
      {O}{Operators}
      {F}{Functions}
      % add here other cases
    }%
  ]%
}

\begin{document}

Here is an example:

\nomenclature[S]{\(V\)}{a vector space}
\nomenclature[S]{\(\mathcal{A}\)}{a \(\sigma\)-algebra}
\nomenclature[O]{\(\mathrm{T}\)}{an operator}
\nomenclature[O]{\(\Sigma\)}{an operator}
\nomenclature[F]{\(f\)}{a function}
\nomenclature[F]{\(\log\)}{the natural logarithm}

\printnomenclature

\end{document}

您可以轻松扩展组集。

在此处输入图片描述

相关内容