From 7f58601c0057d4450f567cec4e6f7e057cd3749f Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Thu, 15 Aug 2019 15:15:59 +0200 Subject: [PATCH] Fix greyedout note in RTL (#8647) More complicated than I wished for, but color handling in RTL is particularly tricky. The three versions are needed due to the differences between [pdf]latex, xetex, luatex/luabidi and luatex/babel. (cherry picked from commit 4e74dd0d4258177133e5a374264bbc0cec7f9dbb) --- src/LaTeXFeatures.cpp | 49 ++++++++++++++++++++++++++++++++++++++-- src/insets/InsetNote.cpp | 2 ++ status.23x | 2 ++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index bf9cc28072..268910ae5b 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -204,6 +204,39 @@ static docstring const lyxgreyedout_def = from_ascii( " {\\textcolor{note_fontcolor}\\bgroup\\ignorespaces}\n" " {\\ignorespacesafterend\\egroup}\n"); +static docstring const lyxgreyedout_rtl_def = from_ascii( + "%% The greyedout annotation environment (with RTL support)\n" + "\\NewEnviron{lyxgreyedout}{%\n" + "\\if@rl%\n" + "\\everypar{\\textcolor{note_fontcolor}\\beginL\\ignorespaces}%\n" + "\\BODY\\everypar{\\ignorespacesafterend\\endL}\n" + "\\else%\n" + "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n" + "\\BODY\\ignorespacesafterend\\egroup\n" + "\\fi}\n"); + +static docstring const lyxgreyedout_luartl_def = from_ascii( + "%% The greyedout annotation environment (with RTL support)\n" + "\\NewEnviron{lyxgreyedout}{%\n" + "\\if@RTL%\n" + "\\everypar{\\color{note_fontcolor}\\pardir TRT \\textdir TRT\\ignorespaces}%\n" + "\\BODY\\everypar{\\ignorespacesafterend}\n" + "\\else%\n" + "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n" + "\\BODY\\ignorespacesafterend\\egroup\n" + "\\fi}\n"); + +static docstring const lyxgreyedout_luartl_babel_def = from_ascii( + "%% The greyedout annotation environment (with RTL support)\n" + "\\NewEnviron{lyxgreyedout}{%\n" + "\\if@rl%\n" + "\\everypar{\\color{note_fontcolor}\\pardir TRT \\textdir TRT\\ignorespaces}%\n" + "\\BODY\\everypar{\\ignorespacesafterend}\n" + "\\else%\n" + "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n" + "\\BODY\\ignorespacesafterend\\egroup\n" + "\\fi}\n"); + // We want to omit the file extension for includegraphics, but this does not // work when the filename contains other dots. // Idea from http://www.tex.ac.uk/cgi-bin/texfaq2html?label=unkgrfextn @@ -990,6 +1023,7 @@ char const * simplefeatures[] = { "forest", "varwidth", "tablefootnote", + "environ" }; char const * bibliofeatures[] = { @@ -1505,8 +1539,19 @@ TexString LaTeXFeatures::getMacros() const // greyed-out environment (note inset) // the color is specified in the routine // getColorOptions() to avoid LaTeX-package clashes - if (mustProvide("lyxgreyedout")) - macros << lyxgreyedout_def; + if (mustProvide("lyxgreyedout")) { + // We need different version for RTL (#8647) + if (hasRTLLanguage()) { + if (runparams_.flavor == OutputParams::LUATEX) + if (useBabel()) + macros << lyxgreyedout_luartl_babel_def; + else + macros << lyxgreyedout_luartl_def; + else + macros << lyxgreyedout_rtl_def; + } else + macros << lyxgreyedout_def; + } if (mustProvide("lyxdot")) macros << lyxdot_def << '\n'; diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp index ef946db338..6283e88c05 100644 --- a/src/insets/InsetNote.cpp +++ b/src/insets/InsetNote.cpp @@ -317,6 +317,8 @@ void InsetNote::validate(LaTeXFeatures & features) const features.useInsetLayout(getLayout()); break; case InsetNoteParams::Greyedout: + if (features.hasRTLLanguage()) + features.require("environ"); InsetCollapsible::validate(features); break; case InsetNoteParams::Note: diff --git a/status.23x b/status.23x index cb0e367c58..0c9cc76d22 100644 --- a/status.23x +++ b/status.23x @@ -94,6 +94,8 @@ What's new - Fix compilation of Hebrew Article with XeTeX and LuaTeX (bug 10525). +- Fix greyedout note with RTL documents (bug 8647). + * USER INTERFACE -- 2.39.2