]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
DocBook: for MathML, mrow removal from decoration, script, frac
[lyx.git] / src / LaTeXFeatures.cpp
index abf7e38cae943337104af43e50eff727d58d7a44..cec1078a5658da44322eebdb2782f33f963fa962 100644 (file)
@@ -193,6 +193,12 @@ static docstring const tabularnewline_def = from_ascii(
        "%% Because html converters don't know tabularnewline\n"
        "\\providecommand{\\tabularnewline}{\\\\}\n");
 
+static docstring const cellvarwidth_def = from_ascii(
+       "%% Variable width box for table cells\n"
+       "\\newenvironment{cellvarwidth}[1][t]\n"
+       "    {\\begin{varwidth}[#1]{\\linewidth}}\n"
+       "    {\\@finalstrut\\@arstrutbox\\end{varwidth}}\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
@@ -539,84 +545,48 @@ static docstring const lyxmintcaption_def = from_ascii(
        "  \\ifx#1b\\vskip\\baselineskip\\fi\n"
        "}\n");
 
-docstring const lyxgreyedoutDef(bool const ct)
-{
-       odocstringstream ods;
-
-       ods << "%% The greyedout annotation environment\n"
-           << "\\newenvironment{lyxgreyedout}\n"
-           << "{";
-       if (ct)
-               ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}";
-       ods << "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces}\n"
-           << "  {\\ignorespacesafterend\\egroup}\n";
-
-       return ods.str();
-}
-
-docstring const lyxgreyedoutRTLDef(bool const ct)
-{
-       odocstringstream ods;
-
-       ods << "%% The greyedout annotation environment (with RTL support)\n"
-           << "\\NewEnviron{lyxgreyedout}{%\n"
-           << "\\if@rl%\n"
-           << "\\everypar{";
-       if (ct)
-               ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}";
-       ods << "\\textcolor{note_fontcolor}\\beginL\\ignorespaces}%\n"
-           << "\\BODY\\everypar{\\ignorespacesafterend\\endL}\n"
-           << "\\else%\n";
-       if (ct)
-              ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}";
-       ods << "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n"
-           << "\\BODY\\ignorespacesafterend\\egroup\n"
-           << "\\fi}\n";
-
-       return ods.str();
-}
 
-docstring const lyxgreyedoutLuaRTLDef(bool const ct)
+docstring const lyxgreyedoutDef(bool const rtl, bool const ct, bool const lua, bool const babel)
 {
        odocstringstream ods;
 
-       ods << "%% The greyedout annotation environment (with RTL support)\n"
-           << "\\NewEnviron{lyxgreyedout}{%\n"
-           << "\\if@RTL%\n"
-           << "\\everypar{";
-       if (ct)
-               ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}";
-       ods << "\\color{note_fontcolor}\\pardir TRT \\textdir TRT\\ignorespaces}%\n"
-           << "\\BODY\\everypar{\\ignorespacesafterend}\n"
-           << "\\else%\n";
-       if (ct)
-               ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}";
-       ods << "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n"
-           << "\\BODY\\ignorespacesafterend\\egroup\n"
-           << "\\fi}\n";
-
-       return ods.str();
-}
-
-docstring const lyxgreyedoutLuaRTLBabelDef(bool const ct)
-{
-       odocstringstream ods;
+       if (rtl) {
+               ods << "%% The greyedout annotation environment (with RTL support)\n"
+                   << "\\NewEnviron{lyxgreyedout}{%\n";
+               if (lua && !babel)
+                       // luabidi uses this switch
+                       ods << "  \\if@RTL%\n";
+               else
+                       ods << "  \\if@rl%\n";
+               ods << "    \\everypar{%\n";
+               if (lua)
+                       ods << "      \\pardir TRT \\textdir TRT\\textcolor{note_fontcolor}\\ignorespaces%\n";
+               else
+                       ods << "      \\textcolor{note_fontcolor}\\beginL\\ignorespaces%\n";
+               ods << "    }%\n";
+               if (ct)
+                       ods << "    \\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}%\n";
+               if (lua)
+                       ods << "    \\BODY\\everypar{\\ignorespacesafterend}%\n";
+               else
+                       ods << "    \\BODY\\everypar{\\ignorespacesafterend\\endL}%\n";
+               ods << "  \\else%\n";
+               if (ct)
+                       ods << "    \\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}%\n";
+               ods << "    \\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n"
+                   << "    \\BODY\\ignorespacesafterend\\egroup%\n"
+                   << "  \\fi%\n"
+                   << "}\n";
+       } else {
+               ods << "%% The greyedout annotation environment\n"
+                   << "\\newenvironment{lyxgreyedout}\n"
+                   << "{";
+               if (ct)
+                       ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}%\n ";
+               ods << "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces}\n"
+                   << "{\\ignorespacesafterend\\egroup}\n";
+       }
 
-       ods << "%% The greyedout annotation environment (with RTL support)\n"
-           << "\\NewEnviron{lyxgreyedout}{%\n"
-           << "\\if@rl%\n"
-           << "\\everypar{";
-       if (ct)
-               ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}";
-       ods << "\\color{note_fontcolor}\\pardir TRT \\textdir TRT\\ignorespaces}%\n"
-           << "\\BODY\\everypar{\\ignorespacesafterend}\n"
-           << "\\else%\n";
-       if (ct)
-               ods << "\\colorlet{lyxadded}{lyxadded!30}\\colorlet{lyxdeleted}{lyxdeleted!30}";
-       ods << "\\textcolor{note_fontcolor}\\bgroup\\ignorespaces%\n"
-           << "\\BODY\\ignorespacesafterend\\egroup\n"
-           << "\\fi}\n";
-       
        return ods.str();
 }
 
@@ -1731,23 +1701,17 @@ TexString LaTeXFeatures::getMacros() const
        if (mustProvide("NeedTabularnewline"))
                macros << tabularnewline_def;
 
+       if (mustProvide("cellvarwidth"))
+               macros << cellvarwidth_def;
+
        // greyed-out environment (note inset)
        // the color is specified in the routine
        // getColorOptions() to avoid LaTeX-package clashes
-       if (mustProvide("lyxgreyedout")) {
-               bool const ct = mustProvide("ct-xcolor-ulem");
-               // We need different version for RTL (#8647)
-               if (hasRTLLanguage()) {
-                       if (runparams_.flavor == Flavor::LuaTeX)
-                               if (useBabel())
-                                       macros << lyxgreyedoutLuaRTLBabelDef(ct);
-                               else
-                                       macros << lyxgreyedoutLuaRTLDef(ct);
-                       else
-                               macros << lyxgreyedoutRTLDef(ct);
-               } else
-                       macros << lyxgreyedoutDef(ct);
-       }
+       if (mustProvide("lyxgreyedout"))
+               // We need different version for RTL (#8647), with change tracking (#12025)
+               // and for some specific engine/language package combinations
+               macros << lyxgreyedoutDef(hasRTLLanguage(), mustProvide("ct-xcolor-ulem"),
+                                         (runparams_.flavor == Flavor::LuaTeX), useBabel());
 
        if (mustProvide("lyxdot"))
                macros << lyxdot_def << '\n';