X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBiblioInfo.h;h=c4c27e30b09492b6f9372871cd69984a76ec97c7;hb=4db3e641ed6765e005343010cb90ee8af26f8f99;hp=65d1b21fe04c784726e61e7c436e467957237408;hpb=1e947e3a18f3676c527684affa96cd41aa61345c;p=lyx.git diff --git a/src/BiblioInfo.h b/src/BiblioInfo.h index 65d1b21fe0..c4c27e30b0 100644 --- a/src/BiblioInfo.h +++ b/src/BiblioInfo.h @@ -7,6 +7,7 @@ * \author Angus Leeming * \author Herbert Voß * \author Richard Heck + * \author Julien Rioux * * Full author contact details are available in file CREDITS. */ @@ -44,14 +45,17 @@ public: /// and the values are the associated field values. typedef std::map::const_iterator const_iterator; /// - BibTeXInfo() : is_bibtex_(true) {} + BibTeXInfo() : is_bibtex_(true), modifier_(0) {} /// argument sets isBibTeX_, so should be false only if it's coming /// from a bibliography environment - BibTeXInfo(bool ib) : is_bibtex_(ib) {} + BibTeXInfo(bool ib) : is_bibtex_(ib), modifier_(0) {} /// constructor that sets the entryType BibTeXInfo(docstring const & key, docstring const & type); - /// \return the short form of an authorlist + /// \return the short form of an authorlist, used for sorting docstring const getAbbreviatedAuthor(bool jurabib_style = false) const; + /// \return the short form of an authorlist, translated to the + /// buffer language. + docstring const getAbbreviatedAuthor(Buffer const & buf, bool jurabib_style = false) const; /// docstring const getYear() const; /// @@ -108,7 +112,7 @@ private: /// like operator[], except, if the field is empty, it will attempt /// to get the data from xref BibTeXInfo object, which would normally /// be the one referenced in the crossref field. - docstring getValueForKey(std::string const & key, + docstring getValueForKey(std::string const & key, Buffer const & buf, docstring const & before, docstring const & after, docstring const & dialog, BibTeXInfo const * const xref = 0) const; /// replace %keys% in a format string with their values @@ -118,17 +122,20 @@ private: /// {%key%[[format]]}, which prints format if key is non-empty /// the latter may optionally contain an `else' clause as well: /// {%key%[[if format]][[else format]]} - /// material intended only for rich text (HTML) output should be - /// wrapped in "{!" and "!}". it will be removed if richtext is - /// false. + /// Material intended only for rich text (HTML) output should be + /// wrapped in "{!" and "!}". These markers are to be postprocessed + /// by processRichtext(); this step is left as a separate routine since + /// expandFormat() is recursive while postprocessing should be done + /// only once on the final string (just like convertLaTeXCommands). /// a simple macro facility is also available. keys that look like /// "%!key%" are substituted with their definition. /// moreover, keys that look like "%_key%" are treated as translatable /// so that things like "pp." and "vol." can be translated. docstring expandFormat(std::string const & fmt, BibTeXInfo const * const xref, int & counter, - Buffer const & buf, bool richtext, docstring before = docstring(), - docstring after = docstring(), docstring dialog = docstring(), bool next = false) const; + Buffer const & buf, docstring before = docstring(), + docstring after = docstring(), docstring dialog = docstring(), + bool next = false) const; /// true if from BibTeX; false if from bibliography environment bool is_bibtex_; /// the BibTeX key for this entry @@ -143,6 +150,8 @@ private: docstring entry_type_; /// a cache for getInfo() mutable docstring info_; + /// a cache for getInfo(richtext = true) + mutable docstring info_richtext_; /// docstring cite_number_; /// @@ -165,7 +174,7 @@ public: /// \return a sorted vector of BibTeX entry types in use std::vector const getEntries() const; /// \return the short form of an authorlist - docstring const getAbbreviatedAuthor(docstring const & key) const; + docstring const getAbbreviatedAuthor(docstring const & key, Buffer const & buf) const; /// \return the year from the bibtex data record for \param key /// if \param use_modifier is true, then we will also append any /// modifier for this entry (e.g., 1998b). @@ -173,6 +182,15 @@ public: /// not present in the record itself. docstring const getYear(docstring const & key, bool use_modifier = false) const; + /// \return the year from the bibtex data record for \param key + /// if \param use_modifier is true, then we will also append any + /// modifier for this entry (e.g., 1998b). + /// Note that this will get the year from the crossref if it's + /// not present in the record itself. + /// If no year is found, \return "No year" translated to the buffer + /// language. + docstring const getYear(docstring const & key, Buffer const & buf, + bool use_modifier = false) const; /// docstring const getCiteNumber(docstring const & key) const; /// \return formatted BibTeX data associated with a given key.