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?

14
  • perl xindy.pl looks odd. In which directory are you when calling this command? And why aren't you calling xindy.exe? Dec 24, 2018 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? Dec 24, 2018 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? Dec 24, 2018 at 19:49
  • @KJO that's from 2013 and it is on ubuntu. Krishna has a texlive 2018 on windows. Dec 24, 2018 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, 2018 at 21:51

1 Answer 1

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

2
  • still does not work for me Dec 30, 2018 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, 2018 at 3:34

You must log in to answer this question.

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