按描述排序的符号索引列表

按描述排序的符号索引列表

我有兴趣创建两个符号列表:

  1. 按符号排序的传统列表,提供每个符号的描述
  2. 按照描述排序的索引式列表,给出每个描述的符号

例如,我将平均速度定义为“v”。我希望读者能够使用第一个列表回答“v 代表什么?”这个问题,但我会希望读者能够使用第二个列表回答“平均速度如何表示?”这个问题。第二个列表应该是“索引式的”,因为“平均速度”和“平均速度”都应该有引用“v”的条目,但不应该有指示符号使用位置的页码。

我已经找到了很多关于如何获取列表 #1 的信息(例如这个彻底回答的问题)但没有关于如何获取列表 #2(标题这个问题看起来确实很相似,但答案描述了一个列表,其中给出了每个符号的页面引用,即可以回答“v 出现在哪里?”的问题。

我如何创建列表 #2?在我看来,最简单的方法是创建一个索引,其中的页码列表被适当的符号名称替换,但我不确定如何做到这一点。

答案1

实现此目的的一种方法是glossaries-extrabib2gls。这需要在文件中定义信息.bib。在这种情况下,@dualentry可以使用,它本质上定义了两个依赖条目:一个主条目和一个对偶条目。主条目可以在文档中用给出的标签来标识@dualentry,而对偶条目可以通过dual.标签(在哪里标签是文件中给出的原始标签.bib)。

如果你已经使用过该glossaries软件包,那么

@dualentry{velocity,
  name={mean velocity},
  description={\ensuremath{\vec{v}}}
}

本质上就像

\newglossaryentry{velocity}{
  name={mean velocity},
  description={\ensuremath{\vec{v}}}
}
\newglossaryentry{dual.velocity}{
  description={mean velocity},
  name={\ensuremath{\vec{v}}}
}

但此外,这两个条目被认为是相互依赖的,因此如果文档中引用了一个条目,则另一个条目也会被自动选择。

主条目引用为\gls{velocity}(显示“平均速度”),双条目引用为\gls{dual.velocity}(显示\ensuremath{\vec{v}})。前缀系统可以更改。为方便起见,该glossaries-extra软件包提供了\glsxtrnewgls,它允许您定义一个命令作为\gls{字首.标签}。 例如:

\glsxtrnewgls{dual.}{\sym}

现在\sym{velocity}可以用来代替\gls{dual.velocity}

.bib以下是名为 的文件的示例symbols.bib

% Encoding: UTF-8

@dualentry{velocity,
  name={mean velocity},
  description={\ensuremath{\vec{v}}}
}

@dualentry{torque,
  name={torque},
  description = {\ensuremath{\vec{\tau}}}
}

@dualentry{area,
  name={area},
  description={\ensuremath{A}}
}

@dualentry{momentum,
  name={momentum},
  description={\ensuremath{\vec{p}}}
}

@index{velocitymean,
  name = {velocity, mean},
  see = {velocity}
}

这是使用此文件的文档:

\documentclass{article}

\usepackage[
 symbols, % create 'symbols' list
 record % using bib2gls
 ]{glossaries-extra}

\GlsXtrLoadResources
 [src=symbols, % entries defined in symbols.bib
  dual-type=symbols,% put the dual entries in the 'symbols' list
  type=main, % put the primary entries in the 'main' list
  sort = en, % sort the primary entries according to natural English ordering
  dual-sort = letter-nocase, % sort the dual entries according to case-insensitive letter order
  save-locations=false % page references not required
 ]

\glsxtrnewgls{dual.}{\sym}

\begin{document}
The \gls{velocity} is denoted \sym{velocity}.
The \gls{area} is denoted \sym{area}.
The \gls{torque} is denoted \sym{torque}.
The \gls{momentum} is denoted \sym{momentum}.

\printunsrtglossary[type=symbols,style=long]
\printunsrtglossary[type=main,style=long]
\end{document}

如果调用该文件myDoc.tex则构建过程如下:

pdflatex myDoc
bib2gls myDoc
pdflatex myDoc

结果是:

平均速度用 v 表示。面积用 A 表示。扭矩用 τ 表示。动量用 p 表示。符号 面积 A 动量 p 平均速度 v 扭矩 τ 词汇表 面积 A 平均速度 v 动量 p 扭矩 τ

由于该@index条目尚未在文档中引用,因此尚未选择该条目,但可以在选项中更改选择标准,以确保如果已选择了键\GlsXtrLoadResources中引用的标签,则选择该条目:see

selection={recorded and deps and see}

不幸的是,由于位置列表已被抑制(通过使用save-locations=false),因此通常包含在位置列表中的实际交叉引用也被抑制,因此列表显示为:

词汇表 区域 A 平均速度 v 动量 p 扭矩 τ 平均速度

可以将交叉引用添加到后描述挂钩中,如下所示:

\documentclass{article}

\usepackage[
 symbols, % create 'symbols' list
 record, % using bib2gls
 nostyles,% don't load default styles
 stylemods=long% patch styles and load glossary-long.sty
 ]{glossaries-extra}

\GlsXtrLoadResources
 [src=symbols, % entries defined in symbols.bib
  dual-type=symbols,% put the dual entries in the 'symbols' list
  type=main, % put the primary entries in the 'main' list
  sort = en, % sort the primary entries according to natural English ordering
  dual-sort = letter-nocase, % sort the dual entries according to case-insensitive letter order
  save-locations=false, % page references not required
  selection={recorded and deps and see},% selection criteria
  category=general,
  dual-category=symbol
 ]

\glsxtrnewgls{dual.}{\sym}

\renewcommand{\glsxtrpostdescgeneral}{%
  \glsxtrifhasfield{see}{\glscurrententrylabel}%
  {\glsxtrusesee{\glscurrententrylabel}}%
  {}%
}

\begin{document}
The \gls{velocity} is denoted \sym{velocity}.
The \gls{area} is denoted \sym{area}.
The \gls{torque} is denoted \sym{torque}.
The \gls{momentum} is denoted \sym{momentum}.

\printunsrtglossary[type=symbols,style=long]
\printunsrtglossary[type=main,style=long]
\end{document}

文档现在如下所示:

平均速度用 v 表示。面积用 A 表示。扭矩用 τ 表示。动量用 p 表示。符号 面积 A 动量 p 平均速度 v 扭矩 τ 词汇表 面积 A 平均速度 v 动量 p 扭矩 τ 速度,平均 参见平均速度

您可以根据您的要求选择不同的词汇表样式。(有许多预定义样式可供选择。)如果您使用nostylespackage 选项,请确保调整值stylemods以确保加载了适当的样式包(并进行了修补以确保后描述挂钩有效)。例如,如果您从 样式long(在 中定义glossary-long.sty)切换到index样式(在 中定义glossary-tree.sty),则需要更改stylemods=longstylemods=tree。(您还可以同时加载多个样式包,例如stylemods={long,tree}。)

关于排序的说明。

主要条目(字段中包含文本值name)按照 进行排序sort=en,使用英语排序规则。这通常会忽略标点符号和重音符号,并按照拉丁字母排序。其他字母表中的任何字符,例如数学希腊字母 tau

相关内容