4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Angus Leeming
9 * Full author contact details are available in file CREDITS.
12 #ifndef BIBLIOHELPERS_H
13 #define BIBLIOHELPERS_H
19 /** Functions of use to citation and bibtex GUI controllers and views */
50 /// First entry is the bibliography key, second the data
51 typedef std::map<std::string, std::string> InfoMap;
53 /// Returns a vector of bibliography keys
54 std::vector<std::string> const getKeys(InfoMap const &);
56 /** Returns the BibTeX data associated with a given key.
57 Empty if no info exists. */
58 std::string const getInfo(InfoMap const &, std::string const &);
60 // rturn the year from the bibtex data record
61 std::string const getYear(InfoMap const & map, std::string const & key);
63 /// return the short form of an authorlist
64 std::string const getAbbreviatedAuthor(InfoMap const & map, std::string const & key);
66 // return only the family name
67 std::string const familyName(std::string const & name);
69 /** Search a BibTeX info field for the given key and return the
71 std::string const parseBibTeX(std::string data, std::string const & findkey);
73 /** Returns an iterator to the first key that meets the search
74 criterion, or end() if unsuccessful.
77 the InfoMap of bibkeys info,
78 the vector of keys to be searched,
80 an iterator defining the starting point of the search,
81 an enum defining a Simple or Regex search,
82 an enum defining the search direction.
85 std::vector<std::string>::const_iterator
86 searchKeys(InfoMap const & map,
87 std::vector<std::string> const & keys_to_search,
88 std::string const & search_expression,
89 std::vector<std::string>::const_iterator start,
92 bool caseSensitive=false);
94 /// Type returned by getCitationStyle, below
95 struct CitationStyle {
97 CitationStyle() : style(CITE), full(false), forceUCase(false) {}
106 /// Given the LaTeX command, return the appropriate CitationStyle
107 CitationStyle const getCitationStyle(std::string const & command);
109 /** Returns the LaTeX citation command
113 a flag forcing the full author list,
114 a flag forcing upper case, e.g. "della Casa" becomes "Della Case"
116 std::string const getCiteCommand(CiteStyle, bool full, bool forceUCase);
118 /// Returns a vector of available Citation styles.
119 std::vector<CiteStyle> const getCiteStyles(bool usingNatbib, bool usingJurabib);
122 "Translates" the available Citation Styles into strings for this key.
123 The returned string is displayed by the GUI.
126 [XX] is used in place of the actual reference
127 Eg, the vector will contain: [XX], Jones et al. [XX], ...
131 the InfoMap of bibkeys info,
132 the available citation styles
134 std::vector<std::string> const
135 getNumericalStrings(std::string const & key,
137 std::vector<CiteStyle> const & styles);
140 "Translates" the available Citation Styles into strings for this key.
141 The returned string is displayed by the GUI.
143 Eg, the vector will contain:
144 Jones et al. (1990), (Jones et al. 1990), Jones et al. 1990, ...
148 the InfoMap of bibkeys info,
149 the available citation styles
151 std::vector<std::string> const
152 getAuthorYearStrings(std::string const & key,
154 std::vector<CiteStyle> const & styles);
155 } // namespace biblio
157 #endif // BIBLIOHELPERS_H