#include "Format.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
-#include "Language.h"
#include "LaTeXFeatures.h"
#include "output_xhtml.h"
#include "OutputParams.h"
#include "support/gettext.h"
#include "support/lstrings.h"
#include "support/os.h"
-#include "support/Path.h"
+#include "support/PathChanger.h"
#include "support/textutils.h"
#include <limits>
docstring key;
if (!readTypeOrKey(key, ifs, from_ascii(","), from_ascii("}"), keepCase)) {
- lyxerr << "BibTeX Parser: Unable to read key for entry type:" <<
+ lyxerr << "BibTeX Parser: Unable to read key for entry type:" <<
entryType << "." << std::endl;
continue;
}
file = FileName(makeAbsPath(texfile, buf.filePath()));
return file;
}
-
+
bool InsetBibtex::addDatabase(docstring const & db)
{
}
+int InsetBibtex::plaintext(odocstream & os, OutputParams const &) const
+{
+ BiblioInfo bibinfo = buffer().masterBibInfo();
+ bibinfo.makeCitationLabels(buffer());
+ vector<docstring> const & cites = bibinfo.citedEntries();
+
+ docstring refoutput;
+ docstring const reflabel = buffer().B_("References");
+
+ refoutput += reflabel + "\n\n";
+
+ // 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;
+ refoutput += "[" + entry.label() + "] ";
+ // 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.
+ refoutput += bibinfo.getInfo(entry.key(), buffer(), false) + "\n\n";
+ }
+ os << refoutput;
+ return refoutput.size();
+}
+
+
// FIXME
// docstring InsetBibtex::entriesAsXHTML(vector<docstring> const & entries)
// And then here just: entriesAsXHTML(buffer().masterBibInfo().citedEntries())
{
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());
+ docstring const reflabel = buffer().B_("References");
xs << html::StartTag("h2", "class='bibtex'")
<< reflabel
xs << html::StartTag("div", "class='bibtexentry'");
// FIXME XHTML
// The same name/id problem we have elsewhere.
- string const attr = "id='LyXCite-" + to_utf8(entry.key()) + "'";
+ 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
+ << entry.label()
<< 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