使用 algorithm2e 与多语种会产生不需要的强调文本

使用 algorithm2e 与多语种会产生不需要的强调文本

这是一个最小的工作示例:

\documentclass[a4paper]{article}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\newfontfamily{\cyrillicfonttt}{CMU Typewriter Text}
\usepackage{polyglossia}
% \setmainlanguage{ukrainian}
\usepackage{algorithm2e}

\begin{document}

\begin{algorithm}
    \SetKwData{Left}{left}
    \SetKwData{Right}{right}
    \SetKwFunction{Swap}{Swap}

    \For{$i \leftarrow 0$ \KwTo $n$}{
        \If{$\Left_i > 0$ {\bf and} $\Right_i > 0$}{
            \Swap{$\Left_i$, $\Right_i$}\;
        }
    }
\end{algorithm}

\end{document}

此代码产生以下输出:

期望的输出。

现在,如果我取消注释该\setmainlanguage{ukrainian}行,输出会略有变化:

输出带有不想要的强调。

如您所见,此处关键字toand和参数leftright被强调。这其实不是什么大问题,但仍然困扰着我,这里的斜体字体似乎不合适。俄语和保加利亚语也会出现同样的结果,例如使用西里尔字母的语言。是什么导致了这种情况?我将非常感谢任何建议。

相关内容