[LyX/master] Amend 92f6e4806e9

Juergen Spitzmueller spitz at lyx.org
Mon Aug 17 10:46:45 UTC 2020


commit 4d1d07ea10e8a503f2d9f2b265bd9af5e8cfb15b
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Aug 17 13:11:46 2020 +0200

    Amend 92f6e4806e9
    
    This was too general
---
 src/Paragraph.cpp |  106 +++++++++++++++++++++++++++-------------------------
 1 files changed, 55 insertions(+), 51 deletions(-)

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index dcba46a..8e10eda 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -1036,7 +1036,7 @@ void Paragraph::Private::latexInset(BufferParams const & bparams,
 	if (open_font && fontswitch_inset) {
 		bool lang_closed = false;
 		// Close language if needed
-		if (closeLanguage) {
+		if (closeLanguage && !lang_switched_at_inset) {
 			// We need prev_font here as language changes directly at inset
 			// will only be started inside the inset.
 			Font const prev_font = (i > 0) ?
@@ -2686,59 +2686,63 @@ void Paragraph::latex(BufferParams const & bparams,
 		}
 
 		// Do we need to change font?
-		if (!fontswitch_inset &&
-		    (current_font != running_font ||
+		if ((current_font != running_font ||
 		     current_font.language() != running_font.language())
 		    && i != body_pos - 1)
 		{
-			if (in_ct_deletion) {
-				// We have to close and then reopen \lyxdeleted,
-				// as strikeout needs to be on lowest level.
-				bool needPar = false;
-				OutputParams rp = runparams;
-				column += running_font.latexWriteEndChanges(
-					os, bparams, rp, basefont,
-					basefont, needPar);
-				os << '}';
-				column += 1;
-			}
-			otexstringstream ots;
-			InsetText const * textinset = inInset().asInsetText();
-			bool const cprotect = textinset
-				? textinset->hasCProtectContent(runparams.moving_arg)
-				  && !textinset->text().isMainText()
-				: false;
-			column += current_font.latexWriteStartChanges(ots, bparams,
-								      runparams, basefont, last_font, false,
-								      cprotect);
-			// Check again for display math in ulem commands as a
-			// font change may also occur just before a math inset.
-			if (runparams.inDisplayMath && !deleted_display_math
-			    && runparams.inulemcmd) {
-				if (os.afterParbreak())
-					os << "\\noindent";
-				else
-					os << "\\\\\n";
-			}
-			running_font = current_font;
-			open_font = true;
-			docstring fontchange = ots.str();
-			os << fontchange;
-			// check whether the fontchange ends with a \\textcolor
-			// modifier and the text starts with a space. If so we
-			// need to add } in order to prevent \\textcolor from gobbling
-			// the space (bug 4473).
-			docstring const last_modifier = rsplit(fontchange, '\\');
-			if (prefixIs(last_modifier, from_ascii("textcolor")) && c == ' ')
-				os << from_ascii("{}");
-			else if (ots.terminateCommand())
-				os << termcmd;
-			if (in_ct_deletion) {
-				// We have to close and then reopen \lyxdeleted,
-				// as strikeout needs to be on lowest level.
-				OutputParams rp = runparams;
-				column += Changes::latexMarkChange(os, bparams,
-					Change(Change::UNCHANGED), change, rp);
+			if (!fontswitch_inset) {
+				if (in_ct_deletion) {
+					// We have to close and then reopen \lyxdeleted,
+					// as strikeout needs to be on lowest level.
+					bool needPar = false;
+					OutputParams rp = runparams;
+					column += running_font.latexWriteEndChanges(
+						os, bparams, rp, basefont,
+						basefont, needPar);
+					os << '}';
+					column += 1;
+				}
+				otexstringstream ots;
+				InsetText const * textinset = inInset().asInsetText();
+				bool const cprotect = textinset
+					? textinset->hasCProtectContent(runparams.moving_arg)
+					  && !textinset->text().isMainText()
+					: false;
+				column += current_font.latexWriteStartChanges(ots, bparams,
+									      runparams, basefont, last_font, false,
+									      cprotect);
+				// Check again for display math in ulem commands as a
+				// font change may also occur just before a math inset.
+				if (runparams.inDisplayMath && !deleted_display_math
+				    && runparams.inulemcmd) {
+					if (os.afterParbreak())
+						os << "\\noindent";
+					else
+						os << "\\\\\n";
+				}
+				running_font = current_font;
+				open_font = true;
+				docstring fontchange = ots.str();
+				os << fontchange;
+				// check whether the fontchange ends with a \\textcolor
+				// modifier and the text starts with a space. If so we
+				// need to add } in order to prevent \\textcolor from gobbling
+				// the space (bug 4473).
+				docstring const last_modifier = rsplit(fontchange, '\\');
+				if (prefixIs(last_modifier, from_ascii("textcolor")) && c == ' ')
+					os << from_ascii("{}");
+				else if (ots.terminateCommand())
+					os << termcmd;
+				if (in_ct_deletion) {
+					// We have to close and then reopen \lyxdeleted,
+					// as strikeout needs to be on lowest level.
+					OutputParams rp = runparams;
+					column += Changes::latexMarkChange(os, bparams,
+						Change(Change::UNCHANGED), change, rp);
+				}
+			} else {
+				running_font = current_font;
+				open_font = true;
 			}
 		}
 


More information about the lyx-cvs mailing list