[LyX/master] Put forceLTR (display) environments in LRE environment rather than command

Juergen Spitzmueller spitz at lyx.org
Mon Apr 10 05:06:25 UTC 2023


commit f058442be905b088ede79d984a2708b8b172ea85
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Apr 10 08:10:51 2023 +0200

    Put forceLTR (display) environments in LRE environment rather than command
    
    This fixes whitespace issues.
---
 src/Paragraph.cpp |   29 +++++++++++++++++++++--------
 1 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index c43421b..5944aa6 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -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) {


More information about the lyx-cvs mailing list