From: Juergen Spitzmueller Date: Tue, 20 Sep 2016 09:34:17 +0000 (+0200) Subject: Amend 2c4673af58f6 X-Git-Tag: 2.2.3~197 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=5b2f5d056acdc9294c6e3cb069020f89d8bf2973;p=features.git Amend 2c4673af58f6 Also consider xrefs in crossref'ed entries. --- diff --git a/src/BiblioInfo.cpp b/src/BiblioInfo.cpp index a4a9323914..21c3b274cd 100644 --- a/src/BiblioInfo.cpp +++ b/src/BiblioInfo.cpp @@ -796,8 +796,18 @@ vector const BiblioInfo::getXRefs(BibTeXInfo const & data, bool const if (!data.isBibTeX()) return result; // Legacy crossref field. This is not nestable. - if (!nested && !data["crossref"].empty()) - result.push_back(data["crossref"]); + if (!nested && !data["crossref"].empty()) { + docstring const xrefkey = data["crossref"]; + result.push_back(xrefkey); + // However, check for nested xdatas + BiblioInfo::const_iterator it = find(xrefkey); + if (it != end()) { + BibTeXInfo const & xref = it->second; + vector const nxdata = getXRefs(xref, true); + if (!nxdata.empty()) + result.insert(result.end(), nxdata.begin(), nxdata.end()); + } + } // Biblatex's xdata field. Infinitely nestable. // XData field can consist of a comma-separated list of keys vector const xdatakeys = getVectorFromString(data["xdata"]);