+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();
+}
+
+