为什么 babel 要加载所有这些语言?

为什么 babel 要加载所有这些语言?

以下文件:

\documentclass{article}
\usepackage[english]{babel}
\begin{document}
Something
\end{document}

生成以下.log文件:

Running `LaTeX' on `mwe' with ``pdflatex  -interaction=nonstopmode "\input" mwe.tex''
This is pdfTeX, Version 3.1415926-2.3-1.40.12 (TeX Live 2011)
 restricted \write18 enabled.
entering extended mode
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ancientgreek, ibycus, basque, catalan, danish, dutch, ukenglish, usenglishmax, french, galician, monogreek, greek, italian, latin, spanish, loaded.
(./mwe.tex (/usr/local/texlive/2011/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2011/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/babel.sty
(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/english.ldf
(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/babel.def))) (./mwe.aux)
[1{/home/seamus/.texlive2011/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./mwe.aux) )</usr/local/texlive/2011/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
Output written on mwe.pdf (1 page, 12356 bytes).
Transcript written on mwe.log.

LaTeX finished at Thu Jan 19 13:00:40

注意 babel.sty已加载(大约第 9 行)babel 已加载了以下模式,其中包括ancientgreek,ibycus,basque,catalan……看起来,babel 甚至在读取文档类之前就已加载。请注意,注释掉 babel 实际上不会以任何方式改变行为。

发生了什么事?我该如何停止babel加载所有这些不必要的模式?

答案1

这里的信息可能有点误导。实际上,你正在使用一种格式,其中包含这些连字模式内置。通常,这没什么可担心的。

要理解为什么要加载这么多的连字模式,需要了解一些背景知识。TeX 的设计使得只有在创建格式时才能加载连字模式。pdfTeX 和 XeTeX 也是如此(但 LuaTeX 除外:见下文)。过去,格式仅使用用户所需的连字模式构建。然而,这使得使用“新”语言变得很尴尬,因为您需要启用模式然后重建格式。随着计算机能力和内存大小的增加,现在可以加载所有连字模式,从而拥有“通用”连字格式。

至于删除模式,这取决于所使用的 TeX 系统。对于 MiKTeX,GUI 中有一系列用于构建格式的勾选框,它们会改变这一点。TeX Live 恐怕我不太确定。(MiKTeX 最近才开始加载所有模式,所以我知道设置在哪里,因为必须使能够更多图案!)

有了 LuaTeX,生活就不同了,因为它可以动态加载连字模式,而且确实更好不是以某种格式加载所有这些。因此,只内置了最小集(美国英语、无连字符和“虚拟”)。

相关内容