很久没有更新我的 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 有 bug??如果您想尝试,请确保未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
今天来自 arabi 是不必要的,应该将其删除或移动到 doc 文件夹(位于 texlive 中)。
答案2
显然这是 MikTeX 的一个错误。作为解决方法,请尝试
\usepackage[noconfigs,british]{babel}
该选项的noconfigs
作用正如其名称所示。
答案3
我刚刚自己遇到了这个错误。在 babel 手册中进行搜索后bblopts.cfg
,我找到了以下解释:
扩展 babel 的“已知”选项列表的另一种方法是创建
bblopts.cfg
可以添加选项声明的文件。但是,这种机制已被弃用 - 如果您想要一种语言的替代名称,只需创建一个.ldf
加载实际名称的新文件即可。
MikTeX 的错误似乎是假设这个可选文件 --- 来自一个弃用的方法 --- 必须绝对存在。该arabi
包必须利用这个弃用的方法才能融入 babel 生态系统。
我很惊讶 MikTeX 还没有修复这个长期存在的错误。