X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextClass.cpp;h=43abe6769bcedd67cd416217e6fe155c2df36eff;hb=71a57e0f4df9d2b860ec2d060cc30043206c335d;hp=2fb1bd28a2139b1986ed3519a648141682aa4cb5;hpb=5e385d0513069d53e18ff0254ecf3cdf92fb4587;p=lyx.git
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index 2fb1bd28a2..43abe6769b 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 = 74; // spitz: NewlineCmd
+int const LAYOUT_FORMAT = 75; // spitz: FreeSpacing (Argument)
// Layout format for the current lyx file format. Controls which format is
@@ -1280,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_) {
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_) {
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;
}
}
@@ -1927,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 += ".";