]> git.lyx.org Git - lyx.git/commitdiff
Fix greyedout note in RTL (#8647)
authorJuergen Spitzmueller <spitz@lyx.org>
Thu, 15 Aug 2019 13:15:59 +0000 (15:15 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Fri, 16 Aug 2019 05:51:26 +0000 (07:51 +0200)
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
src/insets/InsetNote.cpp
status.23x

index bf9cc28072d07a586405321a6453ea030c99aa29..268910ae5b87725cf0b7c9f266b60771ec687919 100644 (file)
@@ -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';
index ef946db3388e3dcb326f4529bb1b8dba4caa50e6..6283e88c05d343084b6a2f2d48707fbc47422232 100644 (file)
@@ -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:
index cb0e367c585dfd2167bc5543a5ac04d196d67187..0c9cc76d22dad5a5106bb20fafd939b584dc34f8 100644 (file)
@@ -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