- bibfiles_.clear();
-
- string tmp;
- string emb;
-
- string bibfiles = to_utf8(bibParam);
- string embedStatus = to_utf8(embedParam);
-
- LYXERR(Debug::FILES, "Create bib files from parameters "
- << bibfiles << " and " << embedStatus);
-
- bibfiles = split(bibfiles, tmp, ',');
- embedStatus = split(embedStatus, emb, ',');
-
- while (!tmp.empty()) {
- EmbeddedFile file(changeExtension(tmp, "bib"), buffer().filePath());
-
- file.setInzipName(emb);
- file.setEmbed(!emb.empty());
- file.enable(buffer().embedded(), &buffer(), false);
- bibfiles_.push_back(file);
- // Get next file name
- bibfiles = split(bibfiles, tmp, ',');
- embedStatus = split(embedStatus, emb, ',');
- }
-}
-
-
-void InsetBibtex::updateParam()
-{
- docstring bibfiles;
- docstring embed;
-
- bool first = true;
-
- EmbeddedFileList::iterator it = bibfiles_.begin();
- EmbeddedFileList::iterator en = bibfiles_.end();
- for (; it != en; ++it) {
- if (!first) {
- bibfiles += ',';
- embed += ',';
- } else
- first = false;
- bibfiles += from_utf8(it->outputFilename(buffer().filePath()));
- if (it->embedded())
- embed += from_utf8(it->inzipName());
+ 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();