commit e91c8b61ac0e1f933b8b8310da864130353c9023
Author: Udi Fogiel <[email protected]>
Date:   Sun Jul 5 21:12:55 2026 +0300

    remove insline forceLTR decorations with polyglossia+LuaTeX
    
    polyglossia now use unibidi-lua which handles these situations.
    display environments are still wraped with \begin{LTR}...\end{LTR}.
---
 src/Font.cpp      | 24 ++++++++++++++----------
 src/Paragraph.cpp | 18 +++++++++++-------
 2 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/src/Font.cpp b/src/Font.cpp
index a0c4820a05..73698dad79 100644
--- a/src/Font.cpp
+++ b/src/Font.cpp
@@ -428,9 +428,10 @@ int Font::latexWriteStartChanges(otexstream & os, 
BufferParams const & bparams,
        }
        */
        // If the current language is Hebrew, Arabic, or Farsi
-       // the numbers are written Left-to-Right. ArabTeX package
-       // and bidi (polyglossia with XeTeX) reorder the number automatically
-       // but the packages used for Hebrew and Farsi (Arabi) do not.
+       // the numbers are written Left-to-Right. Unicode engines and ArabTeX
+       // reorder numbers automatically, but the packages used for Hebrew
+       // and Farsi (Arabi) in classic (pdf)latex do not. As of polyglossia
+       // 2.10, luabidi handles this automatically as well.
        if (!bparams.useBidiPackage(runparams)
            && !runparams.pass_thru
            && bits_.number() == FONT_ON
@@ -438,8 +439,9 @@ int Font::latexWriteStartChanges(otexstream & os, 
BufferParams const & bparams,
            && (language()->lang() == "hebrew"
                || language()->lang() == "farsi"
                || language()->lang() == "arabic_arabi")) {
-               if (runparams.use_polyglossia) {
-                       // LuaTeX/luabidi
+               if (runparams.use_polyglossia
+                   && !LaTeXFeatures::isAvailableAtLeastFrom("polyglossia", 
2026, 4, 18)) {
+                       // LuaTeX/luabidi (polyglossia < 2.10)
                        // \LR needs extra grouping
                        // (possibly a LuaTeX bug)
                        os << "{\\LR{";
@@ -606,9 +608,10 @@ int Font::latexWriteEndChanges(otexstream & os, 
BufferParams const & bparams,
        }
 
        // If the current language is Hebrew, Arabic, or Farsi
-       // the numbers are written Left-to-Right. ArabTeX package
-       // and bidi (polyglossia with XeTeX) reorder the number automatically
-       // but the packages used for Hebrew and Farsi (Arabi) do not.
+       // the numbers are written Left-to-Right. Unicode engines and ArabTeX
+       // reorder numbers automatically, but the packages used for Hebrew
+       // and Farsi (Arabi) in classic (pdf)latex do not. As of polyglossia
+       // 2.10, luabidi handles this automatically as well.
        if (!bparams.useBidiPackage(runparams)
            && !runparams.pass_thru
            && bits_.number() == FONT_ON
@@ -616,8 +619,9 @@ int Font::latexWriteEndChanges(otexstream & os, 
BufferParams const & bparams,
            && (language()->lang() == "hebrew"
                || language()->lang() == "farsi"
                || language()->lang() == "arabic_arabi")) {
-               if (runparams.use_polyglossia) {
-                       // LuaTeX/luabidi
+               if (runparams.use_polyglossia
+                   && !LaTeXFeatures::isAvailableAtLeastFrom("polyglossia", 
2026, 4, 18)) {
+                       // LuaTeX/luabidi (polyglossia < 2.10)
                        // luabidi's \LR needs extra grouping
                        // (possibly a LuaTeX bug)
                        os << "}}";
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 044bdb3ea5..2f9ba6b95d 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -1109,16 +1109,20 @@ void Paragraph::Private::latexInset(BufferParams const 
& bparams,
                        if (disp_env) {
                                os << "\\begin{LTR}";
                                close_env = "LTR";
-                       } else {
-                               if (runparams.flavor == Flavor::LuaTeX) {
-                                       // luabidi's \LRE needs extra grouping
-                                       // (possibly a LuaTeX bug)
-                                       os << '{';
-                                       close_brace = 1;
-                               }
+                       } else if (bparams.useBidiPackage(runparams)) {
+                               // XeTeX/bidi: wrap inline insets
+                               os << "\\LRE{";
+                               close_brace = 1;
+                       } else if 
(!LaTeXFeatures::isAvailableAtLeastFrom("polyglossia", 2026, 4, 18)) {
+                               // LuaTeX/luabidi (polyglossia < 2.10)
+                               // \LRE needs extra grouping
+                               // (possibly a LuaTeX bug)
+                               os << '{';
+                               close_brace = 1;
                                os << "\\LRE{";
                                close_brace += 1;
                        }
+                       // luabidi (polyglossia >= 2.10): inline insets are not 
wrapped
                } else if (running_font.language()->lang() == "farsi"
                         || running_font.language()->lang() == "arabic_arabi") {
                        os << "\\textLR{" << termcmd;
-- 
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to