![多语种中不再定义连字符](https://linux22.com/image/416640/%E5%A4%9A%E8%AF%AD%E7%A7%8D%E4%B8%AD%E4%B8%8D%E5%86%8D%E5%AE%9A%E4%B9%89%E8%BF%9E%E5%AD%97%E7%AC%A6.png)
我用过hyphenrules
在我使用的语言中添加自定义连字符。我曾经问过如何做到这一点,接受的答案(下面的 MWE)不再编译,但给出错误消息Environment hyphenrules undefined
。
所以问题是,polyglossia
现在应该如何添加特定于语言的自定义连字规则?我正在使用 1.49 版polyglossia
。
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{nynorsk}
\begin{hyphenrules}{nynorsk}
\hyphenation{fram-halds-skulen}
\end{hyphenrules}
\begin{document}
\parbox{0pt}{\hspace{0pt}framhaldsskulen}
\end{document}
编辑
下列的Ulrike 的评论,我尝试遵循多语文献,其中说我们可以使用该命令\xpghyphenation
。但是,这样做只会给我错误消息Undefined control sequence. l.6 \xpghyphenation
。
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{nynorsk}
\xpghyphenation{nynorsk}{fram-halds-skulen}
\begin{document}
\parbox{0pt}{\hspace{0pt}framhaldsskulen}
\end{document}
答案1
在较新版本的 中,该环境hyphenrules
已弃用polyglossia
。要添加特定于语言的连字符,请使用\pghyphenation[(options)]{(language)}{(hyphenations)}
。当前文档(v. 1.49)在第 5.1 节中错误地指出该命令是\xpghyphenation
。这是一个失误尚未\pghyphenation
得到纠正。
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[variant = nynorsk]{norwegian}
\pghyphenation[variant = nynorsk]{norwegian}{fram-halds-skulen}
\begin{document}
\parbox{0pt}{\hspace{0pt}framhaldsskulen}
\end{document}
答案2
从 TeX 原始角度来看,仅当原始寄存器设置为所选语言时,才需要使用\heyphenation
原始。因此,您可以这样写:\language
{\language=lang.number \hyphenation{fram-halds-skulen}}
一个小问题是,如果你使用 LaTeX,那么你不知道 lang.number,因为它是由宏自动生成的。你可以\language
使用 LaTeX 的命令设置寄存器:
\selectlanguage{nynorsk}
此命令\language=lang.number
在内部执行。因此,您可以\hyphenation
通过以下方式使用原语:
{\selectlanguage{nynorsk} \hyphenation{fram-halds-skulen}}
当然,您可以为所有声明的语言提供连字符例外:
{\selectlanguage{nynorsk} \hyphenation{fram-halds-skulen}}
{\selectlanguage{czech} \hyphenation{výjme-čné dě-lení}}
...
为了简化:如果您使用 csplain 或 OpTeX 格式,那么您就知道您的语言的编号,请参阅hyphen.lan
文件。Unicode 中的挪威尼诺斯克语有 136 种语言。因此,您只能在原始级别执行任务:
{\language=136 \hyphenation{fram-halds-skulen}}
答案3
这个hyphenrules
技巧是黑客的。自 1.45 版以来,polyglossia
有一种特定的方法来定义特定于语言的连字异常,即
\pghyphenation[<options>]{<language>}{<exception list>}
是<options>
为特定语言设置变体的。<exception list>
的语法与 的参数相同\hyphenation
,因此在选定的断点处用空格和连字符分隔单词。
从 1.50a 版开始,关于连字例外的文档是不准确的,因为它声称\hyphenation
对所有语言都适用,但事实并非如此:例外仅适用于当前的在序言中,该语言仍然是语言 0(美式英语)。
因此\hyphenation
实际上永远不应该使用(除非主要语言是美式英语)。
该hyphenrules
环境尚未被弃用,但它只能在文档主体中使用。另一方面,从 1.50a 版开始,该hyphenrules
技巧仍然有效。这并不意味着应该使用它,但使用它的旧文档将有效。
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[variant=nynorsk]{norwegian}
\pghyphenation[variant=nynorsk]{norwegian}{fram-halds-skulen}
\begin{document}
\parbox{0pt}{\hspace{0pt}framhaldsskulen}
\end{document}