The document below results in

Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref)                removing `\textgerman' on input line 1.

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.

l.27 \end{theglossary}
? X

when after XeLaTeX, makeglossaries I XeLaTeX again.

\documentclass[a4paper, twoside]{book}%[a4paper,oneside]

\setotherlanguages{english, greek}


  description={is a programmable machine that receives input,
               stores and manipulates data, and provides
               output in a useful format}

\title{Meine Chance\\Projektarbeit und IT-Basics}

\author{Erik Itter}





\section{Dokument/ Ausarbeitung}



and I have no idea if specifying the language/ code page this way is correct as well, just tried what I found after it told me it had no module for German utf8

  • You need to cut this example down to size. Remove the packages that you don't think are causing problems, and get it down to the one (or two) that are actually causing the problem. – Teepeemm Dec 8 '16 at 2:21
  • same thing with only the indexing stuff, see shortened code above – Erik Itter Dec 8 '16 at 2:49
  • 1
    You need to use \makeglossaries, the perl script rather than xindy directly. See page 44 of the manual. Also, it is recommended not to define glossary entries after \begin{document}. – cfr Dec 8 '16 at 3:26
  • We cannot compile your code as is. If you cannot reproduce the error without the bibliography, you'll need to provide the entries we need. But I'm guessing you can cut this out. Do you really want \printglossary twice? Is the indexing required for the error? You never use it... – cfr Dec 8 '16 at 3:29
  • Compiles fine here when I take out the bibliography. There's no glossary, as expected, of course. But no errors. – cfr Dec 8 '16 at 3:34

"Have you used commands like \gls or glsadd in your document? There's a debugging method for glossaries in this answer" – Nicola Talbot

That is it. Adding just a reference to any glossary-entry (\gls{computer} with the MWE) and it works.


What @erik-itter (and Nicola Talbot) said is correct. However, there is an additional thing that you can do as well. It all depends on what you need/don't need.

Any single reference using \gls or \glsadd will only produce a glossary with the items that have been referenced. Say you have 100 entries defined for your glossary but only 1 is referenced in the document, then you will only have one entry in your compiled glossary.

If you want all the entries to appear, despite not being referenced explicitly in the document, then use this:

\glsaddall[types={main}] (assuming just the default glossary)

\glsaddall[types={symbols}] (assuming just a symbols glossary)

\glsaddall[types={main,symbols}] (a main glossary and a symbols glossary)


Following this approach, you can have multiple glossaries where some only have referenced entries while the others have all the entries.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.