X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.cpp;h=caa2dcb4f422b68392fa7aef46f80bd129a6eaa5;hb=32b65a8ee5ad6d5264011b66771a6ed91633ba3d;hp=bcf8d6450330495a537ce0a5458bf84ceeed8a1e;hpb=ba2b86fa5d718c434521a7b9722e6ccd677864ad;p=lyx.git diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index bcf8d64503..caa2dcb4f4 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -38,6 +38,7 @@ #include "LyXRC.h" #include "OutputParams.h" #include "Spacing.h" +#include "texstream.h" #include "TexRow.h" #include "VSpace.h" #include "PDFOptions.h" @@ -1589,7 +1590,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, os << from_ascii(ams); if (useNonTeXFonts) { - os << "\\usepackage{fontspec}\n"; + if (!features.isProvided("fontspec")) + os << "\\usepackage{fontspec}\n"; if (features.mustProvide("unicode-math") && features.isAvailable("unicode-math")) os << "\\usepackage{unicode-math}\n"; @@ -2054,7 +2056,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // koma's own caption commands are used instead of caption. We // use \PassOptionsToPackage here because the user could have // already loaded subfig in the preamble. - if (features.isRequired("subfig")) { + if (features.mustProvide("subfig")) { atlyxpreamble += "\\@ifundefined{showcaptionsetup}{}{%\n" " \\PassOptionsToPackage{caption=false}{subfig}}\n" "\\usepackage{subfig}\n"; @@ -2115,7 +2117,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, } if (features.isRequired("bicaption")) lyxpreamble += "\\usepackage{bicaption}\n"; - if (!listings_params.empty() || features.isRequired("listings")) + if (!listings_params.empty() || features.mustProvide("listings")) lyxpreamble += "\\usepackage{listings}\n"; if (!listings_params.empty()) { lyxpreamble += "\\lstset{"; @@ -2129,6 +2131,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // xunicode needs to be loaded at least after amsmath, amssymb, // esint and the other packages that provide special glyphs + // The package only supports XeTeX currently. if (features.runparams().flavor == OutputParams::XETEX && useNonTeXFonts) lyxpreamble += "\\usepackage{xunicode}\n"; @@ -2205,7 +2208,7 @@ bool BufferParams::hasClassDefaults() const DocumentClass const & BufferParams::documentClass() const { - return *doc_class_.get(); + return *doc_class_; } @@ -2347,14 +2350,7 @@ bool BufferParams::addLayoutModule(string const & modName) string BufferParams::bufferFormat() const { - string format = documentClass().outputFormat(); - if (format == "latex") { - if (useNonTeXFonts) - return "xetex"; // actually "xetex or luatex" - if (encoding().package() == Encoding::japanese) - return "platex"; - } - return format; + return documentClass().outputFormat(); } @@ -2411,17 +2407,14 @@ vector BufferParams::backends() const // FIXME: Don't hardcode format names here, but use a flag if (buffmt == "latex") { - if (!useNonTeXFonts) { - v.push_back("pdflatex"); - v.push_back("latex"); - } - v.push_back("luatex"); - v.push_back("dviluatex"); - v.push_back("xetex"); - } else if (buffmt == "xetex") { - v.push_back("xetex"); - // FIXME: need to test all languages (bug 8205) - if (!language || !language->isPolyglossiaExclusive()) { + if (encoding().package() == Encoding::japanese) + v.push_back("platex"); + else { + if (!useNonTeXFonts) { + v.push_back("pdflatex"); + v.push_back("latex"); + } + v.push_back("xetex"); v.push_back("luatex"); v.push_back("dviluatex"); } @@ -2973,8 +2966,8 @@ void BufferParams::writeEncodingPreamble(otexstream & os, // XeTeX/LuaTeX: (see also #9740) // With Unicode fonts we use utf8-plain without encoding package. // With TeX fonts, we cannot use utf8-plain, but "inputenc" fails. - // XeTeX must use ASCII encoding, for LuaTeX, we load - // "luainputenc" (see below). + // XeTeX must use ASCII encoding (see Buffer.cpp), + // for LuaTeX, we load "luainputenc" (see below). if (useNonTeXFonts || features.runparams().flavor == OutputParams::XETEX) return;