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 有 bug??如果您想尝试,请确保未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.cfg今天来自 arabi 是不必要的,应该将其删除或移动到 doc 文件夹(位于 texlive 中)。

答案2

显然这是 MikTeX 的一个错误。作为解决方法,请尝试

\usepackage[noconfigs,british]{babel} 

该选项的noconfigs作用正如其名称所示。

答案3

我刚刚自己遇到了这个错误。在 babel 手册中进行搜索后bblopts.cfg,我找到了以下解释:

扩展 babel 的“已知”选项列表的另一种方法是创建bblopts.cfg可以添加选项声明的文件。但是,这种机制已被弃用 - 如果您想要一种语言的替代名称,只需创建一个.ldf加载实际名称的新文件即可。

MikTeX 的错误似乎是假设这个可选文件 --- 来自一个弃用的方法 --- 必须绝对存在。该arabi包必须利用这个弃用的方法才能融入 babel 生态系统。

我很惊讶 MikTeX 还没有修复这个长期存在的错误。

相关内容