commit 5b2f5d056acdc9294c6e3cb069020f89d8bf2973
Author: Juergen Spitzmueller <[email protected]>
Date: Tue Sep 20 11:34:17 2016 +0200
Amend 2c4673af58f6
Also consider xrefs in crossref'ed entries.
---
src/BiblioInfo.cpp | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/BiblioInfo.cpp b/src/BiblioInfo.cpp
index a4a9323..21c3b27 100644
--- a/src/BiblioInfo.cpp
+++ b/src/BiblioInfo.cpp
@@ -796,8 +796,18 @@ vector<docstring> 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<docstring> 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<docstring> const xdatakeys = getVectorFromString(data["xdata"]);