]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetBibtex.cpp
Context menu item to add unknown branch (rest of #7643)
[lyx.git] / src / insets / InsetBibtex.cpp
index 2544a493d39a686588557b44d291fae989c0d337..8f33a2de3c37ca2c2c1501cc7028aaedac1b0c11 100644 (file)
@@ -58,14 +58,17 @@ namespace os = support::os;
 InsetBibtex::InsetBibtex(Buffer * buf, InsetCommandParams const & p)
        : InsetCommand(buf, p)
 {
-       buffer().invalidateBibinfoCache();
+       buffer().invalidateBibfileCache();
+       buffer().removeBiblioTempFiles();
 }
 
 
 InsetBibtex::~InsetBibtex()
 {
-       if (isBufferLoaded())
+       if (isBufferLoaded()) {
                buffer().invalidateBibfileCache();
+               buffer().removeBiblioTempFiles();
+       }
 }
 
 
@@ -108,6 +111,7 @@ void InsetBibtex::doDispatch(Cursor & cur, FuncRequest & cmd)
                cur.recordUndo();
                setParams(p);
                buffer().invalidateBibfileCache();
+               buffer().removeBiblioTempFiles();
                cur.forceBufferUpdate();
                break;
        }
@@ -332,6 +336,9 @@ void InsetBibtex::latex(otexstream & os, OutputParams const & runparams) const
                        style = split(style, bibtotoc, ',');
        }
 
+       if (style == "default")
+               style = buffer().params().biblio_style;
+
        if (!style.empty()) {
                string base = normalizeName(buffer(), runparams, style, ".bst");
                FileName const try_in_file =
@@ -916,11 +923,9 @@ void InsetBibtex::validate(LaTeXFeatures & features) const
        // It'd be better to be able to get this from an InsetLayout, but at present
        // InsetLayouts do not seem really to work for things that aren't InsetTexts.
        if (features.runparams().flavor == OutputParams::HTML)
-               features.addPreambleSnippet("<style type=\"text/css\">\n"
-                       "div.bibtexentry { margin-left: 2em; text-indent: -2em; }\n"
+               features.addCSSSnippet("div.bibtexentry { margin-left: 2em; text-indent: -2em; }\n"
                        "span.bibtexlabel:before{ content: \"[\"; }\n"
-                       "span.bibtexlabel:after{ content: \"] \"; }\n"
-                       "</style>");
+                       "span.bibtexlabel:after{ content: \"] \"; }");
 }
 
 
@@ -931,9 +936,8 @@ docstring InsetBibtex::xhtml(XHTMLStream & xs, OutputParams const &) const
 {
        BiblioInfo const & bibinfo = buffer().masterBibInfo();
        vector<docstring> const & cites = bibinfo.citedEntries();
-       CiteEngine const engine = buffer().params().citeEngine();
-       bool const numbers =
-               (engine == ENGINE_BASIC || engine == ENGINE_NATBIB_NUMERICAL);
+       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;
@@ -956,7 +960,8 @@ docstring InsetBibtex::xhtml(XHTMLStream & xs, OutputParams const &) const
                xs << html::StartTag("div", "class='bibtexentry'");
                // FIXME XHTML
                // The same name/id problem we have elsewhere.
-               string const attr = "id='" + to_utf8(entry.key()) + "'";
+               string const attr = 
+                       "id='LyXCite-" + to_utf8(html::cleanAttr(entry.key())) + "'";
                xs << html::CompTag("a", attr);
                docstring citekey;
                if (numbers)