4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Angus Leeming
10 * Full author contact details are available in file CREDITS.
17 #include "support/docstring.h"
25 extern const docstring TheBibliographyRef;
29 ENGINE_NATBIB_AUTHORYEAR,
30 ENGINE_NATBIB_NUMERICAL,
59 /** Fills keys with BibTeX information derived from the various
60 * in this document or its master document.
62 void fillWithBibKeys(Buffer const * const buf,
63 std::vector<std::pair<std::string, docstring> > & keys);
65 /** Each citation engine recognizes only a subset of all possible
66 * citation commands. Given a latex command \c input, this function
67 * returns an appropriate command, valid for \c engine.
69 std::string const asValidLatexCommand(std::string const & input,
70 CiteEngine const engine);
72 /// First entry is the bibliography key, second the data
73 typedef std::map<std::string, docstring> InfoMap;
75 /// Returns a vector of bibliography keys
76 std::vector<std::string> const getKeys(InfoMap const &);
78 /** Returns the BibTeX data associated with a given key.
79 Empty if no info exists. */
80 docstring const getInfo(InfoMap const &, std::string const & key);
82 /// return the year from the bibtex data record
83 docstring const getYear(InfoMap const & map, std::string const & key);
85 /// return the short form of an authorlist
86 docstring const getAbbreviatedAuthor(InfoMap const & map, std::string const & key);
88 // return only the family name
89 docstring const familyName(docstring const & name);
91 /** Search a BibTeX info field for the given key and return the
93 docstring const parseBibTeX(docstring data, std::string const & findkey);
95 /** Returns an iterator to the first key that meets the search
96 criterion, or end() if unsuccessful.
99 the InfoMap of bibkeys info,
100 the vector of keys to be searched,
101 the search criterion,
102 an iterator defining the starting point of the search,
103 an enum defining a Simple or Regex search,
104 an enum defining the search direction.
107 std::vector<std::string>::const_iterator
108 searchKeys(InfoMap const & map,
109 std::vector<std::string> const & keys_to_search,
110 docstring const & search_expression,
111 std::vector<std::string>::const_iterator start,
114 bool caseSensitive=false);
117 class CitationStyle {
120 CitationStyle(CiteStyle s = CITE, bool f = false, bool force = false)
121 : style(s), full(f), forceUCase(force) {}
122 /// \param latex_str a LaTeX command, "cite", "Citep*", etc
123 CitationStyle(std::string const & latex_str);
125 std::string const asLatexStr() const;
135 /// Returns a vector of available Citation styles.
136 std::vector<CiteStyle> const getCiteStyles(CiteEngine const );
139 "Translates" the available Citation Styles into strings for this key.
140 The returned string is displayed by the GUI.
143 [XX] is used in place of the actual reference
144 Eg, the vector will contain: [XX], Jones et al. [XX], ...
148 the InfoMap of bibkeys info,
149 the available citation styles
151 std::vector<docstring> const
152 getNumericalStrings(std::string const & key,
154 std::vector<CiteStyle> const & styles);
157 "Translates" the available Citation Styles into strings for this key.
158 The returned string is displayed by the GUI.
160 Eg, the vector will contain:
161 Jones et al. (1990), (Jones et al. 1990), Jones et al. 1990, ...
165 the InfoMap of bibkeys info,
166 the available citation styles
168 std::vector<docstring> const
169 getAuthorYearStrings(std::string const & key,
171 std::vector<CiteStyle> const & styles);
173 } // namespace biblio