From 6adbf95f612957b468bde551bad265e1338c82ac Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Mon, 30 Nov 2009 22:48:10 +0000 Subject: [PATCH] Restore XHTML output for InsetBibtex. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32260 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/InsetBibtex.cpp | 49 ++++++++++++++++++++++---------------- src/insets/InsetBibtex.h | 4 ++-- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/insets/InsetBibtex.cpp b/src/insets/InsetBibtex.cpp index 08f011645c..06f7dfcd13 100644 --- a/src/insets/InsetBibtex.cpp +++ b/src/insets/InsetBibtex.cpp @@ -910,22 +910,19 @@ namespace { } -docstring InsetBibtex::xhtml(odocstream & os, OutputParams const &) const +docstring InsetBibtex::xhtml(XHTMLStream & xs, OutputParams const &) const { // We are going to collect all the citation keys used in the document, // getting them from the TOC. Toc const & toc = buffer().tocBackend().toc("citation"); Toc::const_iterator it = toc.begin(); - Toc::const_iterator en = toc.end(); + Toc::const_iterator const en = toc.end(); vector citekeys; for (; it != en; ++it) { if (it->str().empty()) continue; - vector keys = getVectorFromString(it->str()); - vector::const_iterator dit = keys.begin(); - vector::const_iterator den = keys.end(); - for (; dit != den; ++dit) - citekeys.push_back(*dit); + vector const keys = getVectorFromString(it->str()); + citekeys.insert(citekeys.end(), keys.begin(), keys.end()); } if (citekeys.empty()) return docstring(); @@ -934,17 +931,18 @@ docstring InsetBibtex::xhtml(odocstream & os, OutputParams const &) const // We now have a sorted, unique list of the keys used in this document. // We will now convert it to a list of the BibTeXInfo objects used in // this document... - // FIXME We need to do something here about cross-references, if we + // FIXME XHTML + // We need to do something here about cross-references, if we // want to be able to display them AS cross-references. Probably the // easiest thing to do is to loop over the list again and add whatever // cross-references we find, then sort and unique it, planning just to // add the cross-references to the bibliography. vector binfo; vector::const_iterator cit = citekeys.begin(); - vector::const_iterator cen = citekeys.end(); + vector::const_iterator const cen = citekeys.end(); BiblioInfo const & bi = buffer().masterBibInfo(); for (; cit != cen; ++cit) { - BiblioInfo::const_iterator bt = bi.find(*cit); + BiblioInfo::const_iterator const bt = bi.find(*cit); if (bt == bi.end()) continue; binfo.push_back(&(bt->second)); @@ -952,27 +950,36 @@ docstring InsetBibtex::xhtml(odocstream & os, OutputParams const &) const // ...and sort it. sort(binfo.begin(), binfo.end(), lSorter); // Finally, then, we are ready for output. - os << "

" << _("References") << "

\n"; - os << "
\n"; - vector::const_iterator vit = binfo.begin(); - vector::const_iterator ven = binfo.end(); + xs << StartTag("h2", "class='bibliography'"); + xs << _("References"); + xs << EndTag("h2"); + xs << StartTag("div", "class='bibliography'"); + // Now we loop over the entries + vector::const_iterator vit = binfo.begin(); + vector::const_iterator const ven = binfo.end(); for (; vit != ven; ++vit) { BibTeXInfo const * bip = *vit; - os << "

"; - os << ""; + xs << StartTag("div", "class='bibentry'"); + // FIXME XHTML + // The same name/id problem we have elsewhere. + string const attr = "id='" + to_utf8(bip->key()) + "'"; + xs << CompTag("a", attr); docstring label = bip->label(); if (label.empty()) label = bip->key(); - os << "[" << label << "] "; + xs << StartTag("span", "class='biblabel'"); + xs << "[" << label << "]"; + xs << 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. - os << "" << bi.getInfo(bip->key()) << ""; - os << "

\n"; + xs << StartTag("span", "class='bibinfo'"); + xs << bi.getInfo(bip->key()); + xs << EndTag("span"); + xs << EndTag("div"); } - - os << "
\n"; + xs << EndTag("div"); return docstring(); } diff --git a/src/insets/InsetBibtex.h b/src/insets/InsetBibtex.h index 7b37ee9524..7c85af1d87 100644 --- a/src/insets/InsetBibtex.h +++ b/src/insets/InsetBibtex.h @@ -52,11 +52,11 @@ public: /// void validate(LaTeXFeatures &) const; /// - docstring xhtml(odocstream &, OutputParams const &) const; + docstring xhtml(XHTMLStream &, OutputParams const &) const; /// static ParamInfo const & findInfo(std::string const &); /// - static std::string defaultCommand() { return "bibtex"; }; + static std::string defaultCommand() { return "bibtex"; } /// static bool isCompatibleCommand(std::string const & s) { return s == "bibtex"; } -- 2.39.2