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"
}
+void LaTeXFeatures::provide(string const & name)
+{
+ provides_.insert(name);
+}
+
+
void LaTeXFeatures::useLayout(docstring const & layoutname)
{
useLayout(layoutname, 0);
bool LaTeXFeatures::isProvided(string const & name) const
{
- // \textgreek is provided by babel globally if a Greek language/variety
- // is used in the document
- if (useBabel() && name == "textgreek"
- && params_.main_font_encoding() != "default") {
- // get main font encodings
- vector<string> fontencs = params_.font_encodings();
- // get font encodings of secondary languages
- getFontEncodings(fontencs, true);
- for (auto & fe : fontencs) {
- if (!Encodings::needsScriptWrapper(name, fe))
- return true;
- }
- }
- // FIXME: Analoguously, babel provides a command \textcyrillic, but
- // for some reason, we roll our own \textcyr definition
- // We should use \textcyrillic instead and only define it
- // if we do not use a respective language that features it (i.e.,
- // add "textcyrillic" to the test above.
+ // 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 where the respective char is is not l7x.
+ // font encoding of the respective char is not l7x.
// We cannot check this here as we have no context information.
if (params_.useNonTeXFonts)
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)
if (mustProvide("textgreek")
&& find(encs.begin(), encs.end(), "LGR") == encs.end())
encs.insert(encs.begin(), "LGR");
- if (mustProvide("textcyr")
+ if (mustProvide("textcyrillic")
&& find(encs.begin(), encs.end(), "T2A") == encs.end())
encs.insert(encs.begin(), "T2A");
}
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;