连字符可以忽略重音符号吗?

连字符可以忽略重音符号吗?

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 根据周围的字符选择使用哪一种。手动将每个俄语短语标记为俄语会有点糟糕。

相关内容