]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Try even harder to obtain an instant preview
[lyx.git] / src / LaTeXFeatures.cpp
index 48c416dc0e778f96c7a564743d89497797299fb3..dcfb44c8ecc86ed53dbc3583858bf5cf504f04a0 100644 (file)
@@ -666,6 +666,30 @@ set<string> LaTeXFeatures::getEncodingSet(string const & doc_encoding) const
        return encodings;
 }
 
+
+void LaTeXFeatures::getFontEncodings(vector<string> & encodings) const
+{
+       // these must be loaded if glyphs of this script
+       // are used (notwithstanding the language)
+       if (mustProvide("textgreek"))
+               encodings.insert(encodings.begin(), "LGR");
+       if (mustProvide("textcyr"))
+               encodings.insert(encodings.begin(), "T2A");
+
+       LanguageList::const_iterator it  = UsedLanguages_.begin();
+       LanguageList::const_iterator end = UsedLanguages_.end();
+       for (; it != end; ++it)
+               if (!(*it)->fontenc().empty()
+                   && ascii_lowercase((*it)->fontenc()) != "none") {
+                       vector<string> extraencs = getVectorFromString((*it)->fontenc());
+                       vector<string>::const_iterator fit = extraencs.begin();
+                       for (; fit != extraencs.end(); ++fit) {
+                               if (find(encodings.begin(), encodings.end(), *fit) == encodings.end())
+                                       encodings.insert(encodings.begin(), *fit);
+                       }
+               }
+}
+
 namespace {
 
 char const * simplefeatures[] = {
@@ -729,7 +753,8 @@ char const * simplefeatures[] = {
        "tcolorbox",
        "pdfcomment",
        "fixme",
-       "todonotes"
+       "todonotes",
+       "forest"
 };
 
 char const * bibliofeatures[] = {
@@ -872,12 +897,6 @@ string const LaTeXFeatures::getPackages() const
        if (!params_.useNonTeXFonts && !use_newtxmath && !amsPackages.empty())
                packages << amsPackages;
 
-       // fixltx2e must be loaded after amsthm, since amsthm produces an error with
-       // the redefined \[ command (bug 7233). Load it as early as possible, since
-       // other packages might profit from it.
-       if (mustProvide("fixltx2e"))
-               packages << "\\usepackage{fixltx2e}\n";
-
        if (mustProvide("cancel") &&
            params_.use_package("cancel") != BufferParams::package_off)
                packages << "\\usepackage{cancel}\n";
@@ -1281,8 +1300,6 @@ bool LaTeXFeatures::needBabelLangOptions() const
 string const LaTeXFeatures::loadAMSPackages() const
 {
        ostringstream tmp;
-       if (mustProvide("amsthm"))
-               tmp << "\\usepackage{amsthm}\n";
 
        if (mustProvide("amsmath")
            && params_.use_package("amsmath") != BufferParams::package_off) {
@@ -1295,6 +1312,9 @@ string const LaTeXFeatures::loadAMSPackages() const
                        tmp << "\\usepackage{amstext}\n";
        }
 
+       if (mustProvide("amsthm"))
+               tmp << "\\usepackage{amsthm}\n";
+
        if (mustProvide("amssymb")
            && params_.use_package("amssymb") != BufferParams::package_off)
                tmp << "\\usepackage{amssymb}\n";
@@ -1569,7 +1589,8 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, bool use_po
                // need to force a fixed width encoding for
                // \lstlistlistingname and \lstlistingname (bug 9382).
                // This needs to be consistent with InsetListings::latex().
-               bool const need_fixedwidth = it->second.fixedwidthpreambleencoding();
+               bool const need_fixedwidth = !runparams_.isFullUnicode() &&
+                               it->second.fixedwidthpreambleencoding();
                // language dependent commands (once per document)
                snippets.insert(i18npreamble(it->second.langpreamble(),
                                                buffer().language(),