language_options << language->babel();
}
// when Vietnamese is used, babel must directly be loaded with the
- // language options, not in the class options
- int viet = language_options.str().find("vietnam");
+ // 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
if (lyxrc.language_global_options && !language_options.str().empty()
&& viet == string::npos)
// translate the word "Index" to the German "Stichwortverzeichnis".
// For more infos why this place was chosen, see
// http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg128425.html
- // if you encounter problem, you can shift babel to its old place behind
- // the user-defined preamble
+ // If you encounter problems, you can shift babel to its old place behind
+ // the user-defined preamble. But in this case you must change the Vietnamese
+ // support from currently "\usepackage[vietnamese]{babel}" to:
+ // \usepackage{vietnamese}
+ // \usepackage{babel}
+ // because vietnamese must be loaded before hyperref
if (use_babel && !features.isRequired("jurabib")) {
// FIXME UNICODE
lyxpreamble += from_utf8(babelCall(language_options.str())) + '\n';
}
// When the language "japanese-plain" is used, the package "japanese" must
- // be loaded behind babel (it provides babel support for Japanese)
- // see http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129680.html
- if (language->lang() == "japanese-plain")
+ // be loaded behind babel (it provides babel support for Japanese) but before
+ // hyperref, see
+ // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129680.html
+ if (language->lang() == "japanese-plain" &&
+ !getTextClass().provides("japanese")) {
+ //load babel in case it was not loaded due to an empty language list
+ if (language_options.str().empty())
+ lyxpreamble += "\\usepackage{babel}\n";
lyxpreamble += "\\usepackage{japanese}\n";
+ }
// PDF support.
// * Hyperref manual: "Make sure it comes last of your loaded
// * Has to be loaded before the "LyX specific LaTeX commands" to
// avoid errors with algorithm floats.
odocstringstream oss;
- pdfoptions().writeLaTeX(oss);
+ // use hyperref explicitely when it is required
+ pdfoptions().writeLaTeX(oss, features.isRequired("hyperref"));
lyxpreamble += oss.str();
// this might be useful...
if (lang_opts.empty())
return string();
// when Vietnamese is used, babel must directly be loaded with the
- // language options
- int viet = lang_opts.find("vietnam");
+ // 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
if (!lyxrc.language_global_options || viet != string::npos)
return "\\usepackage[" + lang_opts + "]{babel}";
std::set<string> encodings =
features.getEncodingSet(doc_encoding);
- // When the language japanese-plain is used, the package inputenc must
- // be omitted.
+ // When the encodings EUC-JP-plain, JIS-plain, or SJIS-plainare used, the
+ // package inputenc must be omitted. Therefore set the encoding to empty.
// see http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129680.html
- if ((!encodings.empty() || package == Encoding::inputenc) &&
- language->lang() != "japanese-plain") {
+ if (doc_encoding == "EUC-JP-plain" || doc_encoding == "JIS-plain" ||
+ doc_encoding == "SJIS-plain")
+ encodings.clear();
+
+ if (!encodings.empty() || package == Encoding::inputenc) {
os << "\\usepackage[";
std::set<string>::const_iterator it = encodings.begin();
std::set<string>::const_iterator const end = encodings.end();