[Tex/LaTex] MiKTeX and babel: missing file and useless package installation required

babelmiktex

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…

Best Answer

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).

Related Question