![连字符可以忽略重音符号吗?](https://linux22.com/image/287416/%E8%BF%9E%E5%AD%97%E7%AC%A6%E5%8F%AF%E4%BB%A5%E5%BF%BD%E7%95%A5%E9%87%8D%E9%9F%B3%E7%AC%A6%E5%8F%B7%E5%90%97%EF%BC%9F.png)
LuaLaTeX 消息格式:
\documentclass[11pt]{article}
\usepackage{polyglossia}
\setotherlanguage{russian}
\usepackage{tabu}
\usepackage[textwidth=6.5in,textheight=9in,nohead,headheight=39pt,headsep=12pt,
top=72pt]{geometry}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\begin{document}
\begin{tabu}{X|X}
Е́сли вы изу́чите ру́сский язы́к, вы полу́чите хоро́шую пабо́ту.
& If you master (will master) Russian, you will get a good job. \\
Е́сли вы изу́чите ру́сский язы́к, вы по\-лу́\-чите хо\-ро́\-шую пабо́ту.
& If you master (will master) Russian, you will get a good job. \\
\end{tabu}
\end{document}
请注意,我使用了 U+0301(“组合尖音符”)来为俄语添加重音符。(在为学习俄语而设计的英语文本中,显示重音符的位置是很常见的。)以下是生成的 PDF 中的俄语部分(表格的左半部分):
在表格的第一行,我得到了Underfull \hbox (badness 6332) in paragraph at lines 19--19
,大概是因为 LuaLaTeX 不知道如何对添加重音符号的单词进行连字符连接。如果我明确提示连字符连接,就像我在第二行所做的那样,它会被正确地连字符连接。
有什么方法可以告诉 LuaLaTeX/Polyglossia/whatever 在连字符时忽略添加的重音符号?
答案1
我不太了解多语现象,但如果我明确选择俄语,该词就会带连字符:
\documentclass[11pt]{article}
\usepackage{polyglossia}
\setotherlanguage{russian}
\usepackage{tabu}
\usepackage[textwidth=6.5in,textheight=9in,nohead,headheight=39pt,headsep=12pt,
top=72pt]{geometry}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\begin{document}
%
%\input{hyph-ru}
\begin{tabu}{X|X}
%\hyphenrules{russian}
\leavevmode\selectlanguage{russian}\righthyphenmin=3 \lefthyphenmin=2
Е́сли вы изу́чите ру́сский язы́к, вы полу́чите хоро́шую пабо́ту.
& If you master (will master) Russian, you will get a good job. \\
Е́сли вы изу́чите ру́сский язы́к, вы по\-лу́\-чите хо\-ро́\-шую пабо́ту.
& If you master (will master) Russian, you will get a good job. \\
\end{tabu}
\end{document}
答案2
基于David Carlisle 的解决方案和egreg 的评论我想到了一些似乎对我的 TeX 安装有用的东西:
\documentclass[11pt]{article}
\usepackage[main=english,russian]{babel}
\usepackage{tabu}
\usepackage[textwidth=6.5in,textheight=9in,nohead,headheight=39pt,headsep=12pt,
top=72pt]{geometry}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\begin{document}
\begin{tabu}{>{\hyphenrules{russian}}X|X}
Е́сли вы изу́чите ру́сский язы́к, вы полу́чите хоро́шую пабо́ту.
& discretionary discretionary discretionary discretionary
discretionary \\
Е́сли вы изу́чите ру́сский язы́к, вы по\-лу́\-чите хо\-ро́\-шую пабо́ту.
& discretionary discretionary discretionary discretionary
discretionary \\
\end{tabu}
\end{document}
输出现在已正确连字符:
我将英文文本改为可能需要连字符的单词,这样我就可以知道在测试过程中是否意外破坏了英文连字符。
我猜 Babel 现在可以在 LuaLaTeX 下工作了。我以为它不行,所以我用的是 Polyglossia。
我是多语言 LaTeX 文档的新手,所以我有点担心,看起来我必须手动告诉 LaTeX 文本的每一部分是什么语言,尽管这对人类来说很明显。我希望我可以同时加载英语和俄语连字规则,并让 LaTeX 根据周围的字符选择使用哪一种。手动将每个俄语短语标记为俄语会有点糟糕。