让 \righthypenmin 在计算字母时忽略重音符号

让 \righthypenmin 在计算字母时忽略重音符号

是否可以制作\lefthypenmin\righthypenmin忽略重音符号而不将其算作单独的字母?

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{russian}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\setmainfont[Ligatures=TeX]{PT Serif}
\newfontfamily\cyrillicfont[Ligatures=TeX]{PT Serif}

\begin{document}
\righthyphenmin=2
\parbox[t]{1pt}{\hspace{0pt}неистовое}\hspace{3cm}
\parbox[t]{1pt}{\hspace{0pt}неистовое́}
\end{document}

我的意思是这些单词应该以相同的方式连字符,但不是像这样:

添加重音符号时连字符不同

我为此使用了 luaLaTeX。XeLaTeX 给出了相同的结果。

或者也许有一个针对不太常见的情况的解决方案:不允许在单词末尾的一个重音字母前使用 TeX 连字符。

更新:

XeLaTeX 有一个不太常见的情况的解决方案:编辑hyph-ru.tex并添加以下行并运行fmtutil --all有助于:

8^^^^0301
8а^^^^0301.
8е^^^^0301.
8и^^^^0301.
8о^^^^0301.
8у^^^^0301.
8ы^^^^0301.
8э^^^^0301.
8ю^^^^0301.
8я^^^^0301.

答案1

在我看来,luatex 的文档在这一部分相当难以理解,所以我花了一段时间才意识到需要设置\savinghyphcodes=1才能更改 \hjcode。这似乎可行,但我不太明白,大多数情况下都是猜测:

\documentclass{article}
\usepackage{fontspec}
\savinghyphcodes=1
\usepackage{polyglossia}
\setdefaultlanguage{russian}

\setmainfont[Ligatures=TeX]{PT Serif}
\textwidth=1pt
\begin{document}

\righthyphenmin=2

blb неистовое

неистовое́

\hjcode`\^^^^0301=32 %32=zero length

неистовое́

\end{document}

在此处输入图片描述

相关内容