[LyX/master] Properly close and reopen lyxdeleted macro at font change
Juergen Spitzmueller
spitz at lyx.org
Sun May 17 12:33:53 UTC 2020
commit 0328ecd0197b943733e00876a6a344dcb6db84d4
Author: Juergen Spitzmueller <spitz at lyx.org>
Date: Sun May 17 14:54:59 2020 +0200
Properly close and reopen lyxdeleted macro at font change
Fixes #11867, amends [28da0f4360a/lyxgit]
---
src/Paragraph.cpp | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index a6d61e6..bfae1fc 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -2563,6 +2563,10 @@ void Paragraph::latex(BufferParams const & bparams,
Font const current_font = getFont(bparams, i, outerfont);
Font const last_font = running_font;
+ bool const in_ct_deletion = (bparams.output_changes
+ && runningChange == change
+ && change.type == Change::DELETED
+ && !os.afterParbreak());
// Do we need to close the previous font?
if (open_font &&
@@ -2576,10 +2580,23 @@ void Paragraph::latex(BufferParams const & bparams,
alien_script.clear();
}
bool needPar = false;
+ if (in_ct_deletion) {
+ // We have to close and then reopen \lyxdeleted,
+ // as strikeout needs to be on lowest level.
+ os << '}';
+ column += 1;
+ }
column += running_font.latexWriteEndChanges(
os, bparams, runparams, basefont,
(i == body_pos-1) ? basefont : current_font,
needPar);
+ 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(Change::DELETED), rp);
+ }
running_font = basefont;
open_font = false;
}
@@ -2625,13 +2642,9 @@ void Paragraph::latex(BufferParams const & bparams,
// Do we need to change font?
if ((current_font != running_font ||
- current_font.language() != running_font.language()) &&
- i != body_pos - 1)
+ current_font.language() != running_font.language())
+ && i != body_pos - 1)
{
- bool const in_ct_deletion = (bparams.output_changes
- && runningChange == change
- && change.type == Change::DELETED
- && !os.afterParbreak());
if (in_ct_deletion) {
// We have to close and then reopen \lyxdeleted,
// as strikeout needs to be on lowest level.
More information about the lyx-cvs
mailing list