]> git.lyx.org Git - features.git/commitdiff
Put forceLTR (display) environments in LRE environment rather than command
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 10 Apr 2023 06:10:51 +0000 (08:10 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 10 Apr 2023 06:10:51 +0000 (08:10 +0200)
This fixes whitespace issues.

src/Paragraph.cpp

index c43421b3764c36cda14988eb442427156aba0f3f..5944aa63be6d2ca1cbcbe675436427a27658690a 100644 (file)
@@ -1090,7 +1090,8 @@ void Paragraph::Private::latexInset(BufferParams const & bparams,
                running_change = Change(Change::UNCHANGED);
        }
 
-       bool close = false;
+       bool close_brace = false;
+       string close_env;
        odocstream::pos_type const len = os.os().tellp();
 
        if (inset->forceLTR(runparams)
@@ -1101,16 +1102,25 @@ void Paragraph::Private::latexInset(BufferParams const & bparams,
            // ERT is an exception, it should be output with no
            // decorations at all
            && inset->lyxCode() != ERT_CODE) {
-               if (runparams.use_polyglossia)
+               if (runparams.use_polyglossia) {
                        // (lua)bidi
-                       os << "\\LRE{";
-               else if (running_font.language()->lang() == "farsi"
-                        || running_font.language()->lang() == "arabic_arabi")
+                       // Displayed environments go in an LTR environment
+                       if (inset->isEnvironment() && inset->getLayout().isDisplay()) {
+                               os << "\\begin{LTR}";
+                               close_env = "LTR";
+                       } else {
+                               os << "\\LRE{";
+                               close_brace = true;
+                       }
+               } else if (running_font.language()->lang() == "farsi"
+                        || running_font.language()->lang() == "arabic_arabi") {
                        os << "\\textLR{" << termcmd;
-               else
+                       close_brace = true;
+               } else {
                        // babel classic
                        os << "\\L{";
-               close = true;
+                       close_brace = true;
+               }
        }
 
        if (open_font && fontswitch_inset) {
@@ -1187,7 +1197,10 @@ void Paragraph::Private::latexInset(BufferParams const & bparams,
                throw;
        }
 
-       if (close)
+       if (!close_env.empty())
+               os << "\\end{" << close_env << "}";
+
+       if (close_brace)
                os << '}';
 
        if (os.texrow().rows() > previous_row_count) {