+ lyxpreamble += from_utf8(features.getBabelPresettings());
+ lyxpreamble += from_utf8(babelCall(language_options.str(),
+ features.needBabelLangOptions())) + '\n';
+ lyxpreamble += from_utf8(features.getBabelPostsettings());
+ }
+
+ // xunicode needs to be loaded at least after amsmath, amssymb,
+ // esint and the other packages that provide special glyphs
+ if (features.runparams().flavor == OutputParams::XETEX)
+ lyxpreamble += "\\usepackage{xunicode}\n";
+
+ // Polyglossia must be loaded last
+ if (use_polyglossia) {
+ // call the package
+ lyxpreamble += "\\usepackage{polyglossia}\n";
+ // set the main language
+ lyxpreamble += "\\setdefaultlanguage";
+ if (!language->polyglossiaOpts().empty())
+ lyxpreamble += "[" + from_ascii(language->polyglossiaOpts()) + "]";
+ lyxpreamble += "{" + from_ascii(language->polyglossia()) + "}\n";
+ // now setup the other languages
+ std::map<std::string, std::string> const polylangs =
+ features.getPolyglossiaLanguages();
+ for (std::map<std::string, std::string>::const_iterator mit = polylangs.begin();
+ mit != polylangs.end() ; ++mit) {
+ lyxpreamble += "\\setotherlanguage";
+ if (!mit->second.empty())
+ lyxpreamble += "[" + from_ascii(mit->second) + "]";
+ lyxpreamble += "{" + from_ascii(mit->first) + "}\n";
+ }