When I use xindy for as my makeglossaries backend, I get the following warning:

Cannot locate xindy module for language british in codepage utf8

However, there is no issue with the typesetting of the glossaries themselves (to my eyes everything look ok).

I saw a similar question for the Persian language here, but I do not need support for any exotic languages other than UK English. I am using latexmk which calls makeglossaries through a custom subdependency-style function.

What does this warning mean, and how can I get rid of it? I am using luatex

Here is the MWE (main.tex) that produces this warning (please also see the latexmkrc files used to run this) :

\RequirePackage[l2tabu, orthodox]{nag}

\usepackage[backend=biber, style=numeric-comp, sorting=none, citestyle=numeric-comp, maxbibnames=50, url=true, doi=true, eprint=false,backref=true,backrefstyle=three]{biblatex} % seems to have strong dependence on csquotes?
\usepackage[luatex,paper=a4paper,hmarginratio=1:1, vmarginratio=1:1, scale=0.75]{geometry}
\usepackage{graphicx} % important to load before fontspec
\usepackage{setspace} % Define line spacing
\usepackage{fontspec} % load after graphicx
\setmainfont[Numbers={Proportional},Ligatures={TeX, Common%, Historic, Contextual, Rare, Discretionary
}]{Libertinus Serif}
\setsansfont{Libertinus Sans}
\setmonofont[Scale=MatchLowercase]{Latin Modern Mono}
\usepackage{ragged2e} %  "The package should be loaded after the body font and size have been established  for example, after font packages have been loaded

\setmathfont[bold-style=ISO]{Libertinus Math} % https://github.com/libertinus-fonts/libertinus/issues/20
\setmathfont[range={\mathunder,\triangleq,\underbrace},Scale=MatchUppercase]{Latin Modern Math}
\usepackage[british]{babel} % with british, we get OUP hyphenation material for free
\usepackage[final,activate={true,nocompatibility},factor=1100,stretch=10,shrink=10,babel=true]{microtype} % if using option babel=true, babel must be loaded before microtype
\usepackage[british]{selnolig} % if using babel, this package should go after loading babel
\usepackage{csquotes} % The fvextra package is loaded by minted, so you should load minted before csquotes

\usepackage[nomain,acronym,automake,xindy]{glossaries-extra}% should be loaded after hyperref % consider 'symbols' package option

\setabbreviationstyle[acronym]{long-short} % applicable only for glossaries-extra.sty
\newacronym{adc}{ADC}{Analog to Digital Converter}

\printglossary[type=acronym,title={List of Acronyms}]\label{ch:glossary} % basic style
This is some random text which uses \glspl{adc}.

This is my latexmkrc

push @generated_exts, "acn";
push @generated_exts, "acr";
push @generated_exts, "alg";
push @generated_exts, "auxlock";
push @generated_exts, "brf";
push @generated_exts, "cb";
push @generated_exts, "cb2";
push @generated_exts, "glg-abr";
push @generated_exts, "glo-abr";
push @generated_exts, "gls-abr";
push @generated_exts, "ist";
push @generated_exts, "nav";
push @generated_exts, "nlg";
push @generated_exts, "nlo";
push @generated_exts, "nls";
push @generated_exts, "nmo";
push @generated_exts, "run.xml";
push @generated_exts, "slg";
push @generated_exts, "snm";
push @generated_exts, "spl";
push @generated_exts, "syg";
push @generated_exts, "syi";
push @generated_exts, "synctex.gz";
push @generated_exts, "tar.gz";
push @generated_exts, "tdo";
push @generated_exts, "thm";
push @generated_exts, "loa";
push @generated_exts, "mypyg";
push @generated_exts, "mtc*";
push @generated_exts, "ptc";
push @generated_exts, "synctex*";
push @generated_exts, 'glo', 'gls', 'glg';
push @generated_exts, 'acn', 'acr', 'alg';

$pdflatex = 'lualatex %O %S --interaction=batchmode -halt-on-error --shell-escape --bibtex --recorder';
$pdf_mode = 4;
$postscript_mode = $dvi_mode = 0;
$clean_ext .= ' %R.ist %R.xdy';

@cus_dep_list = (@cus_dep_list, "glo-abr gls-abr 0 makenomenclature");
sub makenomenclature {
   system("makeindex $_[0].glo-abr -s nomencl.ist -o $_[0].gls-abr"); }

