}
+XHTMLStream & XHTMLStream::operator<<(char c)
+{
+ clearTagDeque();
+ if (nextraw_) {
+ os_ << c;
+ nextraw_ = false;
+ } else {
+ string const d = html::escapeChar(c);
+ os_ << from_ascii(d);
+ }
+ return *this;
+}
+
+
XHTMLStream & XHTMLStream::operator<<(int i)
{
clearTagDeque();
}
+void openTag(XHTMLStream & xs, Layout const & lay,
+ ParagraphParameters const & params)
+{
+ // FIXME Are there other things we should handle here?
+ string const align = alignmentToCSS(params.align());
+ if (align.empty()) {
+ openTag(xs, lay);
+ return;
+ }
+ string attrs = lay.htmlattr() + " style='text-align: " + align + ";'";
+ xs << html::StartTag(lay.htmltag(), attrs);
+}
+
+
inline void closeTag(XHTMLStream & xs, Layout const & lay)
{
xs << html::EndTag(lay.htmltag());
}
+void openItemTag(XHTMLStream & xs, Layout const & lay,
+ ParagraphParameters const & params)
+{
+ // FIXME Are there other things we should handle here?
+ string const align = alignmentToCSS(params.align());
+ if (align.empty()) {
+ openItemTag(xs, lay);
+ return;
+ }
+ string attrs = lay.htmlattr() + " style='text-align: " + align + ";'";
+ xs << html::StartTag(lay.htmlitemtag(), attrs);
+}
+
+
inline void closeItemTag(XHTMLStream & xs, Layout const & lay)
{
xs << html::EndTag(lay.htmlitemtag());
bool const opened = runparams.html_make_pars &&
(par != pbegin || !runparams.html_in_par);
if (opened)
- openTag(xs, lay);
+ openTag(xs, lay, par->params());
docstring const deferred =
par->simpleLyXHTMLOnePar(buf, xs, runparams, text.outerFont(distance(begin, par)));
bool const labelfirst = style.htmllabelfirst();
if (!labelfirst)
- openItemTag(xs, style);
+ openItemTag(xs, style, par->params());
// label output
if (style.labeltype != LABEL_NO_LABEL &&
} // end label output
if (labelfirst)
- openItemTag(xs, style);
+ openItemTag(xs, style, par->params());
par->simpleLyXHTMLOnePar(buf, xs, runparams,
text.outerFont(distance(begin, par)), sep);
if (!style.counter.empty())
buf.params().documentClass().counters().step(style.counter, OutputUpdate);
- openTag(xs, style);
+ openTag(xs, style, pbegin->params());
// Label around sectioning number:
// FIXME Probably need to account for LABEL_MANUAL
}
+string alignmentToCSS(LyXAlignment align) {
+ switch (align) {
+ case LYX_ALIGN_BLOCK:
+ // we are NOT going to use text-align: justify!!
+ case LYX_ALIGN_LEFT:
+ return "left";
+ case LYX_ALIGN_RIGHT:
+ return "right";
+ case LYX_ALIGN_CENTER:
+ return "center";
+ default:
+ break;
+ }
+ return "";
+}
+
} // namespace lyx