+ /// 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,
+ docstring const & before, docstring const & after, docstring const & dialog,
+ BibTeXInfoList const xrefs, size_t maxsize = 4096) 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 "!}". 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(docstring const & fmt,
+ BibTeXInfoList const xrefs, int & counter,
+ Buffer const & buf, docstring before = docstring(),
+ docstring after = docstring(), docstring dialog = docstring(),
+ bool next = false) const;