+ // FIXME XHTML
+ // It'd be better to be able to get this from an InsetLayout, but at present
+ // InsetLayouts do not seem really to work for things that aren't InsetTexts.
+ if (features.runparams().flavor == OutputParams::HTML)
+ features.addCSSSnippet("div.bibtexentry { margin-left: 2em; text-indent: -2em; }\n"
+ "span.bibtexlabel:before{ content: \"[\"; }\n"
+ "span.bibtexlabel:after{ content: \"] \"; }");
+}
+
+
+// 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();
+ CiteEngineType const engine_type = buffer().params().citeEngineType();
+ bool const numbers = (engine_type == ENGINE_TYPE_NUMERICAL);
+
+ docstring reflabel = from_ascii("References");
+ Language const * l = buffer().params().language;
+ if (l)
+ reflabel = translateIfPossible(reflabel, l->code());
+
+ xs << html::StartTag("h2", "class='bibtex'")
+ << reflabel
+ << html::EndTag("h2")
+ << html::StartTag("div", "class='bibtex'");
+
+ // 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;
+ xs << html::StartTag("div", "class='bibtexentry'");
+ // FIXME XHTML
+ // The same name/id problem we have elsewhere.
+ string const attr =
+ "id='LyXCite-" + to_utf8(html::cleanAttr(entry.key())) + "'";
+ 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 << html::StartTag("span", "class='bibtexlabel'")
+ << citekey
+ << 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 << html::StartTag("span", "class='bibtexinfo'")
+ << XHTMLStream::ESCAPE_AND
+ << bibinfo.getInfo(entry.key(), buffer(), true)
+ << html::EndTag("span")
+ << html::EndTag("div")
+ << html::CR();
+ }
+ xs << html::EndTag("div");
+ return docstring();