X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.cpp;h=5455847e963f08887e0e168a2e64b9452e026d11;hb=f5123ccfa82215030c70561af881175d92244492;hp=1448e31efa70d1aceca28905488a308fcbbed1c3;hpb=456827950bfcc1b5162bf4627a452167e0dee4c4;p=lyx.git diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 1448e31efa..5455847e96 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -74,7 +74,8 @@ static char const * const string_papersize[] = { "default", "custom", "letterpaper", "legalpaper", "executivepaper", "a0paper", "a1paper", "a2paper", "a3paper", "a4paper", "a5paper", "a6paper", "b0paper", "b1paper", "b2paper","b3paper", "b4paper", - "b5paper", "b6paper", "b0j", "b1j", "b2j", "b3j", "b4j", "b5j", + "b5paper", "b6paper", "c0paper", "c1paper", "c2paper", "c3paper", + "c4paper", "c5paper", "c6paper", "b0j", "b1j", "b2j", "b3j", "b4j", "b5j", "b6j", "" }; @@ -173,13 +174,20 @@ static PaperSizeTranslator initPaperSizeTranslator() translator.addPair(string_papersize[16], PAPER_B4); translator.addPair(string_papersize[17], PAPER_B5); translator.addPair(string_papersize[18], PAPER_B6); - translator.addPair(string_papersize[19], PAPER_JISB0); - translator.addPair(string_papersize[20], PAPER_JISB1); - translator.addPair(string_papersize[21], PAPER_JISB2); - translator.addPair(string_papersize[22], PAPER_JISB3); - translator.addPair(string_papersize[23], PAPER_JISB4); - translator.addPair(string_papersize[24], PAPER_JISB5); - translator.addPair(string_papersize[25], PAPER_JISB6); + translator.addPair(string_papersize[19], PAPER_C0); + translator.addPair(string_papersize[20], PAPER_C1); + translator.addPair(string_papersize[21], PAPER_C2); + translator.addPair(string_papersize[22], PAPER_C3); + translator.addPair(string_papersize[23], PAPER_C4); + translator.addPair(string_papersize[24], PAPER_C5); + translator.addPair(string_papersize[25], PAPER_C6); + translator.addPair(string_papersize[26], PAPER_JISB0); + translator.addPair(string_papersize[27], PAPER_JISB1); + translator.addPair(string_papersize[28], PAPER_JISB2); + translator.addPair(string_papersize[29], PAPER_JISB3); + translator.addPair(string_papersize[30], PAPER_JISB4); + translator.addPair(string_papersize[31], PAPER_JISB5); + translator.addPair(string_papersize[32], PAPER_JISB6); return translator; } @@ -355,6 +363,7 @@ BufferParams::BufferParams() use_amsmath = package_auto; use_esint = package_auto; use_mhchem = package_auto; + use_mathdots = package_auto; cite_engine_ = ENGINE_BASIC; use_bibtopic = false; use_indices = false; @@ -406,6 +415,7 @@ BufferParams::BufferParams() html_math_img_scale = 1.0; output_sync = false; + use_refstyle = true; } @@ -547,19 +557,19 @@ string BufferParams::readToken(Lexer & lex, string const & token, // 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 desc = + docstring const desc = translateIfPossible(from_utf8(baseClass()->description())); + docstring const prereqs = from_utf8(baseClass()->prerequisites()); docstring const msg = - bformat(_("The used document class\n" + bformat(_("The selected document class\n" "\t%1$s\n" "requires external files that are not available.\n" - "The document class can still be used, but LyX\n" - "will not be able to produce output until the\n" - "following prerequisites are installed:\n" + "The document class can still be used, but the\n" + "document cannot be compiled until the following\n" + "prerequisites are installed:\n" "\t%2$s\n" "See section 3.1.2.2 of the User's Guide for\n" - "more information."), - desc, from_utf8(baseClass()->prerequisites())); + "more information."), desc, prereqs); frontend::Alert::warning(_("Document class not available"), msg); } @@ -662,6 +672,10 @@ string BufferParams::readToken(Lexer & lex, string const & token, int usemhchem; lex >> usemhchem; use_mhchem = packagetranslator().find(usemhchem); + } else if (token == "\\use_mathdots") { + int usemathdots; + lex >> usemathdots; + use_mathdots = packagetranslator().find(usemathdots); } else if (token == "\\cite_engine") { string engine; lex >> engine; @@ -840,6 +854,8 @@ string BufferParams::readToken(Lexer & lex, string const & token, lex >> output_sync; } else if (token == "\\output_sync_macro") { lex >> output_sync_macro; + } else if (token == "\\use_refstyle") { + lex >> use_refstyle; } else { lyxerr << "BufferParams::readToken(): Unknown token: " << token << endl; @@ -961,11 +977,13 @@ void BufferParams::writeFile(ostream & os) const << "\n\\use_amsmath " << use_amsmath << "\n\\use_esint " << use_esint << "\n\\use_mhchem " << use_mhchem + << "\n\\use_mathdots " << use_mathdots << "\n\\cite_engine " << citeenginetranslator().find(cite_engine_) << "\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'; if (isbackgroundcolor == true) os << "\\backgroundcolor " << lyx::X11hexname(backgroundcolor) << '\n'; @@ -1127,6 +1145,8 @@ void BufferParams::validate(LaTeXFeatures & features) const features.require("esint"); if (use_mhchem == package_on) features.require("mhchem"); + if (use_mathdots == package_on) + features.require("mathdots"); // Document-level line spacing if (spacing().getSpace() != Spacing::Single && !spacing().isDefault()) @@ -1230,6 +1250,13 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, 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: @@ -1273,7 +1300,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, features.useLanguage(default_language); ostringstream language_options; - bool const use_babel = features.useBabel(); + bool const use_babel = features.useBabel() && !tclass.provides("babel"); if (use_babel) { language_options << features.getLanguages(); if (!language->babel().empty()) { @@ -1480,6 +1507,27 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, case PAPER_B6: ods << ",b6paper"; break; + case PAPER_C0: + ods << ",c0paper"; + break; + case PAPER_C1: + ods << ",c1paper"; + break; + case PAPER_C2: + ods << ",c2paper"; + break; + case PAPER_C3: + ods << ",c3paper"; + break; + case PAPER_C4: + ods << ",c4paper"; + break; + case PAPER_C5: + ods << ",c5paper"; + break; + case PAPER_C6: + ods << ",c6paper"; + break; case PAPER_JISB0: ods << ",b0j"; break; @@ -1536,6 +1584,13 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, 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: @@ -1732,7 +1787,9 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, texrow.newlines(lines); // set back for the rest lyxpreamble.clear(); - } + } else if (features.isRequired("nameref")) + // hyperref loads this automatically + lyxpreamble += "\\usepackage{nameref}\n"; // Will be surrounded by \makeatletter and \makeatother when not empty docstring atlyxpreamble; @@ -1889,12 +1946,14 @@ DocumentClass const & BufferParams::documentClass() const } -DocumentClass const * BufferParams::documentClassPtr() const { +DocumentClass const * BufferParams::documentClassPtr() const +{ return doc_class_; } -void BufferParams::setDocumentClass(DocumentClass const * const tc) { +void BufferParams::setDocumentClass(DocumentClass const * const tc) +{ // evil, but this function is evil doc_class_ = const_cast(tc); } @@ -2235,6 +2294,34 @@ string BufferParams::paperSizeName(PapersizePurpose purpose) const if (purpose == DVIPS || purpose == DVIPDFM) return string(); return "b6"; + case PAPER_C0: + if (purpose == DVIPS || purpose == DVIPDFM) + return string(); + return "c0"; + case PAPER_C1: + if (purpose == DVIPS || purpose == DVIPDFM) + return string(); + return "c1"; + case PAPER_C2: + if (purpose == DVIPS || purpose == DVIPDFM) + return string(); + return "c2"; + case PAPER_C3: + if (purpose == DVIPS || purpose == DVIPDFM) + return string(); + return "c3"; + case PAPER_C4: + if (purpose == DVIPS || purpose == DVIPDFM) + return string(); + return "c4"; + case PAPER_C5: + if (purpose == DVIPS || purpose == DVIPDFM) + return string(); + return "c5"; + case PAPER_C6: + if (purpose == DVIPS || purpose == DVIPDFM) + return string(); + return "c6"; case PAPER_JISB0: if (purpose == DVIPS || purpose == DVIPDFM) return string();