babel 3.42(及更高版本?):“nohyphenation”和使用“zerohyph.tex”的语言无法识别

babel 3.42(及更高版本?):“nohyphenation”和使用“zerohyph.tex”的语言无法识别

Babel 3.42 似乎表现出与虚拟语言nohyphenation和一些其他语言不一致的行为,例如farsi可以在宏中选择哪些语言,以\foreignlanguage避免在短文本中使用连字符。

它给出了以下警告:

软件包 babel 警告:未知语言“nohyphenation”。您拼错了其名称,它尚未安装,或者您在之前的运行中请求了它。请分别修复其名称、安装它或重新运行该文件。[...]

手册上说

...假设在 language.dat 中,‘language’ 无连字符是通过加载 zerohyph.tex 来定义的”

这确实是我的情况:nohyphenation在 中定义language.dat,并且其对应文件zerohyph.tex也在 TeXLive 路径中并由 报告kpsewhich

如果我将其替换nohyphenation为其他语言,例如dutch,则不会出现任何警告。我发现这两种语言之间的唯一区别是zerohyph.tex位于目录中generic\hyphen,而荷兰语位于目录中。(序言中generic\hyph-utf8\loadhyph没有直接调用包hyphen或。)hyph-utf8

如果我nohyphenation用 中未定义的东西替换language.datdoesntexist那么我会收到错误而不是警告:

包 babel 错误:您尚未定义语言 doestexist。

和所有依赖 的farsi语言都存在同样的问题。language.datzerohyph.tex

我必须为该babel包提供一些额外的选项以便它能nohyphenation被识别吗?

我在 Windows 10 上使用 TeXLive 2020。只需使用该main=british选项即可调用 Babel。

这是一个最小的工作示例:

\documentclass{article}

\usepackage[main=british]{babel}

\begin{document}

Some text.

\foreignlanguage{dutch}{some text not in Dutch.}

\foreignlanguage{nohyphenation}{some text not to be hyphenated.}

\foreignlanguage{farsi}{some text not in Farsi.}

\end{document}

谢谢你!

答案1

如果我稍微修改一下你的代码

\documentclass{article}

\usepackage[british]{babel}

\begin{document}

Some text.

\foreignlanguage{dutch}{some text not in Dutch.}

\foreignlanguage{nohyphenation}{some text not to be hyphenated.}

\begin{hyphenrules}{nohyphenation}some text not to be hyphenated.\end{hyphenrules}

\end{document}

并使用 TeX Live 2012 编译它,我没有收到任何警告。如果我尝试使用 TL 2013,我会收到警告

Package babel Warning: You haven't loaded the language dutch yet
(babel)                I'll proceed, but expect unexpected results.
(babel)                Reported on input line 9.


Package babel Warning: You haven't loaded the language nohyphenation yet
(babel)                I'll proceed, but expect unexpected results.
(babel)                Reported on input line 11.

请注意,第 13 行没有报告任何内容,这是(并且长期以来)正确的使用方式nohyphenation。使用当前的 TeX Live,警告是

Package babel Warning: Unknown language `nohyphenation'. Either you have
(babel)                misspelled its name, it has not been installed,
(babel)                or you requested it in a previous run. Fix its name,
(babel)                install it or just rerun the file, respectively. In
(babel)                some cases, you may need to remove the aux file.
(babel)                I'll proceed, but expect wrong results.
(babel)                Reported on input line 11.

因为现在babel-dutch.tex已经加载并且没有给出关于选项中未加载的语言的警告(这可能是需要考虑的事情)。

相关内容