软件包的文档hyph-utf8
指出:
由于 Babel 的 hyphen.cfg 是以 XeLaTeX 格式构建的,因此无需加载 Babel 或 Polyglossia 即可使用连字模式。
xelatex
然而,在这个最小的例子上运行:
\documentclass{article}
\usepackage{lipsum}
\makeatletter
\language=\l@latin
\makeatother
\hyphenrules{latin}
\begin{document}
\lipsum
\end{document}
产生以下错误:
./test.tex:6: Undefined control sequence.
<argument> ...{\languagename }\languageshorthands
{none}\expandafter \ifx \c...
l.6 \hyphenrules{latin}
?
问题是什么?
答案1
按照文档说明,\hyphenrules
禁用语言简写(有些主题成群出现,这很奇怪:就在昨天,我与 Javier 讨论了连字符规则是否应该这样做,因为它会影响法语间距等问题),因此它仅适用于提供定义的包\languageshorthands
。您可以添加一个虚拟定义:
\documentclass{article}
\usepackage{lipsum}
\providecommand\languageshorthands[1]{}%
\hyphenrules{latin}
\begin{document}
\lipsum
\end{document}
但是您的示例中不需要 hyphenrules 命令。该\language
命令已经更改了连字模式,但我建议使用它,\bbl@patterns
因为它包含考虑字体编码的代码:
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\makeatletter
%\language=\l@english%
\bbl@patterns{english}
\makeatother
\showhyphens{testing}
\makeatletter
%\language=\l@ngerman%
\bbl@patterns{ngerman}
\makeatother
\showhyphens{testing}
\end{document}