X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.cpp;h=a12a2860dc037d4c7d87a068b998180c278e5ded;hb=51cc8aa9f6b784f806b1d9cc97fe0749ffac29af;hp=53ebf0129c1859832fbd9b7c725b6dacdef324e0;hpb=af4090bb0a5936b178ff61e3e989e354f9e4c02a;p=lyx.git diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 53ebf0129c..a12a2860dc 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -1326,6 +1326,11 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // are doing! if (features.mustProvide("fix-cm")) os << "\\RequirePackage{fix-cm}\n"; + // Likewise for fixltx2e. If other packages conflict with this policy, + // treat it as a package bug (and report it!) + // See http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/4407 + if (features.mustProvide("fixltx2e")) + os << "\\RequirePackage{fixltx2e}\n"; os << "\\documentclass"; @@ -1494,18 +1499,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // XeTeX and LuaTeX (with OS fonts) do not need fontenc if (!useNonTeXFonts && !features.isProvided("fontenc") && font_encoding() != "default") { - vector fontencs; - // primary language font encoding and default encoding - if (ascii_lowercase(language->fontenc()) != "none") { - vector fencs = getVectorFromString(font_encoding()); - fontencs.insert(fontencs.end(), fencs.begin(), fencs.end()); - fencs = getVectorFromString(language->fontenc()); - vector::const_iterator fit = fencs.begin(); - for (; fit != fencs.end(); ++fit) { - if (find(fontencs.begin(), fontencs.end(), *fit) == fontencs.end()) - fontencs.push_back(*fit); - } - } + // get main font encodings + vector fontencs = font_encodings(); // get font encodings of secondary languages features.getFontEncodings(fontencs); if (!fontencs.empty()) { @@ -2757,7 +2752,31 @@ string const BufferParams::dvips_options() const string const BufferParams::font_encoding() const { - return (fontenc == "global") ? lyxrc.fontenc : fontenc; + return font_encodings().empty() ? "default" : font_encodings().back(); +} + + +vector const BufferParams::font_encodings() const +{ + string doc_fontenc = (fontenc == "global") ? lyxrc.fontenc : fontenc; + + vector fontencs; + + // "default" means "no explicit font encoding" + if (doc_fontenc != "default") { + fontencs = getVectorFromString(doc_fontenc); + if (!language->fontenc().empty() + && ascii_lowercase(language->fontenc()) != "none") { + vector fencs = getVectorFromString(language->fontenc()); + vector::const_iterator fit = fencs.begin(); + for (; fit != fencs.end(); ++fit) { + if (find(fontencs.begin(), fontencs.end(), *fit) == fontencs.end()) + fontencs.push_back(*fit); + } + } + } + + return fontencs; }