Bug Tracker
I’m currently working on a major new version of the datatool package. This may take a while. Please be patient. (Experimental version available for testing.)
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!