]> git.lyx.org Git - lyx.git/blobdiff - src/BiblioInfo.cpp
Update sk.po
[lyx.git] / src / BiblioInfo.cpp
index 149b93b5e0422c13bedca077f6ba910b9076eeee..638579a752abe5f9b99e2a020d98d28cdbb34eb3 100644 (file)
@@ -5,7 +5,7 @@
  *
  * \author Angus Leeming
  * \author Herbert Voß
- * \author Richard Heck
+ * \author Richard Kimberly Heck
  * \author Julien Rioux
  * \author Jürgen Spitzmüller
  *
 #include <config.h>
 
 #include "BiblioInfo.h"
+
 #include "Buffer.h"
 #include "BufferParams.h"
-#include "buffer_funcs.h"
 #include "Citation.h"
 #include "Encoding.h"
-#include "InsetIterator.h"
 #include "Language.h"
-#include "xml.h"
-#include "Paragraph.h"
 #include "TextClass.h"
 #include "TocBackend.h"
+#include "xml.h"
 
 #include "support/convert.h"
 #include "support/debug.h"
 #include "support/docstream.h"
+#include "support/FileName.h"
 #include "support/gettext.h"
 #include "support/lassert.h"
 #include "support/lstrings.h"
-#include "support/regex.h"
 #include "support/textutils.h"
 
 #include <map>
+#include <regex>
 #include <set>
 
 using namespace std;
@@ -384,8 +383,8 @@ docstring convertLaTeXCommands(docstring const & str)
                // {\v a} to \v{a} (see #9340).
                // FIXME: This is a sort of mini-tex2lyx.
                //        Use the real tex2lyx instead!
-               static lyx::regex const tma_reg("^\\{\\\\[bcCdfGhHkrtuUv]\\s\\w\\}");
-               if (lyx::regex_search(to_utf8(val), tma_reg)) {
+               static regex const tma_reg("^\\{\\\\[bcCdfGhHkrtuUv]\\s\\w\\}");
+               if (regex_search(to_utf8(val), tma_reg)) {
                        val = val.substr(1);
                        val.replace(2, 1, from_ascii("{"));
                        continue;
@@ -412,8 +411,8 @@ docstring convertLaTeXCommands(docstring const & str)
                // look for that and change it, if necessary.
                // FIXME: This is a sort of mini-tex2lyx.
                //        Use the real tex2lyx instead!
-               static lyx::regex const reg("^\\\\\\W\\w");
-               if (lyx::regex_search(to_utf8(val), reg)) {
+               static regex const reg("^\\\\\\W\\w");
+               if (regex_search(to_utf8(val), reg)) {
                        val.insert(3, from_ascii("}"));
                        val.insert(2, from_ascii("{"));
                }
@@ -488,8 +487,8 @@ docstring processRichtext(docstring const & str, bool richtext)
 //////////////////////////////////////////////////////////////////////
 
 BibTeXInfo::BibTeXInfo(docstring const & key, docstring const & type)
-       : is_bibtex_(true), bib_key_(key), num_bib_key_(0), entry_type_(type), info_(),
-         modifier_(0)
+       : is_bibtex_(true), bib_key_(key), num_bib_key_(0), entry_type_(type),
+         info_(), format_(), modifier_(0)
 {}
 
 
@@ -1000,6 +999,19 @@ docstring const & BibTeXInfo::getInfo(BibTeXInfoList const & xrefs,
 {
        bool const richtext = ci.richtext;
 
+       CiteEngineType const engine_type = buf.params().citeEngineType();
+       DocumentClass const & dc = buf.params().documentClass();
+       docstring const & format = format_in.empty()? 
+                               from_utf8(dc.getCiteFormat(engine_type, to_utf8(entry_type_)))
+                             : format_in;
+
+       if (format != format_) {
+               // clear caches since format changed
+               info_.clear();
+               info_richtext_.clear();
+               format_ = format;
+       }
+
        if (!richtext && !info_.empty()) {
                info_ = convertLaTeXCommands(processRichtext(info_, false));
                return info_;
@@ -1013,11 +1025,6 @@ docstring const & BibTeXInfo::getInfo(BibTeXInfoList const & xrefs,
                return info_;
        }
 
-       CiteEngineType const engine_type = buf.params().citeEngineType();
-       DocumentClass const & dc = buf.params().documentClass();
-       docstring const & format = format_in.empty()? 
-                               from_utf8(dc.getCiteFormat(engine_type, to_utf8(entry_type_)))
-                             : format_in;
        int counter = 0;
        info_ = expandFormat(format, xrefs, counter, buf,
                ci, false, false);
@@ -1037,7 +1044,7 @@ docstring const & BibTeXInfo::getInfo(BibTeXInfoList const & xrefs,
 }
 
 
-docstring const BibTeXInfo::getLabel(BibTeXInfoList const xrefs,
+docstring const BibTeXInfo::getLabel(BibTeXInfoList const xrefs,
        Buffer const & buf, docstring const & format,
        CiteItem const & ci, bool next, bool second) const
 {
@@ -1395,7 +1402,7 @@ docstring const BiblioInfo::getInfo(docstring const & key,
 {
        BiblioInfo::const_iterator it = find(key);
        if (it == end())
-               return docstring(_("Bibliography entry not found!"));
+               return _("Bibliography entry not found!");
        BibTeXInfo const & data = it->second;
        BibTeXInfoList xrefptrs;
        for (docstring const & xref : getXRefs(data)) {
@@ -1692,6 +1699,8 @@ docstring authorsToDocBookAuthorGroup(docstring const & authorsString, XMLStream
 
        // Output the list of authors.
        xs << xml::StartTag("authorgroup");
+       xs << xml::CR();
+
        auto it = authors.cbegin();
        auto en = authors.cend();
        for (size_t i = 0; it != en; ++it, ++i) {