docstring InsetCitation::generateLabel() const
{
- docstring const before = getParam("before");
- docstring const after = getParam("after");
+ docstring const & before = getParam("before");
+ docstring const & after = getParam("after");
docstring label;
CiteEngine const engine = buffer().params().citeEngine();
}
+int InsetCitation::xhtml(odocstream & os, OutputParams const &) const
+{
+ BiblioInfo const & bi = buffer().masterBibInfo();
+ docstring const & keyList = getParam("key");
+ if (keyList.empty())
+ return 0;
+
+ // FIXME We shuld do a better job outputing different things for the
+ // different citation styles. For now, we use square brackets for every
+ // case.
+ os << '[';
+ docstring const & before = getParam("before");
+ if (!before.empty())
+ os << before << " ";
+
+ vector<docstring> keys = getVectorFromString(keyList);
+ vector<docstring>::const_iterator it = keys.begin();
+ vector<docstring>::const_iterator en = keys.end();
+ bool first = true;
+ for (; it != en; ++it) {
+ BiblioInfo::const_iterator const bt = bi.find(*it);
+ if (bt == bi.end())
+ continue;
+ BibTeXInfo const & bibinfo = bt->second;
+ if (!first) {
+ os << ", ";
+ first = false;
+ }
+ docstring const & label = bibinfo.label();
+ docstring const & target = label.empty() ? *it : label;
+ os << "<a href='#" << *it << "'>" << target << "</a>";
+ }
+
+ docstring const & after = getParam("after");
+ if (!after.empty())
+ os << ", " << after;
+ os << "]\n";
+ return 0;
+}
+
+
void InsetCitation::tocString(odocstream & os) const
{
plaintext(os, OutputParams(0));
int plaintext(odocstream &, OutputParams const &) const;
///
int docbook(odocstream &, OutputParams const &) const;
+ ///
+ int xhtml(odocstream &, OutputParams const &) const;
/// the string that is passed to the TOC
void tocString(odocstream &) const;
///