X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.cpp;h=38f298c76fa4a0a0a04b2e918ca2fc9e46c30516;hb=667ecbdd1d1da1488802480eae06c96aed946854;hp=4f1edc1a210c3e1fc88e4dc356a58a5445062147;hpb=90635e8caf9a228fd316dda2d44fc8a17433f620;p=lyx.git diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 4f1edc1a21..38f298c76f 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -367,6 +367,7 @@ BufferParams::BufferParams() use_mathdots = package_auto; use_undertilde = package_auto; cite_engine_ = ENGINE_BASIC; + biblio_style = "plain"; use_bibtopic = false; use_indices = false; trackChanges = false; @@ -397,6 +398,7 @@ BufferParams::BufferParams() listings_params = string(); pagestyle = "default"; suppress_date = false; + justification = true; // no color is the default (white) backgroundcolor = lyx::rgbFromHexName("#ffffff"); isbackgroundcolor = false; @@ -551,7 +553,7 @@ string BufferParams::readToken(Lexer & lex, string const & token, 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 + // NOTE: in this case, the textclass (.cls file) is assumed to // be available. string tcp; LayoutFileList & bcl = LayoutFileList::get(); @@ -561,12 +563,12 @@ string BufferParams::readToken(Lexer & lex, string const & token, setBaseClass(tcp); else setBaseClass(classname); - // We assume that a tex class exists for local or unknown + // 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 = + docstring const desc = translateIfPossible(from_utf8(baseClass()->description())); - docstring const prereqs = + docstring const prereqs = from_utf8(baseClass()->prerequisites()); docstring const msg = bformat(_("The selected document class\n" @@ -603,6 +605,8 @@ string BufferParams::readToken(Lexer & lex, string const & token, master = lex.getString(); } else if (token == "\\suppress_date") { lex >> suppress_date; + } else if (token == "\\justification") { + lex >> justification; } else if (token == "\\language") { readLanguage(lex); } else if (token == "\\language_package") { @@ -695,6 +699,9 @@ string BufferParams::readToken(Lexer & lex, string const & token, string engine; lex >> engine; cite_engine_ = citeenginetranslator().find(engine); + } else if (token == "\\biblio_style") { + lex.eatLine(); + biblio_style = lex.getString(); } else if (token == "\\use_bibtopic") { lex >> use_bibtopic; } else if (token == "\\use_indices") { @@ -874,7 +881,7 @@ string BufferParams::readToken(Lexer & lex, string const & token, } else if (token == "\\use_refstyle") { lex >> use_refstyle; } else { - lyxerr << "BufferParams::readToken(): Unknown token: " << + lyxerr << "BufferParams::readToken(): Unknown token: " << token << endl; return token; } @@ -906,14 +913,14 @@ void BufferParams::writeFile(ostream & os) const } // use the class options defined in the layout? - os << "\\use_default_options " + os << "\\use_default_options " << convert(use_default_options) << "\n"; // the master document if (!master.empty()) { os << "\\master " << master << '\n'; } - + // removed modules if (!removed_modules_.empty()) { os << "\\begin_removed_modules" << '\n'; @@ -948,7 +955,7 @@ void BufferParams::writeFile(ostream & os) const // local layout information if (!local_layout.empty()) { - // remove '\n' from the end + // remove '\n' from the end string const tmplocal = rtrim(local_layout, "\n"); os << "\\begin_local_layout\n" << tmplocal @@ -998,11 +1005,13 @@ void BufferParams::writeFile(ostream & os) const << "\n\\use_mathdots " << use_mathdots << "\n\\use_undertilde " << use_undertilde << "\n\\cite_engine " << citeenginetranslator().find(cite_engine_) + << "\n\\biblio_style " << biblio_style << "\n\\use_bibtopic " << convert(use_bibtopic) << "\n\\use_indices " << convert(use_indices) << "\n\\paperorientation " << string_orientation[orientation] << "\n\\suppress_date " << convert(suppress_date) - << "\n\\use_refstyle " << use_refstyle + << "\n\\justification " << convert(justification) + << "\n\\use_refstyle " << use_refstyle << '\n'; if (isbackgroundcolor == true) os << "\\backgroundcolor " << lyx::X11hexname(backgroundcolor) << '\n'; @@ -1062,7 +1071,7 @@ void BufferParams::writeFile(ostream & os) const os << "\\footskip " << VSpace(footskip).asLyXCommand() << '\n'; if (!columnsep.empty()) - os << "\\columnsep " + os << "\\columnsep " << VSpace(columnsep).asLyXCommand() << '\n'; os << "\\secnumdepth " << secnumdepth << "\n\\tocdepth " << tocdepth @@ -1102,7 +1111,7 @@ void BufferParams::writeFile(ostream & os) const << "\\html_math_output " << html_math_output << '\n' << "\\html_css_as_file " << html_css_as_file << '\n' << "\\html_be_strict " << convert(html_be_strict) << '\n'; - + if (html_math_img_scale != 1.0) os << "\\html_math_img_scale " << convert(html_math_img_scale) << '\n'; if (!html_latex_start.empty()) @@ -1145,7 +1154,7 @@ void BufferParams::validate(LaTeXFeatures & features) const features.require("ulem"); features.require("xcolor"); // improves color handling in PDF output - features.require("pdfcolmk"); + features.require("pdfcolmk"); } else { features.require("ct-none"); } @@ -1179,7 +1188,7 @@ void BufferParams::validate(LaTeXFeatures & features) const // the bullet shapes are buffer level not paragraph level // so they are tested here for (int i = 0; i < 4; ++i) { - if (user_defined_bullet(i) == ITEMIZE_DEFAULTS[i]) + if (user_defined_bullet(i) == ITEMIZE_DEFAULTS[i]) continue; int const font = user_defined_bullet(i).getFont(); if (font == 0) { @@ -1423,7 +1432,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, mangledFileName(); if (!features.runparams().nice) incfile = mangled; - // \includeonly doesn't want an extension + // \includeonly doesn't want an extension incfile = changeExtension(incfile, string()); incfile = support::latex_path(incfile); if (!incfile.empty()) { @@ -1441,7 +1450,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, if (!listings_params.empty()) { os << "\\lstset{"; - // do not test validity because listings_params is + // do not test validity because listings_params is // supposed to be valid string par = InsetListingsParams(listings_params).separatedParams(true); @@ -1560,59 +1569,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, case PAPER_JISB6: ods << ",b6j"; break; - default: - // default papersize ie PAPER_DEFAULT - switch (lyxrc.default_papersize) { - case PAPER_DEFAULT: // keep compiler happy - break; - case PAPER_USLETTER: - ods << ",letterpaper"; - break; - case PAPER_USLEGAL: - ods << ",legalpaper"; - break; - case PAPER_USEXECUTIVE: - ods << ",executivepaper"; - break; - case PAPER_A3: - ods << ",a3paper"; - break; - case PAPER_A4: - ods << ",a4paper"; - break; - case PAPER_A5: - ods << ",a5paper"; - break; - case PAPER_B5: - ods << ",b5paper"; - break; - case PAPER_A0: - case PAPER_A1: - case PAPER_A2: - case PAPER_A6: - case PAPER_B0: - case PAPER_B1: - case PAPER_B2: - case PAPER_B3: - case PAPER_B4: - case PAPER_B6: - case PAPER_C0: - case PAPER_C1: - case PAPER_C2: - case PAPER_C3: - case PAPER_C4: - case PAPER_C5: - case PAPER_C6: - case PAPER_JISB0: - case PAPER_JISB1: - case PAPER_JISB2: - case PAPER_JISB3: - case PAPER_JISB4: - case PAPER_JISB5: - case PAPER_JISB6: - case PAPER_CUSTOM: - break; - } + case PAPER_DEFAULT: + break; } docstring const g_options = trim(ods.str(), ","); os << "\\usepackage"; @@ -1655,7 +1613,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, if (isbackgroundcolor == true) { // only require color here, the background color will be defined // in LaTeXFeatures.cpp to avoid interferences with the LaTeX - // package pdfpages + // package pdfpages features.require("color"); features.require("pagecolor"); } @@ -1664,7 +1622,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, if (isfontcolor == true) { // only require color here, the font color will be defined // in LaTeXFeatures.cpp to avoid interferences with the LaTeX - // package pdfpages + // package pdfpages features.require("color"); features.require("fontcolor"); } @@ -1717,6 +1675,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // Now insert the LyX specific LaTeX commands... docstring lyxpreamble; + features.resolveAlternatives(); if (output_sync) { if (!output_sync_macro.empty()) @@ -1734,7 +1693,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // we decided therefore to load color always before babel, see // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg144349.html lyxpreamble += from_ascii(features.getColorOptions()); - + // If we use hyperref, jurabib, japanese, or vietnamese, we have to call babel before them. if (use_babel && (features.isRequired("jurabib") @@ -1777,7 +1736,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // avoid errors with algorithm floats. // use hyperref explicitly if it is required if (features.isRequired("hyperref")) { - // pass what we have to stream here, since we need + // pass what we have to stream here, since we need // to access the stream itself in PDFOptions. os << lyxpreamble; @@ -1908,7 +1867,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, lyxpreamble += "[" + from_ascii(language->polyglossiaOpts()) + "]"; lyxpreamble += "{" + from_ascii(language->polyglossia()) + "}\n"; // now setup the other languages - std::map const polylangs = + std::map const polylangs = features.getPolyglossiaLanguages(); for (std::map::const_iterator mit = polylangs.begin(); mit != polylangs.end() ; ++mit) { @@ -1983,7 +1942,7 @@ bool BufferParams::setBaseClass(string const & classname) LYXERR(Debug::TCLASS, "setBaseClass: " << classname); LayoutFileList & bcl = LayoutFileList::get(); if (!bcl.haveClass(classname)) { - docstring s = + docstring s = bformat(_("The layout file:\n" "%1$s\n" "could not be found. A default textclass with default\n" @@ -1996,7 +1955,7 @@ bool BufferParams::setBaseClass(string const & classname) bool const success = bcl[classname].load(); if (!success) { - docstring s = + docstring s = bformat(_("Due to some error in it, the layout file:\n" "%1$s\n" "could not be loaded. A default textclass with default\n" @@ -2017,7 +1976,7 @@ LayoutFile const * BufferParams::baseClass() const { if (LayoutFileList::get().haveClass(pimpl_->baseClass_)) return &(LayoutFileList::get()[pimpl_->baseClass_]); - else + else return 0; } @@ -2057,7 +2016,7 @@ bool BufferParams::addLayoutModule(string const & modName) LayoutModuleList::const_iterator it = layout_modules_.begin(); LayoutModuleList::const_iterator end = layout_modules_.end(); for (; it != end; it++) - if (*it == modName) + if (*it == modName) return false; layout_modules_.push_back(modName); return true; @@ -2088,6 +2047,13 @@ bool BufferParams::isExportable(string const & format) const } +namespace { +bool formatSorter(Format const * lhs, Format const * rhs) { + return _(lhs->prettyname()) < _(rhs->prettyname()); +} +} + + vector BufferParams::exportableFormats(bool only_viewable) const { vector const backs = backends(); @@ -2104,22 +2070,23 @@ vector BufferParams::exportableFormats(bool only_viewable) const theConverters().getReachable(*it, only_viewable, false, excludes); result.insert(result.end(), r.begin(), r.end()); } + sort(result.begin(), result.end(), formatSorter); return result; } bool BufferParams::isExportableFormat(string const & format) const { - typedef vector Formats; - Formats formats; - formats = exportableFormats(true); - Formats::const_iterator fit = formats.begin(); - Formats::const_iterator end = formats.end(); - for (; fit != end ; ++fit) { - if ((*fit)->name() == format) - return true; - } - return false; + typedef vector Formats; + Formats formats; + formats = exportableFormats(true); + Formats::const_iterator fit = formats.begin(); + Formats::const_iterator end = formats.end(); + for (; fit != end ; ++fit) { + if ((*fit)->name() == format) + return true; + } + return false; } @@ -2280,7 +2247,7 @@ void BufferParams::readLanguage(Lexer & lex) void BufferParams::readGraphicsDriver(Lexer & lex) { - if (!lex.next()) + if (!lex.next()) return; string const tmptok = lex.getString(); @@ -2306,7 +2273,7 @@ void BufferParams::readGraphicsDriver(Lexer & lex) void BufferParams::readBullets(Lexer & lex) { - if (!lex.next()) + if (!lex.next()) return; int const index = lex.getInteger(); @@ -2326,7 +2293,7 @@ void BufferParams::readBullets(Lexer & lex) void BufferParams::readBulletsLaTeX(Lexer & lex) { // The bullet class should be able to read this. - if (!lex.next()) + if (!lex.next()) return; int const index = lex.getInteger(); lex.next(true); @@ -2368,9 +2335,9 @@ void BufferParams::readRemovedModules(Lexer & lex) removed_modules_.push_back(mod); lex.eatLine(); } - // now we want to remove any removed modules that were previously - // added. normally, that will be because default modules were added in - // setBaseClass(), which gets called when \textclass is read at the + // now we want to remove any removed modules that were previously + // added. normally, that will be because default modules were added in + // setBaseClass(), which gets called when \textclass is read at the // start of the read. list::const_iterator rit = removed_modules_.begin(); list::const_iterator const ren = removed_modules_.end(); @@ -2404,11 +2371,7 @@ void BufferParams::readIncludeonly(Lexer & lex) string BufferParams::paperSizeName(PapersizePurpose purpose) const { - char real_papersize = papersize; - if (real_papersize == PAPER_DEFAULT) - real_papersize = lyxrc.default_papersize; - - switch (real_papersize) { + switch (papersize) { case PAPER_DEFAULT: // could be anything, so don't guess return string(); @@ -2759,7 +2722,7 @@ string const BufferParams::loadFonts(string const & rm, * -- add more GUI options? * -- add more fonts (fonts for other scripts) * -- if there's a way to find out if a font really supports - * OldStyle, enable/disable the widget accordingly. + * OldStyle, enable/disable the widget accordingly. */ if (use_systemfonts && features.isAvailable("fontspec")) { // "Mapping=tex-text" and "Ligatures=TeX" are equivalent. @@ -2783,8 +2746,8 @@ string const BufferParams::loadFonts(string const & rm, if (sf != "default") { string const sans = parseFontName(sf); if (sfscale != 100) - os << "\\setsansfont[Scale=" - << float(sfscale) / 100 + os << "\\setsansfont[Scale=" + << float(sfscale) / 100 << "," << texmapping << "]{" << sans << "}\n"; else @@ -2794,8 +2757,8 @@ string const BufferParams::loadFonts(string const & rm, if (tt != "default") { string const mono = parseFontName(tt); if (ttscale != 100) - os << "\\setmonofont[Scale=" - << float(ttscale) / 100 + os << "\\setmonofont[Scale=" + << float(ttscale) / 100 << "]{" << mono << "}\n"; else