@cus_dep_list = (@cus_dep_list, "syi syg 0 makegls");
sub makegls {
   system("makeindex $_[0].syg -s nomencl.ist -o $_[0].syi"); }

add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
add_cus_dep('acn', 'acr', 0, 'run_makeglossaries');

sub run_makeglossaries {
  if ( $silent ) {
    system "makeglossaries -q '$_[0]'";
  else {
    system "makeglossaries '$_[0]'";

sub asy {return system("asy -o \"$_[0]\" \"$_[0]\"");}

push @file_not_found, '^Package .* No file `([^\\\']*)\\\'';

  • Please help us help you and add a minimal working example (MWE) that illustrates your problem. Reproducing the problem and finding out what the issue is will be much easier when we see compilable code, starting with \documentclass{...} and ending with \end{document}. – albert Aug 25 '18 at 12:22
  • makeglossaries should map british to english. What version are you using? (Check the .log file for glossaries.sty version and run makeglossaries --version for the makeglossaries version.) – Nicola Talbot Aug 25 '18 at 12:35
  • @NicolaTalbot I am using makeglossaries Version 4.41 (2018-07-23), glossaries-extra 2018/08/18 v1.36 (NLCT), and glossaries 2018/07/23 v4.41 (NLCT) installed with TL2018 base and regularly updated using tlmgr. Is this a bug in the package(s)? – Krishna Aug 25 '18 at 12:41
  • @Krishna It works fine for the following: \documentclass{article} \usepackage[british]{babel} \usepackage[xindy]{glossaries} \makeglossaries \newglossaryentry{sample}{name={sample},description={}} \begin{document} \gls{sample} \printglossary \end{document} (and also with glossaries-extra) so you need to provide a MWE that produces your warning. – Nicola Talbot Aug 25 '18 at 12:47
  • @NicolaTalbot Ah. Indeed. It seems to work with your MWE. I am maybe looking at a package conflict or something. Shall debug a bit more before posting back. – Krishna Aug 25 '18 at 13:02

You are using the automake package option, which means that the glossaries package will try to run xindy using TeX's shell escape. This will fail in restricted mode, since xindy isn't on the restricted list, but your latexmk code indicates that you are running LuaLaTeX with --shell-escape, which switches to the unrestricted mode and allows xindy to be run from TeX.

The automake option doesn't have the full features of makeglossaries and doesn't provide the babel dialect to xindy language mappings, so it runs xindy with -L british, which isn't recognised. Your latexmk dependencies then run makeglossaries which also calls xindy, but this time with -L english, so the correct files are then generated.

So the warning most likely comes from the shell escape call to xindy not from the makeglossaries call to xindy. The simplest solution is to remove the automake option and leave the xindy call to makeglossaries. If you really want to use automake instead of makeglossaries, then you need to specify the correct xindy language name:


(Likewise for glossaries-extra.) Note that running TeX in the unrestricted mode is a security risk, so if you don't absolutely need it, it's better to remove --shell-escape and automake and just run makeglossaries from outside of TeX.

Unrelated: your latexmk seems to be mixing glossaries with nomencl. The nomencl.ist file is for use with the nomencl package, but the nomencl package uses .nlo and .nls as the file extensions. The glossaries-extra package uses .glo-abr and .gls-abr (for abbreviations).


xindy does not recognize british as a language.

$ texindy -L british -C utf8 testtemp.idx
Cannot locate xindy module for language british in codepage utf8.

$ texindy -L english -C utf8 testtemp.idx
Opening logfile "/dev/null" (done)
Reading indexstyle...
[cut lines]
Finished processing index.

Writing markup... [10%] [20%] [30%] [40%] [50%] [60%] [70%] [80%] [90%] [100%]
Markup written into file "./testtemp.ind".

With test file


Comments on Foo\index{Foo}

and having done one pdflatex run.

I don't know how makeglossaries ends up (perhaps!) using -L british here.

  • Thank you. Yes. I also think the same. Nicola seems to think that british should map to english . Maybe this is a bug in the package? – Krishna Aug 25 '18 at 12:43
  • Can you add the Latexmk sub-functions you are using in latexmkrc for running makeglossaries? @NicolaTalbot is author of makeglossaries so she will much better than me comment on this... – user4686 Aug 25 '18 at 12:46
  • Yes, I shall do that. Hope you don't mind if I steal your MWE and modify my question to add a complete set of information? – Krishna Aug 25 '18 at 12:48
  • go ahead, my answer will get superseded certainly by others in future – user4686 Aug 25 '18 at 12:49

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.