]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Amend 3093789e for cmake build
[lyx.git] / src / LaTeXFeatures.cpp
index 7a8275331de695ea5bb333fc385e64eda4289880..fb8a8181cd1c16226c2ca4f443b226e9293dc5ac 100644 (file)
@@ -27,8 +27,8 @@
 #include "LaTeXFonts.h"
 #include "LaTeXPackages.h"
 #include "Layout.h"
-#include "Lexer.h"
 #include "LyXRC.h"
+#include "OutputParams.h"
 #include "TextClass.h"
 #include "TexRow.h"
 #include "texstream.h"
@@ -37,9 +37,8 @@
 
 #include "support/debug.h"
 #include "support/docstream.h"
-#include "support/FileName.h"
+#include "support/docstring.h"
 #include "support/filetools.h"
-#include "support/gettext.h"
 #include "support/lstrings.h"
 #include "support/regex.h"
 
@@ -834,15 +833,15 @@ TexString getSnippets(std::list<TexString> const & list)
 } // namespace
 
 
-void LaTeXFeatures::addPreambleSnippet(TexString ts, bool allow_dupes)
+void LaTeXFeatures::addPreambleSnippet(TexString snippet, bool allow_dupes)
 {
-       addSnippet(preamble_snippets_, move(ts), allow_dupes);
+       addSnippet(preamble_snippets_, move(snippet), allow_dupes);
 }
 
 
-void LaTeXFeatures::addPreambleSnippet(docstring const & str, bool allow_dupes)
+void LaTeXFeatures::addPreambleSnippet(docstring const & snippet, bool allow_dupes)
 {
-       addSnippet(preamble_snippets_, TexString(str), allow_dupes);
+       addSnippet(preamble_snippets_, TexString(snippet), allow_dupes);
 }
 
 
@@ -924,11 +923,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;
@@ -941,11 +938,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;
@@ -959,12 +954,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;
 }
@@ -977,12 +970,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;
 }
@@ -990,22 +981,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);
 }
 
 
@@ -1013,13 +1001,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;
 }
 
@@ -1030,10 +1014,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;
 }
 
@@ -1065,7 +1047,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) {
@@ -1159,8 +1142,7 @@ char const * simplefeatures[] = {
        "pict2e",
        "drs",
        "environ",
-       "dsfont",
-       "bbm"
+       "dsfont"
 };
 
 char const * bibliofeatures[] = {
@@ -1180,10 +1162,6 @@ char const * bibliofeatures[] = {
        "named"
 };
 
-int const nb_bibliofeatures = sizeof(bibliofeatures) / sizeof(char const *);
-
-int const nb_simplefeatures = sizeof(simplefeatures) / sizeof(char const *);
-
 } // namespace
 
 
@@ -1275,9 +1253,9 @@ string const LaTeXFeatures::getPackages() const
 
        //  These are all the 'simple' includes.  i.e
        //  packages which we just \usepackage{package}
-       for (int i = 0; i < nb_simplefeatures; ++i) {
-               if (mustProvide(simplefeatures[i]))
-                       packages << "\\usepackage{" << simplefeatures[i] << "}\n";
+       for (char const * feature : simplefeatures) {
+               if (mustProvide(feature))
+                       packages << "\\usepackage{" << feature << "}\n";
        }
 
        // The rest of these packages are somewhat more complicated
@@ -1437,10 +1415,9 @@ string const LaTeXFeatures::getPackages() const
                packages << "\\usepackage{esint}\n";
 
        // Known bibliography packages (simple \usepackage{package})
-       for (int i = 0; i < nb_bibliofeatures; ++i) {
-               if (mustProvide(bibliofeatures[i]))
-                       packages << "\\usepackage{"
-                                << bibliofeatures[i] << "}\n";
+       for (char const * feature : bibliofeatures) {
+               if (mustProvide(feature))
+                       packages << "\\usepackage{" << feature << "}\n";
        }
 
        // Compatibility between achicago and natbib
@@ -1736,11 +1713,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";
 
@@ -1765,11 +1742,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";
        
@@ -1808,7 +1785,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())
@@ -1825,7 +1802,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())
@@ -1961,8 +1938,8 @@ docstring const getFloatI18nPreamble(docstring const & type,
 {
        // Check whether name can be encoded in the buffer encoding
        bool encodable = true;
-       for (size_t i = 0; i < name.size(); ++i) {
-               if (!enc.encodable(name[i])) {
+       for (char_type c : name) {
+               if (!enc.encodable(c)) {
                        encodable = false;
                        break;
                }