lex.next();
string const classname = lex.getString();
// if there exists a local layout file, ignore the system one
- // NOTE: in this case, the textclass (.cls file) is assumed to be available.
+ // NOTE: in this case, the textclass (.cls file) is assumed to
+ // be available.
string tcp;
LayoutFileList & bcl = LayoutFileList::get();
if (tcp.empty() && !filepath.empty())
setBaseClass(tcp);
else
setBaseClass(classname);
- // We assume that a tex class exists for local or unknown layouts so this warning
- // will only be given for system layouts.
+ // We assume that a tex class exists for local or unknown
+ // layouts so this warning, will only be given for system layouts.
if (!baseClass()->isTeXClassAvailable()) {
docstring const desc =
translateIfPossible(from_utf8(baseClass()->description()));
- docstring const prereqs = from_utf8(baseClass()->prerequisites());
+ docstring const prereqs =
+ from_utf8(baseClass()->prerequisites());
docstring const msg =
bformat(_("The selected document class\n"
"\t%1$s\n"
istringstream ss(lex.getString());
Author a;
ss >> a;
- author_map[a.buffer_id()] = pimpl_->authorlist.record(a);
+ author_map[a.bufferId()] = pimpl_->authorlist.record(a);
} else if (token == "\\paperorientation") {
string orient;
lex >> orient;
language_options << ',';
language_options << language->babel();
}
- // if Vietnamese is used, babel must directly be loaded
- // with language options, not in the class options, see
- // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129417.html
- size_t viet = language_options.str().find("vietnam");
- // viet = string::npos when not found
- // the same is for all other languages that are not directly supported by
- // babel, but where LaTeX-packages add babel support.
- // this is currently the case for Latvian, Lithuanian, Mongolian
- // and Turkmen
- size_t latvian = language_options.str().find("latvian");
- size_t lithu = language_options.str().find("lithuanian");
- size_t mongo = language_options.str().find("mongolian");
- size_t turkmen = language_options.str().find("turkmen");
- // if Japanese is used, babel must directly be loaded
- // with language options, not in the class options, see
- // http://www.lyx.org/trac/ticket/4597#c4
- size_t japan = language_options.str().find("japanese");
- if (lyxrc.language_global_options && !language_options.str().empty()
- && viet == string::npos && japan == string::npos
- && latvian == string::npos && lithu == string::npos
- && mongo == string::npos && turkmen == string::npos)
+ if (lyxrc.language_global_options
+ && !features.needBabelLangOptions())
clsoptions << language_options.str() << ',';
}
|| features.isRequired("vietnamese")
|| features.isRequired("japanese") ) ) {
// FIXME UNICODE
- lyxpreamble += from_utf8(babelCall(language_options.str())) + '\n';
- lyxpreamble += from_utf8(features.getBabelOptions()) + '\n';
+ lyxpreamble += from_utf8(features.getBabelPresettings());
+ lyxpreamble += from_utf8(babelCall(language_options.str(),
+ features.needBabelLangOptions())) + '\n';
+ lyxpreamble += from_utf8(features.getBabelPostsettings());
}
// The optional packages;
&& !features.isRequired("vietnamese")
&& !features.isRequired("japanese")) {
// FIXME UNICODE
- lyxpreamble += from_utf8(babelCall(language_options.str())) + '\n';
- lyxpreamble += from_utf8(features.getBabelOptions()) + '\n';
+ lyxpreamble += from_utf8(features.getBabelPresettings());
+ lyxpreamble += from_utf8(babelCall(language_options.str(),
+ features.needBabelLangOptions())) + '\n';
+ lyxpreamble += from_utf8(features.getBabelPostsettings());
}
docstring const i18npreamble = features.getTClassI18nPreamble(use_babel);
}
-string BufferParams::babelCall(string const & lang_opts) const
+string BufferParams::babelCall(string const & lang_opts, bool const langoptions) const
{
- string lang_pack = lyxrc.language_package;
- if (lang_pack != "\\usepackage{babel}")
- return lang_pack;
- // suppress the babel call when there is no babel language defined
+ if (lyxrc.language_package_selection == LyXRC::LP_CUSTOM)
+ return lyxrc.language_custom_package;
+ // suppress the babel call if there is no BabelName defined
// for the document language in the lib/languages file and if no
// other languages are used (lang_opts is then empty)
if (lang_opts.empty())
return string();
- // If Vietnamese is used, babel must directly be loaded with the
- // language options, see
- // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129417.html
- size_t viet = lang_opts.find("vietnam");
- // viet = string::npos when not found
- // the same is for all other languages that are not directly supported by
- // babel, but where LaTeX-packages add babel support.
- // this is currently the case for Latvian, Lithuanian, Mongolian
- // and Turkmen
- size_t latvian = lang_opts.find("latvian");
- size_t lithu = lang_opts.find("lithuanian");
- size_t mongo = lang_opts.find("mongolian");
- size_t turkmen = lang_opts.find("turkmen");
- // If Japanese is used, babel must directly be loaded with the
- // language options, see
- // http://www.lyx.org/trac/ticket/4597#c4
- size_t japan = lang_opts.find("japanese");
- if (!lyxrc.language_global_options || viet != string::npos
- || japan != string::npos || latvian != string::npos
- || lithu != string::npos || mongo != string::npos
- || turkmen != string::npos)
+ // either a specific language (AsBabelOptions setting in
+ // lib/languages) or the prefs require the languages to
+ // be submitted to babel itself (not the class).
+ if (langoptions)
return "\\usepackage[" + lang_opts + "]{babel}";
- return lang_pack;
+ return "\\usepackage{babel}";
}
ostringstream os;
if (xetex) {
- if (rm != "default")
- os << "\\setmainfont[Mapping=tex-text]{"
- << parseFontName(rm) << "}\n";
+ if (rm != "default") {
+ os << "\\setmainfont[Mapping=tex-text";
+ if (osf)
+ os << ",Numbers=OldStyle";
+ os << "]{" << parseFontName(rm) << "}\n";
+ }
if (sf != "default") {
string const sans = parseFontName(sf);
if (sfscale != 100)
os << "\\setmonofont[Mapping=tex-text]{"
<< mono << "}\n";
}
- if (osf)
- os << "\\defaultfontfeatures{Numbers=OldStyle}\n";
return os.str();
}