X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBiblioInfo.h;h=f4051bf2251a7b526d0de0306bdae7971e1db753;hb=5d96ee69eb9173779932575cb6d6ce70db9860b9;hp=162cad19f283b7a1c11a67eff529bae4d33e49b8;hpb=5685080356bebfb5d38b8597cf41f960d82e7a8e;p=lyx.git diff --git a/src/BiblioInfo.h b/src/BiblioInfo.h index 162cad19f2..f4051bf225 100644 --- a/src/BiblioInfo.h +++ b/src/BiblioInfo.h @@ -6,7 +6,7 @@ * * \author Angus Leeming * \author Herbert Voß - * \author Richard Heck + * \author Richard Kimberly Heck * \author Julien Rioux * * Full author contact details are available in file CREDITS. @@ -17,9 +17,6 @@ #include "support/docstring.h" -#include "BufferParams.h" -#include "Citation.h" - #include #include #include @@ -28,6 +25,10 @@ namespace lyx { class Buffer; +class BufferParams; +class CitationStyle; +class CiteItem; +class XMLStream; /// \param latex_str a LaTeX command, "cite", "Citep*", etc CitationStyle citationStyleFromString(std::string const & latex_str, @@ -35,6 +36,9 @@ CitationStyle citationStyleFromString(std::string const & latex_str, /// the other way round std::string citationStyleToString(CitationStyle const &, bool const latex = false); +/// Transforms the information about authors into a (directly written to a XMLStream). +docstring authorsToDocBookAuthorGroup(docstring const & authorsString, XMLStream & xs, Buffer const & buf); + /// Class to represent information about a BibTeX or /// bibliography entry. @@ -49,17 +53,17 @@ public: /// typedef std::vector const BibTeXInfoList; /// - BibTeXInfo() : is_bibtex_(true), modifier_(0) {} + BibTeXInfo() : is_bibtex_(true), num_bib_key_(0), modifier_(0) {} /// argument sets isBibTeX_, so should be false only if it's coming /// from a bibliography environment - BibTeXInfo(bool ib) : is_bibtex_(ib), modifier_(0) {} + BibTeXInfo(bool ib) : is_bibtex_(ib), num_bib_key_(0), modifier_(0) {} /// constructor that sets the entryType BibTeXInfo(docstring const & key, docstring const & type); /// \return an author or editor list (short form by default), /// used for sorting. /// This will be translated to the UI language if buf is null /// otherwise, it will be translated to the buffer language. - docstring const getAuthorOrEditorList(Buffer const * buf = 0, + docstring const getAuthorOrEditorList(Buffer const * buf = nullptr, bool full = false, bool forceshort = false) const; /// Same for a specific author role (editor, author etc.) docstring const getAuthorList(Buffer const * buf, docstring const & author, @@ -67,12 +71,15 @@ public: bool const allnames = false, bool const beginning = true) const; /// docstring const getYear() const; + /// + void getLocators(docstring & doi, docstring & url, docstring & file) const; /// \return formatted BibTeX data suitable for framing. /// \param vector of pointers to crossref/xdata information - docstring const & getInfo(BibTeXInfoList const xrefs, - Buffer const & buf, CiteItem const & ci) const; + docstring const & getInfo(BibTeXInfoList const & xrefs, + Buffer const & buf, CiteItem const & ci, + docstring const & format = docstring()) const; /// \return formatted BibTeX data for a citation label - docstring const getLabel(BibTeXInfoList const xrefs, + docstring const getLabel(BibTeXInfoList const & xrefs, Buffer const & buf, docstring const & format, CiteItem const & ci, bool next = false, bool second = false) const; /// @@ -97,6 +104,9 @@ public: void label(docstring const & d) { label_= d; } /// void key(docstring const & d) { bib_key_= d; } + /// Record the number of occurences of the same key + /// (duplicates are allowed with qualified citation lists) + void numKey(int const i) { num_bib_key_ = i; } /// docstring const & label() const { return label_; } /// @@ -120,7 +130,7 @@ private: /// to get the data from xref BibTeXInfo objects, which would normally /// be the one referenced in the crossref or xdata field. docstring getValueForKey(std::string const & key, Buffer const & buf, - CiteItem const & ci, BibTeXInfoList const xrefs, size_t maxsize = 4096) const; + CiteItem const & ci, BibTeXInfoList const & xrefs, size_t maxsize = 4096) const; /// replace %keys% in a format string with their values /// called from getInfo() /// format strings may contain: @@ -138,13 +148,15 @@ private: /// moreover, keys that look like "%_key%" are treated as translatable /// so that things like "pp." and "vol." can be translated. docstring expandFormat(docstring const & fmt, - BibTeXInfoList const xrefs, int & counter, + BibTeXInfoList const & xrefs, int & counter, Buffer const & buf, CiteItem const & ci, bool next = false, bool second = false) const; /// true if from BibTeX; false if from bibliography environment bool is_bibtex_; /// the BibTeX key for this entry docstring bib_key_; + /// Number of occurences of the same key + int num_bib_key_; /// the label that will appear in citations /// this is easily set from bibliography environments, but has /// to be calculated for entries we get from BibTeX @@ -157,6 +169,8 @@ private: mutable docstring info_; /// a cache for getInfo(richtext = true) mutable docstring info_richtext_; + /// cache for last format pattern + mutable docstring format_; /// docstring cite_number_; /// @@ -205,6 +219,9 @@ public: /// language. docstring const getYear(docstring const & key, Buffer const & buf, bool use_modifier = false) const; + /// get either local pdf or web location of the citation referenced by key. + /// DOI/file are prefixed so they form proper URL for generic qt handler + void getLocators(docstring const & key, docstring & doi, docstring & url, docstring & file) const; /// docstring const getCiteNumber(docstring const & key) const; /// \return formatted BibTeX data associated with a given key. @@ -214,7 +231,7 @@ public: /// output any richtext tags marked in the citation format and escape < and > /// elsewhere, and the general output context. docstring const getInfo(docstring const & key, Buffer const & buf, - CiteItem const & ci) const; + CiteItem const & ci, docstring const & format = docstring()) const; /// \return formatted BibTeX data for citation labels. /// Citation labels can have more than one key. docstring const getLabel(std::vector keys, Buffer const & buf,