自定义词汇表组标题

自定义词汇表组标题

我正在使用该glossaries软件包在同一个文档中生成多个词汇表,并且发现它可以方便地定义我自己的词汇表样式。

使用时,makeindex词汇表将细分为最多 28 个逻辑块,这些块由sort设置的键的第一个字符决定\newglossaryentry。细分分别为:符号数字, 和A,...,Z。我需要有三个单独的词汇表组,为此,我在sort词汇表条目的键前面添加了以下字母:

  • a对于一组数字字母
  • g一组希腊字母
  • s对于一组下标

这是一个 MWE(只需使用 在其上运行 (pdf)latex 两次即可--shell-escape):

\documentclass{article}
\usepackage[nomain,makeindex]{glossaries}

%% new glossary style
\newglossarystyle{onecol}{%
%
\renewenvironment{theglossary}%
{\begin{description}}{\end{description}}%
%
\renewcommand*{\glossaryheader}{}%
%
% indicate what to do at the start of each logical group
\renewcommand*{\glsgroupheading}[1]{%
\item[{\glsgetgrouptitle{##1}}]}
%
\renewcommand*{\glsgroupskip}{\indexspace}%
%
\renewcommand*{\glossaryentryfield}[5]{%
\item[\glstarget{##1}{##2}] ##3%
}%
}

%% glossary
\newglossary{model}{model.sys}{model.syo}{Nomenclature}

%% glossary entries
\newglossaryentry{L}{sort={aL},name={\ensuremath{\mathcal{L}}},type={model},
                       description={lift function}}
\newglossaryentry{CL}{sort={aCL},name={\ensuremath{C_L}},type={model},
                        description={lift coefficient}}
%
\newglossaryentry{alpha}{sort={galpha},name={\ensuremath{\alpha}},type={model},
                           description={angle of attack}}
\newglossaryentry{beta}{sort={gbeta},name={\ensuremath{\beta}},type={model},
                          description={sideslip angle}}
%
\newglossaryentry{fs}{sort={sfs},name={\ensuremath{\infty}},type={model},
                        description={free-stream condition}}

\immediate\write18{makeglossaries \jobname}
\makeglossaries

\begin{document}
\glsaddall
\printglossary[type={model},style={onecol}]
\end{document}

在此处输入图片描述

上面重新定义环境的方式theglossary有些冗余,但我现在只希望提供一个可行的示例。

问题

是否有可能消除第一组的标题,并将第二组和第三组的标题更改为希腊字母, 和下标, 分别?

如果是,我是否需要xindy使用自己的样式文件进行调用,或者改变我定义词汇表样式的方式onecol是否就足够了?

答案1

您的思路正确,但我们可以使用现有的。但请注意,使用此解决方案时,您的所有词汇表条目在排序键中\glsgetgrouptitle都应包含ag或前缀。输入s

\newcommand*{\Agroupname}{}
\newcommand*{\Ggroupname}{Greek letters}
\newcommand*{\Sgroupname}{Subscripts}

进入你的序言以获得 特殊命名法

如果需要,您还可以\glsgroupheading\newglossarystyle声明中重新定义,如下所示(需要etoolbox包):

\renewcommand*{\glsgroupheading}[1]{%
\ifstrequal{A}{##1}{\relax}%
{\item[{\glsgetgrouptitle{##1}}]}%
}
%
\newcommand*{\Ggroupname}{Greek letters}
\newcommand*{\Sgroupname}{Subscripts}

这种方式\glsgroupheading在第一个词汇表组开始时不执行任何操作:

在此处输入图片描述

相关内容