The branch, master, has been updated. - Log -----------------------------------------------------------------
commit cd17d87e47d522c3c848a49ac63602a0a8a1b635 Author: Julien Rioux <[email protected]> Date: Mon Jan 14 17:26:55 2013 +0100 Implement plain text export of BibTeX bibliography (fixes #8487). diff --git a/src/insets/InsetBibtex.cpp b/src/insets/InsetBibtex.cpp index 04d8d25..26f0de4 100644 --- a/src/insets/InsetBibtex.cpp +++ b/src/insets/InsetBibtex.cpp @@ -928,6 +928,54 @@ void InsetBibtex::validate(LaTeXFeatures & features) const } +int InsetBibtex::plaintext(odocstream & os, OutputParams const &) const +{ + BiblioInfo bibinfo = buffer().masterBibInfo(); + bibinfo.makeCitationLabels(buffer()); + vector<docstring> const & cites = bibinfo.citedEntries(); + CiteEngineType const engine_type = buffer().params().citeEngineType(); + bool const numbers = (engine_type == ENGINE_TYPE_NUMERICAL); + + docstring refoutput; + docstring const reflabel = buffer().B_("References"); + + refoutput += reflabel + "\n\n"; + + // Now we loop over the entries + vector<docstring>::const_iterator vit = cites.begin(); + vector<docstring>::const_iterator const ven = cites.end(); + for (; vit != ven; ++vit) { + BiblioInfo::const_iterator const biit = bibinfo.find(*vit); + if (biit == bibinfo.end()) + continue; + BibTeXInfo const & entry = biit->second; + docstring citekey; + if (numbers) + citekey = entry.citeNumber(); + else { + docstring const auth = entry.getAbbreviatedAuthor(buffer(), false); + // we do it this way so as to access the xref, if necessary + // note that this also gives us the modifier + docstring const year = bibinfo.getYear(*vit, buffer(), true); + if (!auth.empty() && !year.empty()) + citekey = auth + ' ' + year; + } + if (citekey.empty()) { + citekey = entry.label(); + if (citekey.empty()) + citekey = entry.key(); + } + refoutput += "[" + citekey + "] "; + // FIXME Right now, we are calling BibInfo::getInfo on the key, + // which will give us all the cross-referenced info. But for every + // entry, so there's a lot of repitition. This should be fixed. + refoutput += bibinfo.getInfo(entry.key(), buffer(), false) + "\n\n"; + } + os << refoutput; + return refoutput.size(); +} + + // FIXME // docstring InsetBibtex::entriesAsXHTML(vector<docstring> const & entries) // And then here just: entriesAsXHTML(buffer().masterBibInfo().citedEntries()) diff --git a/src/insets/InsetBibtex.h b/src/insets/InsetBibtex.h index 3b85101..6883191 100644 --- a/src/insets/InsetBibtex.h +++ b/src/insets/InsetBibtex.h @@ -52,6 +52,8 @@ public: /// void latex(otexstream &, OutputParams const &) const; /// + int plaintext(odocstream &, OutputParams const &) const; + /// void collectBibKeys(InsetIterator const &) const; /// void validate(LaTeXFeatures &) const; ----------------------------------------------------------------------- Summary of changes: src/insets/InsetBibtex.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++ src/insets/InsetBibtex.h | 2 + 2 files changed, 50 insertions(+), 0 deletions(-) hooks/post-receive -- The LyX Source Repository
