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 4e74dd0d42)
This commit is contained in:
Juergen Spitzmueller 2019-08-15 15:15:59 +02:00
parent e097bade85
commit 7f58601c00
3 changed files with 51 additions and 2 deletions

View 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';

View 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:

View 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