![为什么我的文档中会自动加载 babel?](https://linux22.com/image/315238/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%E6%96%87%E6%A1%A3%E4%B8%AD%E4%BC%9A%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD%20babel%EF%BC%9F.png)
我目前正在用 LaTeX 写论文,使用 scrreprt 类和 xetex 来获得更好的语言支持。使用 xetex,我应该使用 polyglossia 而不是 babel。我没有手动加载 babel 包。但是,xelatex 输出显示已加载 babel。为什么会这样?
% mwe.tex
\documentclass[
draft=true,
paper=portrait,
pagesize=auto,
fontsize=12pt,
version=last,
]{scrreprt}
\usepackage{polyglossia}
\begin{document}
Hi.
\end{document}
在 xelatex mwe.tex 上,日志文件显示(片段):
This is XeTeX, Version 3.14159265-2.6-0.99991 (TeX Live 2014/Arch Linux) (preloaded format=xelatex 2015.7.6) 15 JUL 2015 11:31
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**mwe.pdf
(./mwe.tex
LaTeX2e <2014/05/01>
Babel <3.9l> and hyphenation patterns for 79 languages loaded.
(/usr/share/texmf-dist/tex/latex/koma-script/scrreprt.cls
Document Class: scrreprt 2015/02/07 v3.16 KOMA-Script document class (report)
答案1
线路
Babel <3.9l> and hyphenation patterns for 79 languages loaded.
实际上并不是指babel
整个 LaTeX 包被加载。相反,它是指babel
提供在连字符模式之间切换机制的功能子集。对于 pdfTeX 和 XeTeX,此信息必须内置到格式中,因此无法在运行时加载。babel
因此,代码包含足够的通用设置,以允许纯文本和 LaTeX 格式包含连字符模式并提供在它们之间切换的机制。(LuaTeX 略有不同,因为模式不存储在格式中,但包含相同的通用切换机制。)
babel
这些选择连字符的通用机制由和所使用polyglossia
,并且正如我所说,既适用于普通 TeX,也适用于 LaTeX。(注意:Knuth 的 TeX 不加载此机制:我在这里所说的“普通”是指 pdfTeX、XeTeX 和 LuaTeX 引擎的类似普通的格式。)