mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
XHTML: export paragraph IDs also for list items, but not for the opening tag of the list.
The IDs are used to link to specific elements (for instance, the User's guide nomenclature). The beginning of the list (<ul> or <ol>) has the same magic ID as the first item of the list.
This commit is contained in:
parent
c5b1ce5f37
commit
37a865762b
@ -210,25 +210,32 @@ inline void closeLabelTag(XMLStream & xs, Layout const & lay)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline void openItemTag(XMLStream & xs, Layout const & lay)
|
inline void openItemTag(XMLStream & xs, Layout const & lay,
|
||||||
|
std::string const & parlabel)
|
||||||
{
|
{
|
||||||
if (lay.htmlitemtag() != "NONE") {
|
if (lay.htmlitemtag() != "NONE") {
|
||||||
xs << xml::StartTag(lay.htmlitemtag(), lay.htmlitemattr(), true);
|
string attrs = lay.htmlitemattr();
|
||||||
|
if (!parlabel.empty())
|
||||||
|
attrs += " id='" + parlabel + "'";
|
||||||
|
xs << xml::StartTag(lay.htmlitemtag(), attrs, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void openItemTag(XMLStream & xs, Layout const & lay,
|
void openItemTag(XMLStream & xs, Layout const & lay,
|
||||||
ParagraphParameters const & params)
|
ParagraphParameters const & params,
|
||||||
|
std::string const & parlabel)
|
||||||
{
|
{
|
||||||
if (lay.htmlitemtag() != "NONE") {
|
if (lay.htmlitemtag() != "NONE") {
|
||||||
// FIXME Are there other things we should handle here?
|
// FIXME Are there other things we should handle here?
|
||||||
string const align = alignmentToCSS(params.align());
|
string const align = alignmentToCSS(params.align());
|
||||||
if (align.empty()) {
|
if (align.empty()) {
|
||||||
openItemTag(xs, lay);
|
openItemTag(xs, lay, parlabel);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
string attrs = lay.htmlGetAttrString() + " style='text-align: " + align + ";'";
|
string attrs = lay.htmlGetAttrString() + " style='text-align: " + align + ";'";
|
||||||
|
if (!parlabel.empty())
|
||||||
|
attrs += " id='" + parlabel + "'";
|
||||||
xs << xml::StartTag(lay.htmlitemtag(), attrs);
|
xs << xml::StartTag(lay.htmlitemtag(), attrs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -411,7 +418,8 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
|
|||||||
ParagraphList::const_iterator const begin = text.paragraphs().begin();
|
ParagraphList::const_iterator const begin = text.paragraphs().begin();
|
||||||
ParagraphList::const_iterator par = pbegin;
|
ParagraphList::const_iterator par = pbegin;
|
||||||
Layout const & bstyle = par->layout();
|
Layout const & bstyle = par->layout();
|
||||||
depth_type const origdepth = pbegin->params().depth();
|
depth_type const origdepth = par->params().depth();
|
||||||
|
string const parId = bstyle.htmlitemtag().empty() ? par->magicLabel() : "";
|
||||||
|
|
||||||
// open tag for this environment
|
// open tag for this environment
|
||||||
if ((bstyle.labeltype == LABEL_ENUMERATE || bstyle.labeltype == LABEL_ITEMIZE)
|
if ((bstyle.labeltype == LABEL_ENUMERATE || bstyle.labeltype == LABEL_ITEMIZE)
|
||||||
@ -444,12 +452,12 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
|
|||||||
// not a valid enumdepth...
|
// not a valid enumdepth...
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
openParTag(xs, bstyle,
|
const string cssClass = string(isenum ? "lyxenum" : "lyxitem") + " "
|
||||||
string( isenum ? "lyxenum" : "lyxitem" ) + " "
|
+ to_utf8(enumcounter);
|
||||||
+ to_utf8(enumcounter), pbegin->magicLabel());
|
openParTag(xs, bstyle, cssClass, parId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
openParTag(xs, bstyle, pbegin->magicLabel());
|
openParTag(xs, bstyle, parId);
|
||||||
xs << xml::CR();
|
xs << xml::CR();
|
||||||
|
|
||||||
// we will on occasion need to remember a layout from before.
|
// we will on occasion need to remember a layout from before.
|
||||||
@ -491,7 +499,7 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
|
|||||||
pos_type sep = 0;
|
pos_type sep = 0;
|
||||||
bool const labelfirst = style.htmllabelfirst();
|
bool const labelfirst = style.htmllabelfirst();
|
||||||
if (!labelfirst)
|
if (!labelfirst)
|
||||||
openItemTag(xs, style, par->params());
|
openItemTag(xs, style, par->params(), par->magicLabel());
|
||||||
|
|
||||||
// label output
|
// label output
|
||||||
if (style.labeltype != LABEL_NO_LABEL &&
|
if (style.labeltype != LABEL_NO_LABEL &&
|
||||||
@ -529,7 +537,7 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
|
|||||||
} // end label output
|
} // end label output
|
||||||
|
|
||||||
if (labelfirst)
|
if (labelfirst)
|
||||||
openItemTag(xs, style, par->params());
|
openItemTag(xs, style, par->params(), par->magicLabel());
|
||||||
|
|
||||||
docstring deferred = par->simpleLyXHTMLOnePar(buf, xs, runparams,
|
docstring deferred = par->simpleLyXHTMLOnePar(buf, xs, runparams,
|
||||||
text.outerFont(distance(begin, par)), true, true, sep);
|
text.outerFont(distance(begin, par)), true, true, sep);
|
||||||
@ -594,8 +602,7 @@ void makeCommand(Buffer const & buf,
|
|||||||
buf.masterBuffer()->params().
|
buf.masterBuffer()->params().
|
||||||
documentClass().counters().step(style.counter, OutputUpdate);
|
documentClass().counters().step(style.counter, OutputUpdate);
|
||||||
|
|
||||||
bool const make_parid = !runparams.for_toc && runparams.html_make_pars;
|
bool const make_parid = !runparams.for_toc && runparams.html_make_pars && style.itemtag().empty();
|
||||||
|
|
||||||
openParTag(xs, style, pbegin->params(),
|
openParTag(xs, style, pbegin->params(),
|
||||||
make_parid ? pbegin->magicLabel() : "");
|
make_parid ? pbegin->magicLabel() : "");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user