Bug Tracker 
| ID | 115🔗 |
|---|---|
| Date: | 2016-10-11 01:14:04 |
| Status | Closed (Fixed) |
| Category | tracklang |
| Version | 1.3.1 |
| Summary | Trouble with \shellescape |
Sign in to subscribe to notifications about this report.
Description
This bug report is concerning more `tracklang' than `glossaries' package but:- the bug tracker list doesn't contain `tracklang',
- as explained below, if used standalone, an easy workaround does exist for `tracklang' but not for `glossaries'.
\shellescape' arises in some circumstances, as in the joined M(n)WE:
┌──── │ ! Missing number, treated as zero. │ <to be read again> │ \shellescape │ l.279 \ifnum\shellescape │ =0\relax │ ? └────In the MWE, it is enough to move `tracklang' before `imakeidx' to fix the bug. But `tracklang' is loaded by `glossaries', which is recommended to be loaded after `hyperref', which is one of last packages to be loaded.
MWE
Download (999B)
\listfiles
\documentclass[english]{article}
\usepackage{imakeidx}
\usepackage{glossaries}
\usepackage{babel}
\begin{document}
Foo.
\end{document}
This bug report is concerning more `tracklang' than `glossaries' package but:
1. the bug tracker list doesn't contain `tracklang',
2. as explained below, if used standalone, an easy workaround does exist for
`tracklang' but not for `glossaries'.
With the last update of `tracklang' package (2016/10/08 v1.3.1), an error
involving `\shellescape' arises in some circumstances, as in the joined M(n)WE:
┌────
│ ! Missing number, treated as zero.
│ <to be read again>
│ \shellescape
│ l.279 \ifnum\shellescape
│ =0\relax
│ ?
└────
In the MWE, it is enough to move `tracklang' before `imakeidx' to fix the
bug. But `tracklang' is loaded by `glossaries', which is recommended to be
loaded after `hyperref', which is one of last packages to be loaded.
Evaluation
(Your MWE needs to swap babel and glossaries.) \shellescape is a xetex primitive, which should expand to a number (0, 1, or 2) but it seems that imakeidx is defining it to \relax when used with (pdf)latex:
\documentclass[english]{article}
\show\shellescape
\usepackage{imakeidx}
\show\shellescape
\usepackage{babel}
\usepackage{glossaries}
\begin{document}
Foo.
\end{document}
produces (with pdflatex):
> \shellescape=undefined.
l.6 \show\shellescape
?
(/home/texlive/2016/texmf-dist/tex/latex/imakeidx/imakeidx.sty
(/home/texlive/2016/texmf-dist/tex/latex/xkeyval/xkeyval.sty
(/home/texlive/2016/texmf-dist/tex/generic/xkeyval/xkeyval.tex
(/home/texlive/2016/texmf-dist/tex/generic/xkeyval/xkvutils.tex
(/home/texlive/2016/texmf-dist/tex/generic/xkeyval/keyval.tex))))
(/home/texlive/2016/texmf-dist/tex/generic/ifxetex/ifxetex.sty)
(/home/texlive/2016/texmf-dist/tex/generic/oberdiek/ifluatex.sty)
(/home/texlive/2016/texmf-dist/tex/latex/tools/multicol.sty))
> \shellescape=\relax.
l.8 \show\shellescape
?
A workaround is to load babel and tracklang before imakeidx:
\documentclass[english]{article}
\usepackage{babel}
\usepackage{tracklang}
\usepackage{imakeidx}
\usepackage{glossaries}
\begin{document}
Foo.
\end{document}
Update: tracklang v1.3.2 (2016-10-11) now checks for \pdfshellescape before \shellescape and also checks if either of those primitives have been set to \relax. (Please allow a few days for the new version to appear in distributions.)Comments
2 comments.
Replying to Comment #57:
🔗Comment from Nicola Talbot 🦜
Date: 2016-10-17 11:15:00
Repying to: Denis Bitouzé 2016-10-17 00:31:08
Date: 2016-10-17 11:15:00
Repying to: Denis Bitouzé 2016-10-17 00:31:08
Not to worry. I worked it out :-)
Glad it's working now. Thank you for alerting me to the problem.
Replying to Comment #58:
Add Comment
Page permalink: https://www.dickimaw-books.com/bugtracker.php?key=115

Date: 2016-10-17 00:31:08
Sorry for the wrong order between babel and glossaries.
Everything goes smoothly now: thanks!