+ if (key[0] == '!') {
+ // macro
+ string const val =
+ buf.params().documentClass().getCiteMacro(key);
+ fmt = val + fmt.substr(1);
+ continue;
+ } else if (key[0] == '_') {
+ // a translatable bit
+ string const val =
+ buf.params().documentClass().getCiteMacro(key);
+ docstring const trans =
+ translateIfPossible(from_utf8(val), buf.params().language->code());
+ ret += trans;
+ } else {
+ docstring const val = getValueForKey(key, xref);
+ ret += val;
+ }