X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextClass.cpp;h=7a4975d19045ce2c4267986b1d2b8f4107460c50;hb=16d5c49b383841826d1bc563e2d392e12e497ed8;hp=65c547883cd9d1784eccedf0733b40e5122fbea9;hpb=f6d4bce12303a2f30ea129ee86e7f7d879668260;p=lyx.git diff --git a/src/TextClass.cpp b/src/TextClass.cpp index 65c547883c..7a4975d190 100644 --- a/src/TextClass.cpp +++ b/src/TextClass.cpp @@ -62,7 +62,7 @@ namespace lyx { // You should also run the development/tools/updatelayouts.py script, // to update the format of all of our layout files. // -int const LAYOUT_FORMAT = 62; //spitz PassThru for arguments. +int const LAYOUT_FORMAT = 63; //spitz: new tags CiteFramework, MaxCiteNames, extended InsetCite syntax. // Layout format for the current lyx file format. Controls which format is @@ -155,7 +155,7 @@ TextClass::TextClass() outputType_(LATEX), outputFormat_("latex"), defaultfont_(sane_font), titletype_(TITLE_COMMAND_AFTER), titlename_("maketitle"), - min_toclevel_(0), max_toclevel_(0), + min_toclevel_(0), max_toclevel_(0), maxcitenames_(2), cite_full_author_list_(true) { } @@ -222,6 +222,7 @@ enum TextClassTags { TC_CITEENGINETYPE, TC_CITEFORMAT, TC_CITEFRAMEWORK, + TC_MAXCITENAMES, TC_DEFAULTBIBLIO, TC_FULLAUTHORLIST, TC_OUTLINERNAME @@ -256,6 +257,7 @@ LexerKeyword textClassTags[] = { { "input", TC_INPUT }, { "insetlayout", TC_INSETLAYOUT }, { "leftmargin", TC_LEFTMARGIN }, + { "maxcitenames", TC_MAXCITENAMES }, { "modifystyle", TC_MODIFYSTYLE }, { "nocounter", TC_NOCOUNTER }, { "nofloat", TC_NOFLOAT }, @@ -461,8 +463,13 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) case TC_INPUT: // Include file if (lexrc.next()) { + FileName tmp; string const inc = lexrc.getString(); - FileName tmp = libFileSearch("layouts", inc, + if (!path().empty() && (prefixIs(inc, "./") || + prefixIs(inc, "../"))) + tmp = fileSearch(path(), inc, "layout"); + else + tmp = libFileSearch("layouts", inc, "layout"); if (tmp.empty()) { @@ -543,7 +550,7 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) else { Layout lay; // false positive from coverity - // coverity[CHECKED_RETURN] + // coverity[checked_return] readStyle(lexrc, lay); } break; @@ -765,6 +772,11 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) citeframework_ = rtrim(lexrc.getString()); break; + case TC_MAXCITENAMES: + lexrc.next(); + maxcitenames_ = size_t(lexrc.getInteger()); + break; + case TC_DEFAULTBIBLIO: if (lexrc.next()) { vector const dbs = @@ -772,9 +784,12 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) vector::const_iterator it = dbs.begin(); vector::const_iterator end = dbs.end(); for (; it != end; ++it) { - if (!contains(*it, ':')) - cite_default_biblio_style_[opt_enginetype_] = *it; - else { + if (!contains(*it, ':')) { + vector const enginetypes = + getVectorFromString(opt_enginetype_, "|"); + for (string const &s: enginetypes) + cite_default_biblio_style_[s] = *it; + } else { string eng; string const db = split(*it, eng, ':'); cite_default_biblio_style_[eng] = db; @@ -1087,6 +1102,8 @@ bool TextClass::readCiteEngine(Lexer & lexrc) latex_cmd += ichar; else if (mode == StarDesc) stardesc += ichar; + else if (ichar == '$') + cs.hasQualifiedList = true; else if (ichar == '*') cs.hasStarredVersion = true; else if (ichar == '[' && cs.textAfter) @@ -1406,18 +1423,6 @@ bool TextClass::readOutlinerName(Lexer & lexrc) } -docstring TextClass::outlinerName(std::string const & type) const -{ - std::map::const_iterator const it - = outliner_names_.find(type); - if (it == outliner_names_.end()) { - LYXERR0("Missing OutlinerName for " << type << "!"); - return from_utf8(type); - } else - return it->second; -} - - string const & TextClass::prerequisites(string const & sep) const { if (contains(prerequisites_, ',')) { @@ -1805,10 +1810,12 @@ Layout const & DocumentClass::htmlTOCLayout() const } -string const & DocumentClass::getCiteFormat(CiteEngineType const & type, - string const & entry, string const & fallback) const +string const DocumentClass::getCiteFormat(CiteEngineType const & type, + string const & entry, bool const punct, string const & fallback) const { - static string default_format = "{%author%[[%author%, ]][[{%editor%[[%editor%, ed., ]]}]]}\"%title%\"{%journal%[[, {!!}%journal%{!!}]][[{%publisher%[[, %publisher%]][[{%institution%[[, %institution%]]}]]}]]}{%year%[[ (%year%)]]}{%pages%[[, %pages%]]}."; + string default_format = "{%fullnames:author%[[%fullnames:author%, ]][[{%fullnames:editor%[[%fullnames:editor%, ed., ]]}]]}\"%title%\"{%journal%[[, {!!}%journal%{!!}]][[{%publisher%[[, %publisher%]][[{%institution%[[, %institution%]]}]]}]]}{%year%[[ (%year%)]]}{%pages%[[, %pages%]]}"; + if (punct) + default_format += "."; map >::const_iterator itype = cite_formats_.find(type); if (itype == cite_formats_.end()) @@ -1818,6 +1825,8 @@ string const & DocumentClass::getCiteFormat(CiteEngineType const & type, it = itype->second.find(fallback); if (it == itype->second.end()) return default_format; + if (punct) + return it->second + "."; return it->second; }