MiKTeX и babel: требуется установка отсутствующего файла и бесполезного пакета

MiKTeX и babel: требуется установка отсутствующего файла и бесполезного пакета

После того, как я долгое время не обновлял свой MiKTeX 2.9, я сделал это несколько дней назад. У меня было

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

и теперь у меня есть

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

Что-то (плохое) произошло между этим: теперь, всякий раз, когда я использую пакет babelлюбой язык), MiKTeX сообщает мне, что bblopts.cfgчего-то не хватает, и требует установки пакета arabi, который на самом деле содержит этот файл.

Обратите внимание, что у меня даже нет арабских переносов в файле формата, и после игнорирования этого запроса файл tex компилируется без ошибок. Действительно, довольно странный факт заключается в том, что bblopts.cfgэтонеобязательный файл: он появляется только в этой строке babel.styкода:

\InputIfFileExists{bblopts.cfg}...

В любом случае... Чтобы выйти из тупика, поскольку пакет мне не нужен arabi, я просто создал пустой bblopts.cfgфайл.оченьСтранное поведение MiKTeX следующее:

  1. Если bblopts.cfgнаходится в tex-пути, например, C:\localtexmf\tex\generic\babel,

    • findtexmfвозвращает правильный путь C:\localtexmf\tex\generic\babel,
    • MiKTeX включает в себя bblopts.cfg, как показывает файл журнала

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

    • но этовсе ещеговорит, что чего-то bblopts.cfgне хватает и что мне нужно установить arabiпакет!

  2. Если bblopts.cfgнаходится в текущей папке,

    • findtexmfвозвращает правильный путь.\bblopts.cfg
    • MiKTeX включает в себя bblopts.cfg, как показывает файл журнала

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

    • инетпоявляются предупреждения или требования по установке пакета!

Есть у кого-нибудь подсказка? Это только у меня так или это баг MiKTeX?? Если хотите попробовать, убедитесь, что пакет не arabiустановлен, и добавьте babelего в свой tex-файл. Игрушечный пример может быть таким:

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

На всякий случай: моя ОС — Windows 7 SP1 Enterprise...

решение1

Из bblopts.cfgarabi находится в tex\latex. Вы помещаете свою версию в tex\generic. Теперь latex не ищет сначала локальное дерево texmf, а затем основное дерево, а следует своего рода зигзагообразному пути (см.https://tex.stackexchange.com/a/79983/2388).

Это означает, что при \InputIfFileExistsобработке miktex сначала находит файл bblopts.cfgот arabi и пытается загрузить его.

Вы можете избежать этого, поместив локальный файл, например, в localtexmf\tex\latex\babel.

Примечание: на мой взгляд, файл bblopts.cfgfrom arabi сегодня не нужен и его следует удалить или переместить в папку doc (где он находится в texlive).

решение2

Видимо, это ошибка MikTeX. В качестве обходного пути попробуйте

\usepackage[noconfigs,british]{babel} 

Опция noconfigsделает то, что следует из ее названия.

решение3

Я только что сам наткнулся на этот баг. Поискав bblopts.cfgв руководстве babel, я наткнулся на следующее объяснение:

Другим способом расширить список «известных» опций для babel было создание файла, bblopts.cfgв который можно добавлять объявления опций. Однако этот механизм устарел — если вам нужно альтернативное имя для языка, просто создайте новый .ldfфайл, загрузив фактический.

Похоже, что ошибка MikTeX заключается в том, что предполагается, что этот необязательный файл --- из устаревшего метода --- должен быть обязательно представлен. Пакет arabiдолжен использовать этот устаревший метод для интеграции в экосистему Babel.

Я удивлен, что MikTeX не исправил эту давнюю ошибку.

Связанный контент