尽管使用了 \glsaddall,但仍缺少词汇表条目

尽管使用了 \glsaddall,但仍缺少词汇表条目

一些词汇表条目未显示。但我正在使用\glsaddall。我这里遗漏了什么?

\documentclass[10pt,ngerman]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[xindy]{imakeidx}
\usepackage[xindy,acronym]{glossaries}
\newglossary{symbolslist}{syiX1}{sygX1}{Symbolverzeichnis} 
\makeglossaries
\makeindex
\newglossaryentry{physical_t}{
type=symbolslist,
name={\ensuremath{t}},
description={text t}
}
\newglossaryentry{physical_dt}{
type=symbolslist,
name={\ensuremath{\Delta t}},
description={missing text delta}
}
\newglossaryentry{tau_k}{
type=symbolslist,
name={\ensuremath{\tau_k}},
description={text tau}
}
\newglossaryentry{gamma_k}{
type=symbolslist,
name={\ensuremath{\gamma_k}},
description={missing text gamma}
}
\newacronym{abc}{ABC}{the ABC thing}
\begin{document}
\glsaddall
\printglossary[type=\acronymtype,style=long]
\printglossary[type=symbolslist,style=long]
\end{document}

跑步后

pdflatex MWE

文件 MWE.sygX1 包含所有四个条目。现在运行

makeglossaries MWE

创建 MWE.syiX1,其中仅包含“tau_k”和“physical_t”的条目,但不包含“physical_dt”或“gamma_k”。运行

makeglossaries -n MWE

揭示了:

makeglossaries version 2.15 (2014-07-30)
[..]
xindy  -L ngerman -C utf8 -I xindy -M "MWE" -t "MWE.glg" -o "MWE.syiX1" "MWE.sygX1"

由于无法找到 ngerman 的 xindy 模块,因此有效调用是

xindy  -L general -I xindy -M "MWE" -t "MWE.glg" -o "MWE.syiX1" "MWE.sygX1"

据我所知,缺失的条目都被 xindy 分配给了“默认”字母组。(这是通过直接调用 xindy 并随后检查日志文件 MWE.glg 看到的)

答案1

说明为什么事情是这样的:
xindy 利用合并规则将不同格式的密钥转换为规范格式。文件“/usr/share/xindy/base/tex.xdy”包含:

(merge-rule "\\[a-zA-Z@]+ *" "" :eregexp)

因此删除了“\Delta”和“\gamma”。现在存在键冲突:

  • "\Delta t" == "t" 并且
  • “\gamma_k” == “\tau_k”。

由于现在只有两个键,xindy 为每个键选择一个条目并完成。

我认为这种行为不是“tex.xdy”作者的本意。我对这个主题了解不够深入,无法判断排序规则是否更合适。

我的路绕过它
为每个条目提供 sort=..,通过添加尾随乱码使其唯一。

\newglossaryentry{physical_dt}{
  type=symbolslist,
  name={\ensuremath{\Delta t}},
  sort={\ensuremath{\Delta t}uniqtrailer01212},
  description={missing text delta}
}

相关内容