+ /// 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,
+ BibTeXInfo const * const xref = 0) const;
+ /// replace %keys% in a format string with their values
+ /// called from getInfo()
+ /// format strings may contain:
+ /// %key%, which represents a key
+ /// {%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.
+ /// 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) const;