[Tex/LaTex] Missing glossaries entry despite using \glsaddall

glossariesxindy

Some glossary entries do not show up. But I am using \glsaddall.
What am I missing here?

\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}

After running

pdflatex MWE

the file MWE.sygX1 contains all four entries. Now running

makeglossaries MWE

creates MWE.syiX1, which contains only the entry for "tau_k" and "physical_t", but not "physical_dt" or "gamma_k".
Running

makeglossaries -n MWE

reveals:

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

As the xindy module for ngerman cannot be located, the effective call is

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

as far as i can see, the missing entries were both assigned to the "default" letter group by xindy. (this was seen by directly invoking xindy and examining the logfile MWE.glg afterwards)

Best Answer

The explanation why it happens is as follows:
xindy makes use of merge-rules that bring differently formatted keys into a canonical form. The file "/usr/share/xindy/base/tex.xdy" contains:

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

Therefor "\Delta" and "\gamma" are dropped. Now there is key clash:

  • "\Delta t" == "t" and
  • "\gamma_k" == "\tau_k".

As there are now only two keys, xindy picks one entry for each key and is done.

I suppose this behavior is not intended by the authors of "tex.xdy". I am not deep enough into the subject to tell whether a sort-rule would fit better.

My way to get around it:
provide each entry with sort=.. making it unique by adding trailing gibberish.

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