]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Correct comment
[lyx.git] / src / LaTeXFeatures.cpp
index 8ef793cd873cacac5fbc5bce32e268eb647c47fc..3d67128f58069129dc7ed13364339a6e55971729 100644 (file)
@@ -235,29 +235,6 @@ static docstring const lyxdot_def = from_ascii(
        "%% A simple dot to overcome graphicx limitations\n"
        "\\newcommand{\\lyxdot}{.}\n");
 
-static docstring const changetracking_dvipost_def = from_ascii(
-       "%% Change tracking with dvipost\n"
-       "\\dvipostlayout\n"
-       "\\dvipost{osstart color push Red}\n"
-       "\\dvipost{osend color pop}\n"
-       "\\dvipost{cbstart color push Blue}\n"
-       "\\dvipost{cbrule 0pt}\n"
-       "\\dvipost{cbend color pop}\n"
-       "\\DeclareRobustCommand{\\lyxadded}[4][]{\\changestart#4\\changeend}\n"
-       "\\DeclareRobustCommand{\\lyxdeleted}[4][]{%\n"
-       "\\changestart\\overstrikeon#4\\overstrikeoff\\changeend}\n");
-
-static docstring const changetracking_dvipost_cb_def = from_ascii(
-       "%% Change tracking with dvipost\n"
-       "\\dvipostlayout\n"
-       "\\dvipost{osstart color push Red}\n"
-       "\\dvipost{osend color pop}\n"
-       "\\dvipost{cbstart color push Blue}\n"
-       "\\dvipost{cbend color pop}\n"
-       "\\DeclareRobustCommand{\\lyxadded}[4][]{\\changestart#4\\changeend}\n"
-       "\\DeclareRobustCommand{\\lyxdeleted}[4][]{%\n"
-       "\\changestart\\overstrikeon#4\\overstrikeoff\\changeend}\n");
-
 static docstring const changetracking_xcolor_ulem_base_def = from_ascii(
        "%% Change tracking with ulem and xcolor: base macros\n"
        "\\DeclareRobustCommand{\\mklyxadded}[1]{\\bgroup\\color{lyxadded}{}#1\\egroup}\n"
@@ -740,7 +717,7 @@ void LaTeXFeatures::useLayout(docstring const & layoutname, int level)
                        return;
 
                Layout const & layout = tclass[layoutname];
-               require(layout.requires());
+               require(layout.required());
 
                if (!layout.depends_on().empty()) {
                        useLayout(layout.depends_on(), level + 1);
@@ -767,7 +744,7 @@ void LaTeXFeatures::useInsetLayout(InsetLayout const & lay)
                        != usedInsetLayouts_.end())
                return;
 
-       require(lay.requires());
+       require(lay.required());
        usedInsetLayouts_.push_back(lname);
 }
 
