#include "insets/insetnote.h"
#include "insets/insetquotes.h"
#include "insets/insetlatexaccent.h"
-#include "insets/insetbib.h"
+#include "insets/insetbibitem.h"
+#include "insets/insetbibtex.h"
#include "insets/insetcite.h"
#include "insets/insetexternal.h"
#include "insets/insetindex.h"
using std::make_pair;
using std::vector;
using std::map;
-using std::max;
-using std::set;
using std::stack;
using std::list;
using std::for_each;
params.float_placement = lex.getString();
} else if (token == "\\align") {
int tmpret = lex.findToken(string_align);
- if (tmpret == -1) ++tmpret;
+ if (tmpret == -1)
+ ++tmpret;
int const tmpret2 = int(pow(2.0, tmpret));
par->params().align(LyXAlignment(tmpret2));
} else if (token == "\\added_space_top") {
inset->read(this, lex);
par->insertInset(pos, inset, font, current_change);
++pos;
+ } else if (token == "\\bibitem") { // ale970302
+ InsetCommandParams p("bibitem", "dummy");
+ InsetBibitem * inset = new InsetBibitem(p);
+ inset->read(this, lex);
+ par->insertInset(pos, inset, font, current_change);
+ ++pos;
} else if (token == "\\hfill") {
par->insertChar(pos, Paragraph::META_HFILL, font, current_change);
++pos;
istr >> aid;
istr >> ct;
current_change = Change(Change::DELETED, author_ids[aid], ct);
- } else if (token == "\\bibitem") { // ale970302
- if (!par->bibkey) {
- InsetCommandParams p("bibitem", "dummy");
- par->bibkey = new InsetBibKey(p);
- }
- par->bibkey->read(this, lex);
} else if (token == "\\the_end") {
the_end_read = true;
} else {
inset = new InsetCitation(inscmd);
} else if (cmdName == "bibitem") {
lex.printError("Wrong place for bibitem");
- inset = new InsetBibKey(inscmd);
+ inset = new InsetBibitem(inscmd);
} else if (cmdName == "BibTeX") {
inset = new InsetBibtex(inscmd);
} else if (cmdName == "index") {
// this is to change the linebreak to do it by word a bit more
// intelligent hopefully! (only in the case where we have a
- // max linelenght!) (Jug)
+ // max linelength!) (Jug)
string word;
}
-bool use_babel;
-
void Buffer::makeLaTeXFile(string const & fname,
string const & original_path,
case LATEX_ENVIRONMENT:
case LATEX_ITEM_ENVIRONMENT:
+ case LATEX_BIB_ENVIRONMENT:
{
string const & latexname = style->latexname();
break;
case LATEX_ENVIRONMENT:
case LATEX_ITEM_ENVIRONMENT:
+ case LATEX_BIB_ENVIRONMENT:
if (style->latexparam() == "CDATA")
ofs << "]]>";
break;
// This is also a buffer property (ale)
-vector<pair<string, string> > const Buffer::getBibkeyList() const
+void Buffer::fillWithBibKeys(vector<pair<string, string> > & keys) const
{
- typedef pair<string, string> StringPair;
/// if this is a child document and the parent is already loaded
- /// Use the parent's list instead [ale990412]
+ /// use the parent's list instead [ale990412]
if (!params.parentname.empty() && bufferlist.exists(params.parentname)) {
Buffer const * tmp = bufferlist.getBuffer(params.parentname);
- if (tmp)
- return tmp->getBibkeyList();
- }
-
- vector<StringPair> keys;
- ParagraphList::iterator pit = paragraphs.begin();
- ParagraphList::iterator pend = paragraphs.end();
- for (; pit != pend; ++pit) {
- if (pit->bibkey) {
- string const key = pit->bibkey->getContents();
- string const opt = pit->bibkey->getOptions();
- string const ref = pit->asString(this, false);
- string const info = opt + "TheBibliographyRef" + ref;
-
- keys.push_back(StringPair(key, info));
+ if (tmp) {
+ tmp->fillWithBibKeys(keys);
+ return;
}
}
- if (!keys.empty())
- return keys;
-
- // Might be either using bibtex or a child has bibliography
for (inset_iterator it = inset_const_iterator_begin();
it != inset_const_iterator_end(); ++it) {
- // Search for Bibtex or Include inset
- if (it->lyxCode() == Inset::BIBTEX_CODE) {
- vector<StringPair> tmp =
- static_cast<InsetBibtex &>(*it).getKeys(this);
- keys.insert(keys.end(), tmp.begin(), tmp.end());
- } else if (it->lyxCode() == Inset::INCLUDE_CODE) {
- vector<StringPair> const tmp =
- static_cast<InsetInclude &>(*it).getKeys();
- keys.insert(keys.end(), tmp.begin(), tmp.end());
+ if (it->lyxCode() == Inset::BIBTEX_CODE)
+ static_cast<InsetBibtex &>(*it).fillWithBibKeys(this, keys);
+ else if (it->lyxCode() == Inset::INCLUDE_CODE)
+ static_cast<InsetInclude &>(*it).fillWithBibKeys(keys);
+ else if (it->lyxCode() == Inset::BIBITEM_CODE) {
+ InsetBibitem & bib = static_cast<InsetBibitem &>(*it);
+ string const key = bib.getContents();
+ string const opt = bib.getOptions();
+ string const ref; // = pit->asString(this, false);
+ string const info = opt + "TheBibliographyRef" + ref;
+ keys.push_back(pair<string, string>(key, info));
}
}
-
- return keys;
}