6

Is it possible to use \gls (from the glossaries package) inside a caption without \protecting it every single time? The glossaries package says the \gls command is not fragile... but I get errors unless I protect it.

Kind of annoying since half the advantage of a glossary/acronym package is reducing the amount of typing you have to repeat.

\documentclass{article}
\usepackage{caption}
\usepackage{glossaries}

\newglossaryentry{Name}{name={Name},description={Description}}

\makeglossaries

\begin{document}

\begin{figure}[h]
    \caption{Blah blah \protect\gls{name}}
\end{figure}

\end{document}

If you remove the protect it will complain about an extra }.

1
  • Robustify appears to have worked. Thanks! Why would it compile without that for you but not me?
    – Jack
    Commented Oct 7, 2011 at 9:00

1 Answer 1

7

The glossaries package loads the etoolbox package by default. And, etoolbox provides \robustify{<command>} that redeclares <command> as a robust (non-fragile) command. Therefore, add

\robustify{\gls}% Make \gls not fragile

after loading glossaries.

5
  • I had to manually usepackage etoolbox for this to work.
    – Jack
    Commented Oct 7, 2011 at 9:05
  • What version of glossaries do you have? Mine is 2011/04/12 v3.01. Add \listfiles before \documentclass{...} and view your .log file. Earlier versions may not have needed/loaded etoolbox.
    – Werner
    Commented Oct 7, 2011 at 9:08
  • 1
    @Werner Also, the documentation says 'As from v3.01 \gls is no longer fragile and doesn’t need protecting', so this may just be a version issue.
    – Joseph Wright
    Commented Oct 7, 2011 at 10:01
  • I have v2.05 so this must be the problem. But I specifically downloaded the latest version and placed it in my tex directory. How can I stop the old version that comes with my dist overriding this?
    – Jack
    Commented Oct 7, 2011 at 10:34
  • @Jack: It's best to update packages via your package manager. If not, you need to overwrite the older package style file with the new one since TeX will retrieve the file (with the same name) in the same location. Updating your FNDB (FileName DataBase) may also solve this issue, as long as you don't have duplicates stored in different places.
    – Werner
    Commented Oct 7, 2011 at 14:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .