textenglish{} を使用した後、polyglossia を使用して \section{} でヘブライ語がレンダリングされない

textenglish{} を使用した後、polyglossia を使用して \section{} でヘブライ語がレンダリングされない

最近、メイン言語がヘブライ語で、2番目が英語の場合、Polyglossiaで\textenglish{}コマンドを使用すると、セクション内のヘブライ語が正しくレンダリングされないという問題が発生しました。

例えば、ここにラテックスがあります

% Compile using XeLaTeX
\documentclass[a4paper]{article}
\usepackage{polyglossia}

\setmainlanguage[calendar=gregorian]{hebrew}
\setotherlanguage{english}

\newfontfamily{\hebrewfont}[Script=Hebrew]{David CLM}
\newfontfamily{\hebrewfontsf}[Script=Hebrew]{Miriam CLM}
\newfontfamily{\hebrewfonttt}[Script=Hebrew]{Miriam Mono CLM}

\newcommand{\HEBipsum}{לורם איפסום דולור סיט אמט, קונסקטורר אדיפיסינג אלית גולר מונפרר סוברט לורם שבצק יהול, לכנוץ בעריר גק ליץ, ושבעגט ליבם סולגק. בראיט ולחת צורק מונחף, בגורמי מגמש. תרבנך וסתעד לכנו סתשם השמה - לתכי מורגם בורק? לתיג ישבעס.}

\begin{document}

\section{אחד 1}
\HEBipsum

\section{שתיים 2}
\HEBipsum
\textenglish{english inline}
\HEBipsum

\section{שלוש 3}
\HEBipsum

\end{document}

そしてこれが生成されたPDFです

ここに画像の説明を入力してください

3 番目のセクションでは、ヘブライ語が翻訳されず、数字も英語に戻っていることがわかります。

Xelatex を使用してコンパイルしましたが、Lualatex を使用しても同じ問題が発生します。

  • 修正はありますか?

答え1

この問題は、https://github.com/reutenauer/polyglossia/issues/603バージョン で修正されました1.65。overleaf は の古いバージョンを使用しているためpolyglossia、パッチを自分で「適用」することができます。

\documentclass[a4paper]{article}
\usepackage{polyglossia}

\setmainlanguage[calendar=gregorian]{hebrew}
\setotherlanguage{english}

\newfontfamily{\hebrewfont}[Script=Hebrew]{David CLM}
\newfontfamily{\hebrewfontsf}[Script=Hebrew]{Miriam CLM}
\newfontfamily{\hebrewfonttt}[Script=Hebrew]{Miriam Mono CLM}

\newcommand{\HEBipsum}{לורם איפסום דולור סיט אמט, קונסקטורר אדיפיסינג אלית גולר מונפרר סוברט לורם שבצק יהול, לכנוץ בעריר גק ליץ, ושבעגט ליבם סולגק. בראיט ולחת צורק מונחף, בגורמי מגמש. תרבנך וסתעד לכנו סתשם השמה - לתכי מורגם בורק? לתיג ישבעס.}

\ExplSyntaxOn
\makeatletter
\cs_set:Nn \__xpg_textlanguage:nnnn
  {
    \tl_if_blank:nTF {#3}
      {
        \msg_show:nnn { polyglossia } { languagenotloaded } {#2}
      }{
        % Store embedding language name
        \global\let\xpg@save@languagename\languagename
        \group_begin:
        \bool_set_true:N \__xpg_inline_lang
        \xpg@otherlanguage[#1]{#3}
        \csuse{date#3}
        % This is a hook for external packages which want to access variants
        % via babelname (such as biblatex)
        \cs_if_exist_use:c{date@bbl@\babelname}
        \polyglossia@lang@settextdirection:nn{#3}{#4}
        \group_end:
        % Reset the language's/script's font families if the embedding script is latin
        \str_if_eq:eeT{\prop_item:Ne{\polyglossia@langsetup}{\xpg@save@languagename/lcscript}}{latin}
        {\resetfontlatin}
        % In case a \<lang>font is defined, re-activate that
        \xpg@set@normalfont{\xpg@save@languagename}
    }
  }
\cs_generate_variant:Nn \__xpg_textlanguage:nnnn {nnen}
\makeatother
\ExplSyntaxOff

\begin{document}

\section{אחד 1}
\HEBipsum

\section{שתיים 2}
\HEBipsum
\textenglish{english inline}
\HEBipsum

\section{שלוש 3}
\HEBipsum

\end{document}

関連情報