return content;
// we have to do the escaping here, because we will ultimately
// write this as a raw string, so as not to escape the tags.
- return "<a href='#LyXCite-" + html::cleanAttr(key) + "'>" +
- html::htmlize(content, XHTMLStream::ESCAPE_ALL) + "</a>";
+ return "<a href='#LyXCite-" + xml::cleanAttr(key) + "'>" +
+ xml::xmlize(content, XMLStream::ESCAPE_ALL) + "</a>";
}
} // anonymous namespace
if (!buf.isFullyLoaded())
return docstring();
+ docstring const & key = getParam("key");
+
BiblioInfo const & biblist = buf.masterBibInfo();
- if (biblist.empty())
+
+ // mark broken citations
+ setBroken(false);
+
+ if (biblist.empty()) {
+ setBroken(true);
return docstring();
+ }
- docstring const & key = getParam("key");
if (key.empty())
return _("No citations selected!");
+ // check all citations
+ // 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);
+ for (auto const & k : keys) {
+ if (biblist.find(k) == biblist.end()) {
+ setBroken(true);
+ break;
+ }
+ }
+
string cite_type = getCmdName();
bool const uppercase = isUpperCase(cite_type[0]);
if (uppercase)
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
// from the document. It is used indirectly, via BiblioInfo::makeCitationLables,
// 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");
+ docstring tocitem;
+ if (isBroken())
+ tocitem = _("BROKEN: ");
+ tocitem += getParam("key");
TocBuilder & b = backend.builder("citation");
b.pushItem(cpit, tocitem, output_active);
b.pop();
+ if (isBroken()) {
+ shared_ptr<Toc> toc2 = backend.toc("brokenrefs");
+ toc2->push_back(TocItem(cpit, 0, tocitem, output_active));
+ }
}
}
-docstring InsetCitation::xhtml(XHTMLStream & xs, OutputParams const &) const
+docstring InsetCitation::xhtml(XMLStream & xs, OutputParams const &) const
{
string const & cmd = getCmdName();
if (cmd == "nocite")
return docstring();
// have to output this raw, because generateLabel() will include tags
- xs << XHTMLStream::ESCAPE_NONE << generateLabel(true);
+ xs << XMLStream::ESCAPE_NONE << generateLabel(true);
return docstring();
}