我一直在尝试使用旧的纯 LaTeX 引擎。我注意到,对于一个非常简单且完全没有语言要求的文件,旧的纯 LaTeX 引擎将显示错误,除非发行版中包含德语、科普特语、希腊语、乌克兰语和俄语连字模式的软件包。
为什么会这样?这些包连字模式有什么用处,以至于即使是非常简单的文件,LaTeX 也需要它?
我的最小文件:
\documentclass{article}
\begin{document}
Text.
\end{document}
如果有什么区别的话,我在 64 位 Windows 10 上使用最新的 MiKTeX 发行版(2020)。
答案1
LaTeX 只需要原始的美式英语连字符,但是(除了 luatex)使用的连字符模式的选择是内置于格式中的,不能根据文档进行更改。
language.dat
所使用的模式通过文件(最初来自babel
但作为所有语言包的基础)以格式配置。
因此,您应该能够将站点配置为具有更受限制的语言集,但language.dat
需要与已安装的模式匹配。如果它引用了您未安装的语言模式文件,则在构建格式时会出错。通常,miktex/texlive 将确保与已language.dat
安装的文件匹配,但如果您以意外的方式卸载,则可能会不同步,您应该安装该文件中引用的语言,或者编辑该文件以不引用未安装的语言。
答案2
问题在于 TeX 引擎tex
和pdftex
不xetex
支持在处理文档时按需加载连字模式。它们需要预加载格式中所有可能使用的连字模式。不幸的是,这是 Knuth 的次优决定。今天,没有内存/时间限制,也没有理由预加载格式中所有潜在的连字模式。但是提到的 TeX 引擎并不能解决这个问题。只有luatex
引擎解决了这个老问题,它能够在处理文档时按需加载连字模式。我建议:只使用 LuaTeX,从我的角度来看,所有以前的 TeX 引擎都只是出于历史原因才包含在 TeX 发行版中的。
这种错误的连字模式概念的后果tex
是:它们通常预生成的格式(例如 LaTeX)必须包含所有可能使用的连字模式。这意味着格式二进制文件是巨大的文件,它们包含许多从未使用过的连字模式。请注意,格式中包含的此类模式集(对于 LaTeX)在文件中配置pdftex
。首先,您必须编辑此配置文件,其次,您必须生成格式。xetex
language.dat
luatex
如果您使用TeX 引擎,这些问题就不存在。