# MiKTeX and babel: missing file and useless package installation required

After not updating my MiKTeX 2.9 for a very long time, I did it a few days ago. I had

pdfTeX 3.14159265-2.6-1.40.16, LaTeX2e <2014/05/01>, babel <3.8m>,

and now I have

pdfTeX 3.14159265-2.6-1.40.17, LaTeX2e <2016/03/31>, babel <3.9r>.

Something (bad) happened in between: now, whenever I use the babel package (with any language), MiKTeX tells me that bblopts.cfg is missing and requires the installation of the arabi package - which actually contains that file.

Note that I don't even have arabic hyphenation in the format file and, after ignoring that request, the tex file is compiled without errors. Indeed, the rather weird fact is that bblopts.cfg is an optional file: it only appears in this line of babel.sty code:

\InputIfFileExists{bblopts.cfg} ...

Anyway.... To overcome the impasse, since I don't need the arabi package, I simply created an empty bblopts.cfg file. The very weird behaviour of MiKTeX follows:

1. If bblopts.cfg is in the tex path, e.g., C:\localtexmf\tex\generic\babel,

• findtexmf returns the correct path C:\localtexmf\tex\generic\babel,
• MiKTeX includes bblopts.cfg, as the log file shows

* Local config file bblopts.cfg used
*
(C:\localtexmf\tex\generic\babel\bblopts.cfg).

• but it still says that bblopts.cfg is missing and that I have to install the arabi package!

2. If bblopts.cfg is in the current folder,

• findtexmf returns the correct path .\bblopts.cfg
• MiKTeX includes bblopts.cfg, as the log file shows

* Local config file bblopts.cfg used
*
(bblopts.cfg).

• and no warnings or package installation requirements appear!

Does anyone have a clue? Is it just me or is it a MiKTeX bug?? If you want to try, be sure not have the arabi package installed and add the babel package to your tex file. A toy example could be:

\documentclass{article}\usepackage[british]{babel}\begin{document}.\end{document}

Just in case it matters: my OS is Windows 7 SP1 Enterprise...

• I don't have the arabi package installed, and I don't have problems with babel. Did you try redoing the formats? – Bernard Jun 7 '16 at 17:17
• the bblopts.cfg from arabi is in tex/latex and so first in the search path. Try if it works if you put your file in localtexmf/tex/latex. – Ulrike Fischer Jun 7 '16 at 22:32
• Maybe I wasn't too clear in my question: I never installed the arabi package, so I don't have the original bblopts.cfg anywhere. What I don't understand is why MiKTeX says that an optional file is missing (by definition, \InputIfFileExists should do nothing if the file isn't there!), and why it insists in requesting a package that contains that file even if it finds and includes that file! – pav Jun 8 '16 at 21:21
• I have the same problem. Seems like a bug in the first place. – user87690 Jun 29 '16 at 13:07

The bblopts.cfg from arabi is in tex\latex. You put your version in tex\generic. Now latex doesn't search first the local texmf tree and then the main tree but follows a sort of zig-zag path (see https://tex.stackexchange.com/a/79983/2388).

This means that when the \InputIfFileExists is processed miktex finds first the bblopts.cfg from arabi and so tries to download it.

You can avoid this by putting your local file e.g. in localtexmf\tex\latex\babel.

Side remark: The bblopts.cfg from arabi is imho unnecessary today and should be removed or moved to the doc-folder (where it is in texlive).

• @UlrikeFisher, as far as I can deduce from the MiKTeX manual (no time to look at the source code!), it searches for files in a more linear way than kpath* does (indeed, it says that, inside the 'setting' gui, you "can move [the local files folder] before the installation directory, if you want to prioritize your own files"). – pav Jun 8 '16 at 20:38
• @pav miktex searches through the trees in the same way as kpathsea -- a lot things would break if the search pathes wouldn't be similar to the search pathes in texlive. Beside this: I tested the issue. – Ulrike Fischer Jun 8 '16 at 20:44
• @UlrikeFisher, so the MiKTeX manual is lying!! In any case, please let me undestand better: in my system I have texmf\tex\generic\babel and, if I installed the arabi package, I would have the bblopts.cgf in texmf\tex\latex\arabi. So, why does the fake bblopts.cgf in localtexmf\tex\latex\babel solve the problem (thanks, by the way!) even if this directory doesn't match with anything else in texmf? – pav Jun 8 '16 at 21:06
• No the manual is not lying. And what matters are the first two subfolders tex/latex compared to tex\generic . latex will first go through all the tex\latex and then move on to tex\generic. – Ulrike Fischer Jun 8 '16 at 21:19
• @UlrikeFisher, maybe I understood: 1. The manual's 'prioritize' means that the search sequence is localtexmf\tex\latex, texmf\tex\latex, localtexmf\tex\generic and so on, thus prioritizing local files wrt files inside the same subdir. 2. MiKTeX doesn't find bblopts.cfg where the package database says it should be; it tries to download it; I say no; it goes on searching; it finds and inputs the file I actually have; nothing wrong appears in the log file. Right? Still, I can't understand why the \InputIfFileExists of an optional file triggers the whole 'missing-install' thing... – pav Jun 8 '16 at 21:50

Apparently it's a MikTeX bug. As a workaround, try

\usepackage[noconfigs,british]{babel}


The option noconfigs does what its name suggests.

• Thanks for your answer, @JavierBezos, but I was looking for an explanation rather than a workaround. Besides, that way I should change every file I use (due to a bug that could disappear in a month) and I wouldn't be able to use a configuration file that, someday, could be useful... – pav Jun 8 '16 at 21:13