-bool InsetCitation::isCompatibleCommand(string const & cmd)
-{
- vector<string> const & possibles = possibleCiteCommands();
- vector<string>::const_iterator const end = possibles.end();
- return find(possibles.begin(), end, cmd) != end;
+ // handle alias
+ string const alias = buf.masterParams().getCiteAlias(cite_type);
+ if (!alias.empty())
+ cite_type = alias;
+
+ // FIXME: allow to add cite macros
+ /*
+ buffer().params().documentClass().addCiteMacro("!textbefore", to_utf8(before));
+ buffer().params().documentClass().addCiteMacro("!textafter", to_utf8(after));
+ */
+ docstring label;
+ // we only really want the last 'false', to suppress trimming, but
+ // we need to give the other defaults, too, to set it.
+ vector<docstring> keys =
+ getVectorFromString(key, from_ascii(","), false, false);
+ CitationStyle cs = getCitationStyle(buffer().masterParams(),
+ cite_type, buffer().masterParams().citeStyles());
+ bool const qualified = cs.hasQualifiedList
+ && (keys.size() > 1
+ || !getParam("pretextlist").empty()
+ || !getParam("posttextlist").empty());
+ map<docstring, docstring> pres = getQualifiedLists(getParam("pretextlist"));
+ map<docstring, docstring> posts = getQualifiedLists(getParam("posttextlist"));
+
+ CiteItem ci;
+ ci.textBefore = getParam("before");
+ ci.textAfter = getParam("after");
+ ci.forceUpperCase = uppercase;
+ ci.Starred = starred;
+ ci.max_size = UINT_MAX;
+ ci.isQualified = qualified;
+ ci.pretexts = pres;
+ ci.posttexts = posts;
+ if (for_xhtml) {
+ ci.max_key_size = UINT_MAX;
+ ci.context = CiteItem::Export;
+ }
+ ci.richtext = for_xhtml;
+ label = biblist.getLabel(keys, buffer(), cite_type, ci);
+ return label;