X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetCitation.cpp;h=0a5da5b1192f63a04d4210e7f1489e64e35c461c;hb=3391fed36a574fb729f243888258d1b6d45b0251;hp=768eb35e8b036eeed4c5a1545da8a09886811707;hpb=b9aabe6d891b5347586bdfaeff407552213f94bb;p=features.git diff --git a/src/insets/InsetCitation.cpp b/src/insets/InsetCitation.cpp index 768eb35e8b..0a5da5b119 100644 --- a/src/insets/InsetCitation.cpp +++ b/src/insets/InsetCitation.cpp @@ -123,7 +123,7 @@ void InsetCitation::doDispatch(Cursor & cur, FuncRequest & cmd) if (cmd.getArg(0) == "toggleparam") { string cmdname = getCmdName(); string const alias = - buffer().params().getCiteAlias(cmdname); + buffer().masterParams().getCiteAlias(cmdname); if (!alias.empty()) cmdname = alias; string const par = cmd.getArg(1); @@ -157,7 +157,7 @@ bool InsetCitation::getStatus(Cursor & cur, FuncRequest const & cmd, if (cmd.getArg(0) == "changetype") { string cmdname = getCmdName(); string const alias = - buffer().params().getCiteAlias(cmdname); + buffer().masterParams().getCiteAlias(cmdname); if (!alias.empty()) cmdname = alias; if (suffixIs(cmdname, "*")) @@ -169,12 +169,12 @@ bool InsetCitation::getStatus(Cursor & cur, FuncRequest const & cmd, if (cmd.getArg(0) == "toggleparam") { string cmdname = getCmdName(); string const alias = - buffer().params().getCiteAlias(cmdname); + buffer().masterParams().getCiteAlias(cmdname); if (!alias.empty()) cmdname = alias; vector citation_styles = - buffer().params().citeStyles(); - CitationStyle cs = getCitationStyle(buffer().params(), + buffer().masterParams().citeStyles(); + CitationStyle cs = getCitationStyle(buffer().masterParams(), cmdname, citation_styles); if (cmd.getArg(1) == "star") { status.setEnabled(cs.hasStarredVersion); @@ -349,7 +349,7 @@ docstring InsetCitation::complexLabel(bool for_xhtml) const cite_type = cite_type.substr(0, cite_type.size() - 1); // handle alias - string const alias = buf.params().getCiteAlias(cite_type); + string const alias = buf.masterParams().getCiteAlias(cite_type); if (!alias.empty()) cite_type = alias; @@ -420,7 +420,7 @@ void InsetCitation::updateBuffer(ParIterator const &, UpdateType) void InsetCitation::addToToc(DocIterator const & cpit, bool output_active, - UpdateType) const + UpdateType, TocBackend & backend) const { // NOTE // BiblioInfo::collectCitedEntries() uses the TOC to collect the citations @@ -428,7 +428,7 @@ void InsetCitation::addToToc(DocIterator const & cpit, bool output_active, // by both XHTML and plaintext output. So, if we change what goes into the TOC, // then we will also need to change that routine. docstring const tocitem = getParam("key"); - TocBuilder & b = buffer().tocBackend().builder("citation"); + TocBuilder & b = backend.builder("citation"); b.pushItem(cpit, tocitem, output_active); b.pop(); } @@ -508,9 +508,19 @@ void InsetCitation::forOutliner(docstring & os, size_t const, bool const) const // engine, e.g. \cite[]{} for the basic engine. void InsetCitation::latex(otexstream & os, OutputParams const & runparams) const { - vector citation_styles = buffer().params().citeStyles(); - CitationStyle cs = asValidLatexCommand(buffer().params(), getCmdName(), citation_styles); BiblioInfo const & bi = buffer().masterBibInfo(); + if (getCmdName() == "keyonly") { + // Special command to only return the key + if (!bi.isBibtex(getParam("key"))) + // escape chars with bibitems + os << escape(cleanupWhitespace(getParam("key"))); + else + os << cleanupWhitespace(getParam("key")); + return; + } + vector citation_styles = buffer().masterParams().citeStyles(); + CitationStyle cs = asValidLatexCommand(buffer().masterParams(), + getCmdName(), citation_styles); // FIXME UNICODE docstring const cite_str = from_utf8(citationStyleToString(cs, true));