mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
DocBook: ensure xml:id is not output too many times.
This is mostly important for subfigures, but debugging this issue showed that InsetCaption could be slightly simplified and InsetLabel should be made a tad more robust.
This commit is contained in:
parent
d0a5ba4859
commit
8758000641
@ -367,8 +367,7 @@ void InsetCaption::getCaptionAsDocBook(XMLStream & xs,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Ignore full_label_, as the DocBook processor will deal with the numbering.
|
// Ignore full_label_, as the DocBook processor will deal with the numbering.
|
||||||
InsetText::XHTMLOptions const opts =
|
InsetText::XHTMLOptions opts = InsetText::WriteInnerTag;
|
||||||
InsetText::WriteLabel | InsetText::WriteInnerTag;
|
|
||||||
InsetText::docbook(xs, runparams, opts);
|
InsetText::docbook(xs, runparams, opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -583,7 +583,7 @@ void docbookSubfigures(XMLStream & xs, OutputParams const & runparams, const Ins
|
|||||||
xs << xml::StartTag("formalgroup", attr);
|
xs << xml::StartTag("formalgroup", attr);
|
||||||
xs << xml::CR();
|
xs << xml::CR();
|
||||||
|
|
||||||
xs << xml::StartTag("title", attr);
|
xs << xml::StartTag("title"); // Don't take attr here, the ID should only go in one place, not two.
|
||||||
if (caption) {
|
if (caption) {
|
||||||
caption->getCaptionAsDocBook(xs, rpNoLabel);
|
caption->getCaptionAsDocBook(xs, rpNoLabel);
|
||||||
} else {
|
} else {
|
||||||
|
@ -356,8 +356,11 @@ int InsetLabel::plaintext(odocstringstream & os,
|
|||||||
void InsetLabel::docbook(XMLStream & xs, OutputParams const & runparams) const
|
void InsetLabel::docbook(XMLStream & xs, OutputParams const & runparams) const
|
||||||
{
|
{
|
||||||
// Output an anchor only if it has not been processed before.
|
// Output an anchor only if it has not been processed before.
|
||||||
if (runparams.docbook_anchors_to_ignore.find(getParam("name")) == runparams.docbook_anchors_to_ignore.end()) {
|
docstring id = getParam("name");
|
||||||
docstring attr = from_utf8("xml:id=\"") + xml::cleanID(getParam("name")) + from_utf8("\"");
|
docstring cleaned_id = xml::cleanID(id);
|
||||||
|
if (runparams.docbook_anchors_to_ignore.find(id) == runparams.docbook_anchors_to_ignore.end() &&
|
||||||
|
runparams.docbook_anchors_to_ignore.find(cleaned_id) == runparams.docbook_anchors_to_ignore.end()) {
|
||||||
|
docstring attr = from_utf8("xml:id=\"") + cleaned_id + from_utf8("\"");
|
||||||
xs << xml::CompTag("anchor", to_utf8(attr));
|
xs << xml::CompTag("anchor", to_utf8(attr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user