如何按字母顺序然后按出现顺序对词汇表条目进行排序

如何按字母顺序然后按出现顺序对词汇表条目进行排序

我希望我的glossaries条目按字母顺序排序,并且,如果某些条目具有相同的排序键,则按它们在文本中的调用顺序排序。有什么办法吗?

这是 MWE,包含两个条目divcommut显示相同的排序键。

\documentclass[]{article}

\usepackage[
            nogroupskip,
%           xindy, 
            ]{glossaries}
% I compile with xindy, but I do not think it is relevant here.
% xindy -L english -C utf8 -I xindy -M % -t %.glg -o %.gls %.glo


\newglossaryentry{div}
{ name={\ensuremath{\protect\vec{\nabla}.}},
  description={Divergence operator},
  sort={0}
  }

\newglossaryentry{commut}
{ name={\ensuremath{\protect[~,~]}},
  description={Commutator},
  sort={0}
  }

\newglossaryentry{b0}
{ name={\ensuremath{\protect\vec{B}_0}},
  description={Static magnetic field},
  sort={B0}
  }

\makeglossaries

\begin{document}
Text.\gls{div} \gls{commut} \gls{b0}

\printglossaries
\end{document}

例如,此处交换子未出现在词汇表中。我希望它出现在散度运算符之后,尽管它们的排序键相同。

在此处输入图片描述

答案1

我建议\makenoidxglossaries一起使用\printnoidxglossary[sort=standard],首先根据排序键对元素进行排序,然后根据用途对元素进行排序。

\documentclass{article}
\usepackage[nogroupskip]{glossaries}

\newglossaryentry{div}
{ name={\ensuremath{\protect\vec{\nabla}.}},
  description={Divergence operator},
  sort={0}
  }

\newglossaryentry{commut}
{ name={\ensuremath{\protect[~,~]}},
  description={Commutator},
  sort={0}
  }

\newglossaryentry{b0}
{ name={\ensuremath{\protect\vec{B}_0}},
  description={Static magnetic field},
  sort={B0}
  }

\newglossaryentry{b1}
{ name={\ensuremath{\protect\vec{B}_1}},
  description={Static magnetic field},
  sort={B0}
  }

\makenoidxglossaries

\begin{document}
Text.\gls{b1} \gls{div} \gls{commut} \gls{b0}

\printnoidxglossary[sort=standard]
\end{document}

然后你得到

在此处输入图片描述

首先0根据用途显示条目,然后显示两个B0条目。

xindy可能会改变排序的条目,所以我不确定它是否在那里起作用......)

相关内容