]> git.lyx.org Git - features.git/blobdiff - src/LaTeXFeatures.cpp
\textcyr -> \textcyrillic
[features.git] / src / LaTeXFeatures.cpp
index dddfc2e66602165ba4a301e87e8dd200a9043eb0..e8d138707008b0586646517b05560a21990429dc 100644 (file)
@@ -258,7 +258,7 @@ static docstring const textcyr_T2A_def = from_ascii(
 static docstring const textcyr_def = from_ascii(
        "\\DeclareRobustCommand{\\cyrtext}{%\n"
        "  \\fontencoding{T2A}\\selectfont\\def\\encodingdefault{T2A}}\n"
-       "\\DeclareRobustCommand{\\textcyr}[1]{\\leavevmode{\\cyrtext #1}}\n");
+       "\\DeclareRobustCommand{\\textcyrillic}[1]{\\leavevmode{\\cyrtext #1}}\n");
 
 static docstring const lyxmathsym_def = from_ascii(
        "\\newcommand{\\lyxmathsym}[1]{\\ifmmode\\begingroup\\def\\b@ld{bold}\n"
@@ -544,6 +544,12 @@ void LaTeXFeatures::require(set<string> const & names)
 }
 
 
+void LaTeXFeatures::provide(string const & name)
+{
+       provides_.insert(name);
+}
+
+
 void LaTeXFeatures::useLayout(docstring const & layoutname)
 {
        useLayout(layoutname, 0);
@@ -609,6 +615,15 @@ bool LaTeXFeatures::isRequired(string const & name) const
 
 bool LaTeXFeatures::isProvided(string const & name) const
 {
+       // Currently, this is only features provided by babel languages
+       // (such as textgreek)
+       if (provides_.find(name) != provides_.end())
+               return true;
+
+       // FIXME: the "textbaltic" definitions are only needed if the context
+       //        font encoding of the respective char is not l7x.
+       //        We cannot check this here as we have no context information.
+
        if (params_.useNonTeXFonts)
                return params_.documentClass().provides(name);
 
@@ -634,9 +649,6 @@ bool LaTeXFeatures::isProvided(string const & name) const
                        from_ascii(params_.fontsMath())).provides(name, ot1,
                                                                       complete,
                                                                       nomath);
-       // TODO: "textbaltic" provided, if the font-encoding is "L7x"
-       //       "textgreek" provided, if a language with font-encoding LGR is used in the document
-       //       "textcyr" provided, if a language with font-encoding T2A is used in the document
 }
 
 
@@ -737,6 +749,9 @@ void LaTeXFeatures::useLanguage(Language const * lang)
                UsedLanguages_.insert(lang);
        if (!lang->requires().empty())
                require(lang->requires());
+       // currently only supported for Babel
+       if (!lang->provides().empty() && useBabel())
+               provide(lang->provides());
        // CJK languages do not have a babel name.
        // They use the CJK package
        if (lang->encoding()->package() == Encoding::CJK)
@@ -880,16 +895,18 @@ set<string> LaTeXFeatures::getEncodingSet(string const & doc_encoding) const
 }
 
 
-void LaTeXFeatures::getFontEncodings(vector<string> & encs) const
+void LaTeXFeatures::getFontEncodings(vector<string> & encs, bool const onlylangs) const
 {
-       // these must be loaded if glyphs of this script are used
-       // unless a language providing them is used in the document
-       if (mustProvide("textgreek")
-           && find(encs.begin(), encs.end(), "LGR") == encs.end())
-               encs.insert(encs.begin(), "LGR");
-       if (mustProvide("textcyr")
-           && find(encs.begin(), encs.end(), "T2A") == encs.end())
-               encs.insert(encs.begin(), "T2A");
+       if (!onlylangs) {
+               // these must be loaded if glyphs of this script are used
+               // unless a language providing them is used in the document
+               if (mustProvide("textgreek")
+                   && find(encs.begin(), encs.end(), "LGR") == encs.end())
+                       encs.insert(encs.begin(), "LGR");
+               if (mustProvide("textcyrillic")
+                   && find(encs.begin(), encs.end(), "T2A") == encs.end())
+                       encs.insert(encs.begin(), "T2A");
+       }
 
        for (auto const & lang : UsedLanguages_)
                if (!lang->fontenc().empty()
@@ -1367,7 +1384,7 @@ TexString LaTeXFeatures::getMacros() const
                macros << textgreek_def << '\n';
        }
 
-       if (!usePolyglossia() && mustProvide("textcyr")) {
+       if (!usePolyglossia() && mustProvide("textcyrillic")) {
                // ensure T2A font encoding is set up also if fontenc is not loaded by LyX
                if (params_.main_font_encoding() == "default")
                        macros << textcyr_T2A_def;