我正在使用该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
都应包含a
、g
或前缀。输入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
在第一个词汇表组开始时不执行任何操作: