X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextClass.cpp;h=0dd44340dcf2ee861e589b17dcfe1b5f05f73cea;hb=175711046db2b986550318fa78d901628de28cb8;hp=7e813626b72f17517c2af5e1f7fe3abea490d237;hpb=e5fc7327e398c6b243113f6a8f624ed917287ee4;p=lyx.git diff --git a/src/TextClass.cpp b/src/TextClass.cpp index 7e813626b7..0dd44340dc 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 = 70; // rkh: InsetLayout EditExternal +int const LAYOUT_FORMAT = 74; // spitz: NewlineCmd // Layout format for the current lyx file format. Controls which format is @@ -151,9 +151,9 @@ TextClass::TextClass() : loaded_(false), tex_class_avail_(false), opt_enginetype_("authoryear|numerical"), opt_fontsize_("10|11|12"), opt_pagestyle_("empty|plain|headings|fancy"), pagestyle_("default"), - columns_(1), sides_(OneSide), secnumdepth_(3), tocdepth_(3), - outputType_(LATEX), outputFormat_("latex"), has_output_format_(false), - defaultfont_(sane_font), + tablestyle_("default"), columns_(1), sides_(OneSide), secnumdepth_(3), + tocdepth_(3), outputType_(LATEX), outputFormat_("latex"), + has_output_format_(false), defaultfont_(sane_font), titletype_(TITLE_COMMAND_AFTER), titlename_("maketitle"), min_toclevel_(0), max_toclevel_(0), maxcitenames_(2), cite_full_author_list_(true) @@ -226,7 +226,8 @@ enum TextClassTags { TC_MAXCITENAMES, TC_DEFAULTBIBLIO, TC_FULLAUTHORLIST, - TC_OUTLINERNAME + TC_OUTLINERNAME, + TC_TABLESTYLE }; @@ -279,6 +280,7 @@ LexerKeyword textClassTags[] = { { "secnumdepth", TC_SECNUMDEPTH }, { "sides", TC_SIDES }, { "style", TC_STYLE }, + { "tablestyle", TC_TABLESTYLE }, { "titlelatexname", TC_TITLELATEXNAME }, { "titlelatextype", TC_TITLELATEXTYPE }, { "tocdepth", TC_TOCDEPTH } @@ -863,6 +865,11 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) case TC_OUTLINERNAME: error = !readOutlinerName(lexrc); break; + + case TC_TABLESTYLE: + lexrc.next(); + tablestyle_ = rtrim(lexrc.getString()); + break; } // end of switch } @@ -1161,7 +1168,7 @@ bool TextClass::readCiteEngine(Lexer & lexrc, ReadType rt, bool const add) cite_command_aliases_[s] = lyx_cmd; } vector const stardescs = getVectorFromString(stardesc, "!"); - int size = stardesc.size(); + int size = int(stardesc.size()); if (size > 0) cs.stardesc = stardescs[0]; if (size > 1) @@ -1198,14 +1205,14 @@ bool TextClass::readCiteEngine(Lexer & lexrc, ReadType rt, bool const add) // Add the styles from AddToCiteEngine to the class' styles // (but only if they are not yet defined) - for (auto const cis : class_cite_styles_) { + for (auto const & cis : class_cite_styles_) { // Only consider the current CiteEngineType if (!(type & cis.first)) continue; - for (auto const ciss : cis.second) { + for (auto const & ciss : cis.second) { bool defined = false; // Check if the style "name" is already def'ed - for (auto const av : getCiteStyles(cis.first)) + for (auto const & av : getCiteStyles(cis.first)) if (av.name == ciss.name) defined = true; if (!defined) { @@ -1273,36 +1280,58 @@ bool TextClass::readCiteFormat(Lexer & lexrc, ReadType rt) continue; if (initchar == '!' || initchar == '_' || prefixIs(etype, "B_")) { bool defined = false; + bool aydefined = false; + bool numdefined = false; // Check if the macro is already def'ed - for (auto const cm : cite_macros_) { + for (auto const & cm : cite_macros_) { if (!(type & cm.first)) continue; - if (cm.second.find(etype) != cm.second.end()) - defined = true; + if (cm.second.find(etype) != cm.second.end()) { + if (type == cm.first) + // defined as default or specific type + defined = true; + if (cm.first == ENGINE_TYPE_AUTHORYEAR) + // defined for author-year + aydefined = true; + else if (cm.first == ENGINE_TYPE_NUMERICAL) + // defined for numerical + numdefined = true; + } } if (!defined || overwrite) { - if (type & ENGINE_TYPE_AUTHORYEAR) + if (type & ENGINE_TYPE_AUTHORYEAR && (type != ENGINE_TYPE_DEFAULT || !aydefined)) cite_macros_[ENGINE_TYPE_AUTHORYEAR][etype] = definition; - if (type & ENGINE_TYPE_NUMERICAL) + if (type & ENGINE_TYPE_NUMERICAL && (type != ENGINE_TYPE_DEFAULT || !numdefined)) cite_macros_[ENGINE_TYPE_NUMERICAL][etype] = definition; - if (type & ENGINE_TYPE_DEFAULT) + if (type == ENGINE_TYPE_DEFAULT) cite_macros_[ENGINE_TYPE_DEFAULT][etype] = definition; } } else { bool defined = false; + bool aydefined = false; + bool numdefined = false; // Check if the format is already def'ed - for (auto const cm : cite_formats_) { + for (auto const & cm : cite_formats_) { if (!(type & cm.first)) continue; - if (cm.second.find(etype) != cm.second.end()) - defined = true; + if (cm.second.find(etype) != cm.second.end()) { + if (type == cm.first) + // defined as default or specific type + defined = true; + if (cm.first == ENGINE_TYPE_AUTHORYEAR) + // defined for author-year + aydefined = true; + else if (cm.first == ENGINE_TYPE_NUMERICAL) + // defined for numerical + numdefined = true; + } } if (!defined || overwrite){ - if (type & ENGINE_TYPE_AUTHORYEAR) + if (type & ENGINE_TYPE_AUTHORYEAR && (type != ENGINE_TYPE_DEFAULT || !aydefined)) cite_formats_[ENGINE_TYPE_AUTHORYEAR][etype] = definition; - if (type & ENGINE_TYPE_NUMERICAL) + if (type & ENGINE_TYPE_NUMERICAL && (type != ENGINE_TYPE_DEFAULT || !numdefined)) cite_formats_[ENGINE_TYPE_NUMERICAL][etype] = definition; - if (type & ENGINE_TYPE_DEFAULT) + if (type == ENGINE_TYPE_DEFAULT) cite_formats_[ENGINE_TYPE_DEFAULT][etype] = definition; } } @@ -1920,7 +1949,9 @@ Layout const & DocumentClass::htmlTOCLayout() const string const DocumentClass::getCiteFormat(CiteEngineType const & type, string const & entry, bool const punct, string const & fallback) const { - string default_format = "{%fullnames:author%[[%fullnames:author%, ]][[{%fullnames:editor%[[%fullnames: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 += ".";