使用多语言的英语/希伯来语混合文档中的目录故障

使用多语言的英语/希伯来语混合文档中的目录故障

我正在使用 xelatex 和 polyglossia 排版一份英语/希伯来语混合文档,其中大部分文本都是英文。文档正文没有问题。目录是个问题。我遇到一个问题,目录中有些条目从左到右,有些条目从右到左。

所有章节标题都包含英文文本,这些文本在目录和文档中都应从左到右排列。但是,有些条目在目录中包含从右到左的条目。

问题似乎是由使用“希伯来语”环境造成的。如果我使用它,那么在目录中创建条目的下一个分段命令会产生这样的效果:章节标题本身是好的(文本从左到右),但目录是右到右。

MWE 和生成的目录如下所示。主体中的实际节标题是正确的。

经过试验,我发现如果在真实环境之后有一个空的“希伯来语”环境,那么效果就会消失(如下面的 MWE 所示)。但这并不是一直有效,所以这不是一个解决办法。

任何帮助都将受到感激。

\documentclass{article}


\usepackage{polyglossia}

\setdefaultlanguage{english}
\setotherlanguage[numerals=hebrew]{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Hadasim CLM}




\begin{document}

\tableofcontents

\newpage
\section{Chapter 1}

blah blah

\section{Chapter 2}

blah blah


\begin{hebrew}
 שֶׁהֶחֱיָנוּ וְקִיְּמָנוּ וְהִגִּיעָנוּ לַזְּמָן הַזֶּה.
\end{hebrew}

\begin{hebrew}
% deliberately empty
\end{hebrew}
\section{Other chapter}

\begin{hebrew}
 שֶׁהֶחֱיָנוּ וְקִיְּמָנוּ וְהִגִּיעָנוּ לַזְּמָן הַזֶּה.
\end{hebrew}

\section{And the last chapter}

Blah Blah Blah

\end{document}

显示 LTR 和 RTL 条目的目录

答案1

似乎是 的一个错误polyglossia。以下是一个可能的解决方案:

\documentclass{article}


\usepackage{polyglossia}

\setdefaultlanguage{english}
\setotherlanguage[numerals=hebrew]{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Hadasim CLM}

\makeatletter
\ExplSyntaxOn
\renewenvironment{otherlanguage}[2][]
{%
    % Get real current options (incl. defaults)
    \clist_clear_new:N \l_xpg_current_options
    \prop_map_inline:cn {xpg@current@options@#2}
    {
        \clist_put_right:Nn \l_xpg_current_options {##1=##2}
    }
    % Store current options and language on stack
    \polyglossia@stack@language:nn{\clist_use:Nn \l_xpg_current_options {,}}{#2}%
    \selectlanguage[#1]{#2}%
}
{%
    % restore previous language in aux file and remove closed one from stack
    \beginL\polyglossia@unstack@language:n{xpg@set@language@only@aux}\aftergroup\endL
}
\ExplSyntaxOff
\makeatother


\begin{document}
    
    \tableofcontents
    
    \newpage
    \section{Chapter 1}
    
    blah blah
    
    \section{Chapter 2}
    
    blah blah
    
    
    \begin{hebrew}
        שֶׁהֶחֱיָנוּ וְקִיְּמָנוּ וְהִגִּיעָנוּ לַזְּמָן הַזֶּה.
    \end{hebrew}
    
    \begin{hebrew}
        % deliberately empty
    \end{hebrew}
    \section{Other chapter}
    
    \begin{hebrew}
        שֶׁהֶחֱיָנוּ וְקִיְּמָנוּ וְהִגִּיעָנוּ לַזְּמָן הַזֶּה.
    \end{hebrew}
    
    \section{And the last chapter}
    
    Blah Blah Blah
    
\end{document}

相关内容