commit 4d1d07ea10e8a503f2d9f2b265bd9af5e8cfb15b
Author: Juergen Spitzmueller <[email protected]>
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;
                        }
                }
 
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to