8
\documentclass{report}
\usepackage[acronym]{glossaries}
\makeglossary
\newacronym{svm}{SVM}{Support Vector Machine}
\newacronym{wasn}{WASN}{Wireless Sensor Networks}
\begin{document}
\printglossaries
\newpage
using \gls{svm} blah blah \gls{wasn}blah blah.....\gls{svm}
\end{document}

I am testing with above MWE. The acronyms are correctly displayed in the document body when compiled, but nothing gets printed where I need the List of Acronyms. I am using TexMakerX as my IDE on Windows 7.

Once I compile the above code a .glo file is created but it is empty. I think this is the problem but I don't know why it is happening.

  • Are you running makeglossaries in your document? – Gonzalo Medina Apr 22 '13 at 18:18
  • @GonzaloMedina yes – Thili Apr 22 '13 at 18:20
  • 1
    Your example works fine here, compiling with pdflatex, then makeglossaries, then pdflatex again. – Torbjørn T. Apr 22 '13 at 18:22
  • An empty .glo file is not relevant here since you are working with acronyms. Check the file .acr – Gonzalo Medina Apr 22 '13 at 18:23
  • 2
    (The above's not the cause of the problem. It's more reliable). You need to invoke the makeglossaries Perl script between your pdflatex runs. I've written an article on it on the LaTeX Community Forum and also in a section of one of my LaTeX books on how to do that. – Nicola Talbot Apr 22 '13 at 19:11
8

Creating a list of acronyms (or glossary) is a three stage process (at least):

  1. Typeset the document using LaTeX (or PDFLaTeX or XeLaTeX or LuaLaTeX, as appropriate)
  2. Run the makeglossaries Perl script or the makeglossaries-lite Lua script.
  3. Typeset the document again.

(You may need to repeat step 3.) Every time you modify the document in a way that alters the list (for example, adding or deleting instances of \gls, or removing or inserting text that results in a change in the associated page numbers) then you need to repeat all three steps in order to update the list.

The command \makeglossaries in your document creates some glossary-related files (.glo or .acn) and each time you use commands like \gls an entry is added to the relevant file when the document is typeset (in step 1).

In step 2 a special indexing application is run that reads in those glossary-related files and writes another file (.gls or .acr) with the LaTeX code required to typeset the glossary or list of acronyms. This file is then input in your document in step 3.

Step 2 causes the most confusion as it requires running a command line script. However, most front-ends have a button or menu item you can click that will run the script for you. Most front-ends need to be configured to run makeglossaries or makeglossaries-lite. The following TeX.SE answers provide instructions for integrating makeglossaries on various front-ends.

For WinEdt, have a look at the comp.text.tex thread Executing Glossaries' makeindex from a WinEdt macro.

For other front-ends, see Incorporating makeglossaries or makeglossaries-lite or bib2gls into the document build.

In each of the above cases, you need to have Perl installed if you use makeglossaries (but not makeglossaries-lite) or if you want to use xindy instead of the default makeindex.

Since makeglossaries-lite is a Lua script, you should already have a Lua interpreter if you have a modern TeX distribution with LuaTeX. If you want to use makeglossaries-lite instead, you should just be able to replace all references to makeglossaries with makeglossaries-lite, although it has fewer options and doesn't provide diagnostic tools, so it's not as useful if things go wrong. (Note that makeglossaries-lite was added to glossaries version 4.16, so it won't be available for older versions.)

Another possibility if you are having difficulty with step 2 is to add the package option automake to glossaries:

\usepackage[automake]{glossaries}

(Introduced in glossaries version 4.08.) This will try to get TeX to run the external applications (step 3 is still required) but this won't work if the shell escape is disabled. This option also won't work with xindy in the restricted mode, since xindy isn't on the list of trusted applications.¹ With both xindy and automake, you would need the less secure unrestricted mode, which I don't recommend for security reasons.

Alternatively, there's a GUI approach that uses Java rather than Perl. See also What can interfere with glossaries to prevent printing?


¹This is the case with TeX Live. I don't know about MiKTeX.

  • To accomplish this in WinEdt, you can simply go to Options -> Execution Modes and change the definition of MakeGlossary to Executable:makeglossaries.exe, Switches:, Parameters:"%N". Now executing the command MakeGlossary you have what you want and executing PDFTeXify you obtain the full cycle pdflatex - makeglossaries - pdflatex as many times as needed for a full compilation. – karlkoeller May 5 '13 at 5:41
  • I had a problem that glossary is not updated in pdf once I compile. But after I add '[automake]' in the 'usepackage' section not it's work well fine. Now it looks like this. '\usepackage[nopostdot,nonumberlist,acronym,section,automake]{glossaries}' – Sandun Madola Dec 28 '16 at 8:25
7

Your MWE can be compiled even without the need of makeglossaries application (and so without the need of having Perl installed), exploiting makeindex.

In fact, running

  1. pdflatex <yourfile>
  2. makeindex.exe -s <yourfile>.ist -o <yourfile>.acr <yourfile>.acn
  3. pdflatex <yourfile>
  4. pdflatex <yourfile>

works the same.

1

I'll add an answer that worked for me, since there appears to be no accepted answer to this question and this question was the first one to pop up in a web-search.

The glossaries package documentation states the following about using Hyperref:

Take care if you use the glossaries package with hyperref. Contrary to the usual advice that hyperref should be loaded last, glossaries (and glossaries-extra) must be loaded after hyperref.

and the following about displaying entries:

  1. Add \makenoidxglossaries to your preamble (before you start defining your entries, as described in Section 2).
  2. Put: \printnoidxglossary[sort=〈order〉,〈other options〉] where you want your list of entries to appear. Alternatively, use \printnoidxglossaries

Following these instructions resolved the issue for me.

Note: I'm using Overleaf so I have no control over package versions. They seem to use package version v4.41+. Which is why this works for me. I cannot confirm if this works for lower version numbers.

  • Welcome to TeX.SX! Thanks for your answer and help. Could you add an minimal working example and your compiling commands? – Bobyandbob Oct 29 '18 at 10:09
  • 1
    Thank you for your suggestion. This is an alternative approach that can work for some, but be aware that the \makenoidxglossaries method has a lot of drawbacks and can be very slow for large documents, so this solution may not work for everyone. – Nicola Talbot Oct 29 '18 at 12:16
  • @Bobyandbob I'd love to do so. However, I'm busy writing my Master's Thesis. About the compiling commands. I'm using Overleaf and I have no clue what commands they use. – Byebye Oct 29 '18 at 12:27

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.