#include "FuncRequest.h"
#include "FuncStatus.h"
#include "LaTeXFeatures.h"
-#include "MetricsInfo.h"
#include "output_xhtml.h"
#include "OutputParams.h"
#include "TextClass.h"
InsetBibtex::~InsetBibtex()
{
- if (isBufferValid())
+ if (isBufferLoaded())
buffer_->invalidateBibinfoCache();
}
}
+// FIXME
+// docstring InsetBibtex::entriesAsXHTML(vector<docstring> const & entries)
+// And then here just: entriesAsXHTML(buffer().masterBibInfo().citedEntries())
docstring InsetBibtex::xhtml(XHTMLStream & xs, OutputParams const &) const
{
BiblioInfo const & bibinfo = buffer().masterBibInfo();
vector<docstring> const & cites = bibinfo.citedEntries();
- xs << StartTag("h2", "class='bibtex'")
+ CiteEngine const engine = buffer().params().citeEngine();
+ bool const numbers =
+ (engine == ENGINE_BASIC || engine == ENGINE_NATBIB_NUMERICAL);
+
+ xs << html::StartTag("h2", "class='bibtex'")
<< _("References")
- << EndTag("h2")
- << StartTag("div", "class='bibtex'");
+ << html::EndTag("h2")
+ << html::StartTag("div", "class='bibtex'");
// Now we loop over the entries
vector<docstring>::const_iterator vit = cites.begin();
if (biit == bibinfo.end())
continue;
BibTeXInfo const & entry = biit->second;
- xs << StartTag("div", "class='bibtexentry'");
+ xs << html::StartTag("div", "class='bibtexentry'");
// FIXME XHTML
// The same name/id problem we have elsewhere.
string const attr = "id='" + to_utf8(entry.key()) + "'";
- xs << CompTag("a", attr);
- docstring citekey = entry.citeKey();
+ xs << html::CompTag("a", attr);
+ docstring citekey;
+ if (numbers)
+ citekey = entry.citeNumber();
+ else {
+ docstring const auth = entry.getAbbreviatedAuthor();
+ // 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, true);
+ if (!auth.empty() && !year.empty())
+ citekey = auth + ' ' + year;
+ }
if (citekey.empty()) {
citekey = entry.label();
if (citekey.empty())
citekey = entry.key();
}
- xs << StartTag("span", "class='bibtexlabel'")
+ xs << html::StartTag("span", "class='bibtexlabel'")
<< citekey
- << EndTag("span");
+ << html::EndTag("span");
// 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.
- xs << StartTag("span", "class='bibtexinfo'")
- << bibinfo.getInfo(entry.key())
- << EndTag("span")
- << EndTag("div");
+ xs << html::StartTag("span", "class='bibtexinfo'")
+ << bibinfo.getInfo(entry.key(), buffer(), true)
+ << html::EndTag("span")
+ << html::EndTag("div");
+ xs.cr();
}
- xs << EndTag("div");
+ xs << html::EndTag("div");
return docstring();
}