@@ -901,9 +878,9 @@ void LaTeXFeatures::useFloat(string const & name, bool subfloat)
        if (!fl.floattype().empty()) {
                if (fl.usesFloatPkg())
                        require("float");
-               if (!fl.requires().empty()) {
-                       vector<string> reqs = getVectorFromString(fl.requires());
-                       for (auto const req : reqs)
+               if (!fl.required().empty()) {
+                       vector<string> reqs = getVectorFromString(fl.required());
+                       for (auto const req : reqs)
                                require(req);
                }
        }
@@ -914,8 +891,8 @@ void LaTeXFeatures::useLanguage(Language const * lang)
 {
        if (!lang->babel().empty() || !lang->polyglossia().empty())
                UsedLanguages_.insert(lang);
-       if (!lang->requires().empty())
-               require(lang->requires());
+       if (!lang->required().empty())
+               require(lang->required());
        // currently only supported for Babel
        if (!lang->provides().empty() && useBabel())
                provide(lang->provides());
@@ -947,11 +924,9 @@ bool LaTeXFeatures::hasOnlyPolyglossiaLanguages() const
        if (params_.language->polyglossia().empty())
                return false;
        // now the secondary languages
-       LanguageList::const_iterator const begin = UsedLanguages_.begin();
-       for (LanguageList::const_iterator cit = begin;
-            cit != UsedLanguages_.end();
-            ++cit) {
-               if ((*cit)->polyglossia().empty())
+       for (auto const & lang : UsedLanguages_)
+       {
+               if (lang->polyglossia().empty())
                        return false;
        }
        return true;
@@ -964,11 +939,9 @@ bool LaTeXFeatures::hasPolyglossiaExclusiveLanguages() const
        if (params_.language->isPolyglossiaExclusive())
                return true;
        // now the secondary languages
-       LanguageList::const_iterator const begin = UsedLanguages_.begin();
-       for (LanguageList::const_iterator cit = begin;
-            cit != UsedLanguages_.end();
-            ++cit) {
-               if ((*cit)->isPolyglossiaExclusive())
+       for (auto const & lang : UsedLanguages_)
+       {
+               if (lang->isPolyglossiaExclusive())
                        return true;
        }
        return false;
@@ -982,12 +955,10 @@ vector<string> LaTeXFeatures::getPolyglossiaExclusiveLanguages() const
        if (params_.language->isPolyglossiaExclusive())
                result.push_back(params_.language->display());
        // now the secondary languages
-       LanguageList::const_iterator const begin = UsedLanguages_.begin();
-       for (LanguageList::const_iterator cit = begin;
-            cit != UsedLanguages_.end();
-            ++cit) {
-               if ((*cit)->isPolyglossiaExclusive())
-                       result.push_back((*cit)->display());
+       for (auto const & lang : UsedLanguages_)
+       {
+               if (lang->isPolyglossiaExclusive())
+                       result.push_back(lang->display());
        }
        return result;
 }
@@ -1000,12 +971,10 @@ vector<string> LaTeXFeatures::getBabelExclusiveLanguages() const
        if (params_.language->isBabelExclusive())
                result.push_back(params_.language->display());
        // now the secondary languages
-       LanguageList::const_iterator const begin = UsedLanguages_.begin();
-       for (LanguageList::const_iterator cit = begin;
-            cit != UsedLanguages_.end();
-            ++cit) {
-               if ((*cit)->isBabelExclusive())
-                       result.push_back((*cit)->display());
+       for (auto const & lang : UsedLanguages_)
+       {
+               if (lang->isBabelExclusive())
+                       result.push_back(lang->display());
        }
        return result;
 }
@@ -1013,22 +982,19 @@ vector<string> LaTeXFeatures::getBabelExclusiveLanguages() const
 
 string LaTeXFeatures::getBabelLanguages() const
 {
-       ostringstream langs;
-
-       bool first = true;
-       LanguageList::const_iterator const begin = UsedLanguages_.begin();
-       for (LanguageList::const_iterator cit = begin;
-            cit != UsedLanguages_.end();
-            ++cit) {
-               if ((*cit)->babel().empty())
-                       continue;
-               if (!first)
-                       langs << ',';
-               else
-                       first = false;
-               langs << (*cit)->babel();
+       vector<string> blangs;
+       for (auto const & lang : UsedLanguages_) {
+               if (!lang->babel().empty())
+                       blangs.push_back(lang->babel());
        }
-       return langs.str();
+
+       // Sort alphabetically to assure consistent order
+       // (the order itself does not matter apart from
+       // some exceptions, e.g. hebrew must come after
+       // arabic and farsi)
+       sort(blangs.begin(), blangs.end());
+
+       return getStringFromVector(blangs);
 }
 
 
@@ -1036,13 +1002,9 @@ set<string> LaTeXFeatures::getPolyglossiaLanguages() const
 {
        set<string> langs;
 
-       LanguageList::const_iterator const begin = UsedLanguages_.begin();
-       for (LanguageList::const_iterator cit = begin;
-            cit != UsedLanguages_.end();
-            ++cit) {
+       for (auto const & lang : UsedLanguages_)
                // We do not need the variants here
-               langs.insert((*cit)->polyglossia());
-       }
+               langs.insert(lang->polyglossia());
        return langs;
 }
 
@@ -1053,10 +1015,8 @@ string LaTeXFeatures::getActiveChars() const
        // first the main language
        res += params_.language->activeChars();
        // now the secondary languages
-       LanguageList::const_iterator const begin = UsedLanguages_.begin();
-       for (LanguageList::const_iterator cit = begin;
-            cit != UsedLanguages_.end(); ++cit)
-               res += ((*cit)->activeChars());
+       for (auto const & lang : UsedLanguages_)
+               res += (lang->activeChars());
        return res;
 }
 
@@ -1088,7 +1048,8 @@ void LaTeXFeatures::getFontEncodings(vector<string> & encs, bool const onlylangs
                        encs.insert(encs.begin(), "T2A");
        }
 
-       for (auto const & lang : UsedLanguages_) {
+       for (auto const & lang : UsedLanguages_)
+       {
                vector<string> extraencs =
                        getVectorFromString(lang->fontenc(buffer().masterParams()));
                for (auto const & extra : extraencs) {
@@ -1131,7 +1092,6 @@ char const * simplefeatures[] = {
        "float",
        "wrapfig",
        "booktabs",
-       "dvipost",
        "fancybox",
        "calc",
        "units",
@@ -1174,7 +1134,6 @@ char const * simplefeatures[] = {
        "todonotes",
        "forest",
        "varwidth",
-       "tablefootnote",
        "afterpage",
        "tabularx",
        "tikz",
@@ -1183,7 +1142,8 @@ char const * simplefeatures[] = {
        "xskak",
        "pict2e",
        "drs",
-       "environ"
+       "environ",
+       "dsfont"
 };
 
 char const * bibliofeatures[] = {
@@ -1306,8 +1266,12 @@ string const LaTeXFeatures::getPackages() const
        // The rest of these packages are somewhat more complicated
        // than those above.
 
-       if (mustProvide("changebar") && !mustProvide("ct-dvipost")) {
-               packages << "\\usepackage{changebar}\n";
+       if (mustProvide("changebar")) {
+               packages << "\\usepackage";
+               if (runparams_.flavor == OutputParams::LATEX
+                   || runparams_.flavor == OutputParams::DVILUATEX)
+                       packages << "[dvips]";
+               packages << "{changebar}\n";
        }
 
        if (mustProvide("footnote")) {
@@ -1416,6 +1380,9 @@ string const LaTeXFeatures::getPackages() const
                packages << "\\usepackage{rotating}\n";
        if (mustProvide("rotfloat"))
                packages << "\\usepackage{rotfloat}\n";
+       // and this must be loaded after rotating
+       if (mustProvide("tablefootnote"))
+               packages << "\\usepackage{tablefootnote}\n";
 
        // lyxskak.sty --- newer chess support based on skak.sty
        if (mustProvide("chess"))
@@ -1749,21 +1716,14 @@ TexString LaTeXFeatures::getMacros() const
                macros << lyxref_def << '\n';
 
        // change tracking
-       if (mustProvide("ct-dvipost")) {
-               if (isRequired("changebar"))
-                       macros << changetracking_dvipost_cb_def;
-               else
-                       macros << changetracking_dvipost_def;
-       }
-
        if (mustProvide("ct-xcolor-ulem")) {
                streamsize const prec = macros.os().precision(2);
 
-               RGBColor cadd = rgbFromHexName(lcolor.getX11Name(Color_addedtext));
+               RGBColor cadd = rgbFromHexName(lcolor.getX11HexName(Color_addedtext));
                macros << "\\providecolor{lyxadded}{rgb}{"
                       << cadd.r / 255.0 << ',' << cadd.g / 255.0 << ',' << cadd.b / 255.0 << "}\n";
 
-               RGBColor cdel = rgbFromHexName(lcolor.getX11Name(Color_deletedtext));
+               RGBColor cdel = rgbFromHexName(lcolor.getX11HexName(Color_deletedtext));
                macros << "\\providecolor{lyxdeleted}{rgb}{"
                       << cdel.r / 255.0 << ',' << cdel.g / 255.0 << ',' << cdel.b / 255.0 << "}\n";
 
@@ -1788,11 +1748,11 @@ TexString LaTeXFeatures::getMacros() const
                if (!mustProvide("ct-xcolor-ulem")) {
                        streamsize const prec = macros.os().precision(2);
 
-                       RGBColor cadd = rgbFromHexName(lcolor.getX11Name(Color_addedtext));
+                       RGBColor cadd = rgbFromHexName(lcolor.getX11HexName(Color_addedtext));
                        macros << "\\providecolor{lyxadded}{rgb}{"
                               << cadd.r / 255.0 << ',' << cadd.g / 255.0 << ',' << cadd.b / 255.0 << "}\n";
        
-                       RGBColor cdel = rgbFromHexName(lcolor.getX11Name(Color_deletedtext));
+                       RGBColor cdel = rgbFromHexName(lcolor.getX11HexName(Color_deletedtext));
                        macros << "\\providecolor{lyxdeleted}{rgb}{"
                               << cdel.r / 255.0 << ',' << cdel.g / 255.0 << ',' << cdel.b / 255.0 << "}\n";
        
@@ -1831,7 +1791,7 @@ docstring const LaTeXFeatures::getBabelPresettings() const
 {
        odocstringstream tmp;
 
-       for (Language const * lang : UsedLanguages_)
+       for (auto const & lang : UsedLanguages_)
                if (!lang->babel_presettings().empty())
                        tmp << lang->babel_presettings() << '\n';
        if (!params_.language->babel_presettings().empty())
@@ -1848,7 +1808,7 @@ docstring const LaTeXFeatures::getBabelPostsettings() const
 {
        odocstringstream tmp;
 
-       for (Language const * lang : UsedLanguages_)
+       for (auto const & lang : UsedLanguages_)
                if (!lang->babel_postsettings().empty())
                        tmp << lang->babel_postsettings() << '\n';
        if (!params_.language->babel_postsettings().empty())