0

I get a strange error upon running

perl.exe \path\to\xindy.pl -L english -C utf8 -I xindy -M "main" -t "main.alg" -o "main.acr" "main.acn"

or equivalently,

xindy.exe -L english -C utf8 -I xindy -M "main" -t "main.alg" -o "main.acr" "main.acn"

The console output showing the error message is as follows

Opening logfile "main.alg" (done)

Reading indexstyle...

Loading module

"C:\\Documents\\phd_thesis\\1htZ_vspxV"...

Error in line 1:

(require "lang/english/utf8-lang.xdy")

ERROR: Could not find file "lang/english/utf8-lang.xdy" !

Why am I getting this error, and how do I fix it?

Update (Temporary Workaround)

This looks like a xindy bug. The required .sty file was already present in the folder %TEXDIR%\texmf-dist\xindy\modules\lang\english\, but was not found (and therefore not loaded) by xindy. To get this to work, I had to do two thngs

  • copy the contents & structure of the lang\english tree into my project's root directory.
  • copy the tex.xdy file from %TEXDIR%\texmf-dist\xindy\modules\base\ also to my project's root directory.

Can a TeX expert here look into this and advise me on what is going on?

Minimal example to reproduce the issue (main.tex)

\documentclass[12pt,a4paper,oneside,openright]{book}
\usepackage[nomain,acronym,xindy]{glossaries-extra}

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


\begin{document}

\cleardoublepage
\printglossary[type=acronym,title={List of Acronyms}]\label{ch:glossary} % basic style

This is some random text which uses \glspl{adc}.

\end{document}

Now, run

pdflatex main.tex
makeglossties main    (fails)
pdflatex main.tex     (redundant here since makeglossaries has failed. But required to print glossaries in the PDF once step 2 works.)

Also, I can confirmed that my aforesaid workaround (copying the xindy language tree as well as tex.xdy to this folder) is valid for this minimal example.

Environment

  • Windows 10 64-bit (v1709, build 16299.846)
  • pdfTeX 3.14159265-2.6-1.40.19 (TeX Live 2018/W32TeX)
  • xindy release: 2.5.1
  • xindy.pl script version: 1.18
  • Strawberry perl v5.28.1 built for MSWin32-x64-multi-thread
  • Makeglossaries Version 4.41 (2018-07-23)

TeXLive portable setup

The library machines in our university all run Windows 10. Obviously, students do not have admin access to install software. To workaround this, and to have a reproducible working environment, I keep all my favourite utilities and other tools on a network-mounted Home drive, labelled H: provided by the uni to all students. Each day I find myself on a different physical machine, but this is not a problem since the network drive gets mounted automatically upon login. Therefore, I have set up a portable TeXlive whose environment variables are setup by running the following batch script at each login.

setx path "H:\username\texlive\2018\bin\win32;H:\username\perl-portable\perl\bin;"    
setx TEXDIR "H:\username\texlive\2018"
setx TEXMFLOCAL "H:\username\texlive\texmf-local"
setx TEXMFSYSVAR "H:\username\texlive\2018\texmf-var"
setx TEXMFSYSCONFIG "H:\username\texlive\2018\texmf-config"
setx TEXMFHOME "H:\username\texlive\texmf-local"
setx TEXMFDIST "H:\username\texlive\2018\texmf-dist"
setx TEXMFVAR "H:\username\texlive\2018\texmf-var"
setx TEXMFCONFIG "H:\username\texlive\2018\texmf-config"
setx TEXMFCACHE "H:\username\texlive\2018\texmf-var"
setx TEXLIVE_WINDOWS_TRY_EXTERNAL_PERL "1"

where username is my username using which I login to all university public computers.

Note:

One of the folks who commented below said that my minimal example worked fine for them and did not give any errors. So I wonder if the issue is related to this portable setup?

  • perl xindy.pl looks odd. In which directory are you when calling this command? And why aren't you calling xindy.exe? – Ulrike Fischer Dec 24 '18 at 19:43
  • @Ulrike that's exactly what makeglossaries calls behind the scenes. Instead of xindy.pl, it provides the full path to xindy.pl. Is there a way to instruct makeglossariez to directly use the exe when on Windows and switch appropriately when on Linux? – Krishna Dec 24 '18 at 19:47
  • Sorry but it is quite a difference if you do perl xindy or perl path/to/xindy. So what are you doing really? And did you check if the missing file is in ...\texmf-dist\xindy\modules\lang\english? – Ulrike Fischer Dec 24 '18 at 19:49
  • @KJO that's from 2013 and it is on ubuntu. Krishna has a texlive 2018 on windows. – Ulrike Fischer Dec 24 '18 at 21:49
  • @UlrikeFischer my bad I did not read question fully and see the windows reference I will delete comment as very misleading – user170109 Dec 24 '18 at 21:51
1

In order to run from the command line an additional search variable needs to be set (it is NOT recursive so in this case it needs several;locations)

Set XINDY_SEARCHPATH=H:\username\texlive\2018\texmf-dist\xindy\modules;H:\username\texlive\2018\texmf-dist\xindy\modules\base

or for portable use after TEXMFDIST is set

Set XINDY_SEARCHPATH=%TEXMFDIST%\xindy\modules;%TEXMFDIST%\xindy\modules\base

then the following should work as it did for me

pdfLaTeX main
makeglossaries main
pdfLaTeX main

  • still does not work for me – Krishna Dec 30 '18 at 23:05
  • I am using portable but my directories are different so to check yours At a command prompt enter where /r h:\ tex.xdy based on my experience you should get H:\username\texlive\2018\texmf-dist\xindy\modules\base hence my suggested setting for search path – user170109 Dec 31 '18 at 3:34

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.