X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetBibitem.cpp;h=82d81852000f674aca14831f367a23334bdfd8cd;hb=8124e6c02ea1fd6779bb6c47ffe2bca2c8bd2d97;hp=2060b1a1c9f176c9ff537f6ba6d53fb42feaf441;hpb=3615a6a75bfe7bc3f51051fa19c46a4fd4540974;p=lyx.git diff --git a/src/insets/InsetBibitem.cpp b/src/insets/InsetBibitem.cpp index 2060b1a1c9..82d8185200 100644 --- a/src/insets/InsetBibitem.cpp +++ b/src/insets/InsetBibitem.cpp @@ -28,7 +28,6 @@ #include "Language.h" #include "Lexer.h" #include "output_xhtml.h" -#include "OutputParams.h" #include "Paragraph.h" #include "ParagraphList.h" #include "ParIterator.h" @@ -155,8 +154,9 @@ void InsetBibitem::doDispatch(Cursor & cur, FuncRequest & cmd) setParam("literal", p["literal"]); if (p["key"] != old_key) { + // changeRefsIfUnique handles undo + cur.bv().buffer().changeRefsIfUnique(old_key, p["key"]); updateCommand(p["key"]); - cur.bv().buffer().changeRefsIfUnique(old_key, params()["key"]); cur.forceBufferUpdate(); buffer().invalidateBibinfoCache(); } @@ -188,9 +188,15 @@ docstring InsetBibitem::bibLabel() const if (bp.citeEngineType() == ENGINE_TYPE_NUMERICAL) return autolabel_; docstring label = getParam("label"); - if (!label.empty() && bp.citeEngine() == "natbib") + if (!label.empty() && bp.citeEngine() == "natbib") { // Add a space before opening paren label = subst(label, from_ascii("("), from_ascii(" (")); + // and strip off long author list + docstring striplabel; + label = rsplit(label, striplabel, ')'); + if (!striplabel.empty()) + label = striplabel + ")"; + } return label.empty() ? autolabel_ : label; } @@ -210,7 +216,7 @@ int InsetBibitem::plaintext(odocstringstream & os, docstring const str = oss.str(); os << str; - return str.size(); + return int(str.size()); } @@ -223,9 +229,9 @@ docstring bibitemWidest(Buffer const & buffer, OutputParams const & runparams) int w = 0; - InsetBibitem const * bitem = 0; + InsetBibitem const * bitem = nullptr; - // FIXME: this font is used unitialized for now but should be set to + // FIXME: this font is used uninitialized for now but should be set to // a proportional font. Here is what Georg Baum has to say about it: /* bibitemWidest() is supposed to find the bibitem with the widest label in the @@ -273,7 +279,7 @@ docstring bibitemWidest(Buffer const & buffer, OutputParams const & runparams) // So for now we just use the label size in order to be sure // that GUI and no-GUI gives the same bibitem (even if that is // potentially the wrong one. - int const wx = label.size(); + int const wx = int(label.size()); if (wx > w) { w = wx; @@ -320,7 +326,7 @@ void InsetBibitem::collectBibKeys(InsetIterator const & it, FileNameList & /*che // Update the counters of this inset and of its contents -void InsetBibitem::updateBuffer(ParIterator const & it, UpdateType utype) +void InsetBibitem::updateBuffer(ParIterator const & it, UpdateType utype, bool const /*deleted*/) { BufferParams const & bp = buffer().masterBuffer()->params(); Counters & counters = bp.documentClass().counters(); @@ -336,20 +342,26 @@ void InsetBibitem::updateBuffer(ParIterator const & it, UpdateType utype) } -docstring InsetBibitem::xhtml(XHTMLStream & xs, OutputParams const &) const +void InsetBibitem::docbook(XMLStream &, OutputParams const &) const +{ + // Nothing to do: everything is implemented in makeParagraphBibliography. +} + + +docstring InsetBibitem::xhtml(XMLStream & xs, OutputParams const &) const { // FIXME XHTML // XHTML 1.1 doesn't have the "name" attribute for , so we have to use - // the "id" atttribute to get the document to validate. Probably, we will + // the "id" attribute to get the document to validate. Probably, we will // need to use "name" anyway, eventually, because some browsers do not // handle jumping to ids. If we don't do that, though, we can just put the // id into the span tag. string const attrs = - "id='LyXCite-" + to_utf8(html::cleanAttr(getParam("key"))) + "'"; - xs << html::CompTag("a", attrs); - xs << html::StartTag("span", "class='bibitemlabel'"); + "id='LyXCite-" + to_utf8(xml::cleanAttr(getParam("key"))) + "'"; + xs << xml::CompTag("a", attrs); + xs << xml::StartTag("span", "class='bibitemlabel'"); xs << bibLabel(); - xs << html::EndTag("span"); + xs << xml::EndTag("span"); return docstring(); }