![MiKTeX и babel: требуется установка отсутствующего файла и бесполезного пакета](https://rvso.com/image/335478/MiKTeX%20%D0%B8%20babel%3A%20%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82%D1%81%D1%8F%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%BE%D1%82%D1%81%D1%83%D1%82%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D0%B8%20%D0%B1%D0%B5%D1%81%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0.png)
После того, как я долгое время не обновлял свой 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 следующее:
Если
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
пакет!
Если
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.cfg
arabi находится в tex\latex
. Вы помещаете свою версию в tex\generic
. Теперь latex не ищет сначала локальное дерево texmf, а затем основное дерево, а следует своего рода зигзагообразному пути (см.https://tex.stackexchange.com/a/79983/2388).
Это означает, что при \InputIfFileExists
обработке miktex сначала находит файл bblopts.cfg
от arabi и пытается загрузить его.
Вы можете избежать этого, поместив локальный файл, например, в localtexmf\tex\latex\babel
.
Примечание: на мой взгляд, файл bblopts.cfg
from arabi сегодня не нужен и его следует удалить или переместить в папку doc (где он находится в texlive).
решение2
Видимо, это ошибка MikTeX. В качестве обходного пути попробуйте
\usepackage[noconfigs,british]{babel}
Опция noconfigs
делает то, что следует из ее названия.
решение3
Я только что сам наткнулся на этот баг. Поискав bblopts.cfg
в руководстве babel, я наткнулся на следующее объяснение:
Другим способом расширить список «известных» опций для babel было создание файла,
bblopts.cfg
в который можно добавлять объявления опций. Однако этот механизм устарел — если вам нужно альтернативное имя для языка, просто создайте новый.ldf
файл, загрузив фактический.
Похоже, что ошибка MikTeX заключается в том, что предполагается, что этот необязательный файл --- из устаревшего метода --- должен быть обязательно представлен. Пакет arabi
должен использовать этот устаревший метод для интеграции в экосистему Babel.
Я удивлен, что MikTeX не исправил эту давнюю ошибку.