static regex const reg2("(.*)(\\{%suffix%\\[\\[)([^\\]]+)(\\]\\]\\})(.*)");
static regex const reg3("(.*)(\\{%prefix%\\[\\[)([^\\]]+)(\\]\\]\\})(.*)");
smatch sub;
+ // Changing the first parameter of regex_match() may corrupt the
+ // second one. In this case we use the temporary string tmp.
if (regex_match(scheme, sub, reg1)) {
res = sub.str(1);
if (!prename.empty())
res += sub.str(5);
}
if (regex_match(res, sub, reg2)) {
- res = sub.str(1);
+ string tmp = sub.str(1);
if (!suffix.empty())
- res += sub.str(3);
- res += sub.str(5);
+ tmp += sub.str(3);
+ res = tmp + sub.str(5);
}
if (regex_match(res, sub, reg3)) {
- res = sub.str(1);
+ string tmp = sub.str(1);
if (!prefix.empty())
- res += sub.str(3);
- res += sub.str(5);
+ tmp += sub.str(3);
+ res = tmp + sub.str(5);
}
docstring result = from_ascii(res);
result = subst(result, from_ascii("%prename%"), prename);
return ret;
}
-} // anon namespace
+} // namespace
//////////////////////////////////////////////////////////////////////
// These are defined in the styles
string const etal =
- buf ? buf->params().documentClass().getCiteMacro(engine_type, "_etal")
+ buf ? buf->params().documentClass().getCiteMacro(engine_type, "B_etal")
: " et al.";
string const namesep =
- buf ? buf->params().documentClass().getCiteMacro(engine_type, "_namesep")
+ buf ? buf->params().documentClass().getCiteMacro(engine_type, "B_namesep")
: ", ";
string const lastnamesep =
- buf ? buf->params().documentClass().getCiteMacro(engine_type, "_lastnamesep")
+ buf ? buf->params().documentClass().getCiteMacro(engine_type, "B_lastnamesep")
: ", and ";
string const pairnamesep =
- buf ? buf->params().documentClass().getCiteMacro(engine_type, "_pairnamesep")
+ buf ? buf->params().documentClass().getCiteMacro(engine_type, "B_pairnamesep")
: " and ";
string firstnameform =
buf ? buf->params().documentClass().getCiteMacro(engine_type, "!firstnameform")
}
-} // anon namespace
+} // namespace
/* FIXME
Bug #9131 revealed an oddity in how we are generating citation information
fmt = from_utf8(val) + fmt.substr(1);
counter += 1;
continue;
- } else if (key[0] == '_') {
- // a translatable bit
+ } else if (prefixIs(key, "B_")) {
+ // a translatable bit (to the Buffer language)
string const val =
buf.params().documentClass().getCiteMacro(engine_type, key);
docstring const trans =
translateIfPossible(from_utf8(val), buf.params().language->code());
ret << trans;
+ } else if (key[0] == '_') {
+ // a translatable bit (to the GUI language)
+ string const val =
+ buf.params().documentClass().getCiteMacro(engine_type, key);
+ docstring const trans =
+ translateIfPossible(from_utf8(val));
+ ret << trans;
} else {
docstring const val =
getValueForKey(key, buf, ci, xrefs, max_keysize);
}
};
-} // namespace anon
+} // namespace
vector<docstring> const BiblioInfo::getXRefs(BibTeXInfo const & data, bool const nested) const
|| (lauth == rauth && lyear == ryear && ltitl < rtitl);
}
-}
+} // namespace
void BiblioInfo::collectCitedEntries(Buffer const & buf)