TLDR;假设词汇表条目为 B-[参见]-A,和 C-[参见]-B,当文本中引用 B 时,词汇表显示 C 和 B (!?)。我怎样才能让词汇表显示 A 和 B,不是C?
交叉引用引擎似乎以反向方式使用 [see] 和 [seealso] 循环交叉引用依赖关系。我没有找到有关这种特殊情况的文档。对于上述示例,我假设词汇表显示 B 和 A,即我引用的术语和我引用的术语所引用的术语。而不是引用我引用的术语的术语(慢慢读 :-))。
我的实际情况是,我使用了一个非常大的词汇表,我有意用 [see] 和 [seealso] 朝着最通用的术语方向建立它(我的意图是,只引用最通用术语的出版科学文本不会自动复制所有更高级的术语和概念)。
参见下面的例子,它表明交叉引用似乎“走错了方向”(在我看来,我从较高的数字到较低的数字引用,并且在“概念”之间有一些引用),通过显示
- l2(文中引用)
- l3(根本没有引用,但通过交叉引用引用了 l2[参见])
- o2(由 l2 直接引用)
- o3(根本没有引用,通过交叉引用引用了 o2 [另请参阅])
我想展示的是:
- l2(文中引用)
- l1(通过交叉引用被 l2 引用[参见])
- o2(由 l2 直接引用)
- o1(通过交叉引用被 o2 引用 [另请参阅])
请注意,m2 没有显示,并且似乎表现得如我预期的那样(m2\gls
在描述中引用 l2,我假设\gls
在描述中表现为 [参见])。
MWE:(使用带有颜色链接的超链接来显示由于没有适当的可见目标而造成的混乱)
\documentclass[a4paper]{article}
\usepackage[colorlinks]{hyperref}
\usepackage[automake]{glossaries-extra}
\makeglossaries{}
\newglossaryentry{l1}
{
name=level1,
description={Level 1}
}
\newglossaryentry{l2}
{
name=level2,
description={Level 2, not like \gls{o2} at all.},
see={l1}
}
\newglossaryentry{l3}
{
name=level3,
description={Level 3},
see={l2}
}
\newglossaryentry{o1}
{
name=other1,
description={Other 1}
}
\newglossaryentry{o2}
{
name=other2,
description={Other 2},
seealso={o1}
}
\newglossaryentry{o3}
{
name=other3,
description={Other 3},
see={o2}
}
\newglossaryentry{m2}
{
name=m2,
description={M2, see \gls{l2}}
}
\begin{document}
I reference \gls{l2}, but none of the others directly in the text.
\printglossaries
\end{document}
(已测试词汇表 2019/01/06 v4.42 和词汇表 2020/03/19)
答案1
根据@NicolaTalbot(参见https://www.dickimaw-books.com/bugtracker.php?action=view&key=163) 该问题已记录在案,且已知未被bib2gls
使用。
即,解决方案是切换到使用.bib
文件作为词汇表。
最简单的方法是使用提供的convertgls2bib
脚本。