////////////////////////////////////////////////////////////////
XHTMLStream::XHTMLStream(odocstream & os)
- :os_(os)
+ : os_(os), nextraw_(false)
{}
bool XHTMLStream::closeFontTags()
{
+ if (tag_stack_.empty())
+ return true;
// first, we close any open font tags we can close
StartTag curtag = tag_stack_.back();
while (html::isFontTag(curtag.tag_)) {
XHTMLStream & XHTMLStream::operator<<(docstring const & d)
{
clearTagDeque();
- os_ << html::htmlize(d);
+ if (nextraw_) {
+ os_ << d;
+ nextraw_ = false;
+ } else
+ os_ << html::htmlize(d);
return *this;
}
XHTMLStream & XHTMLStream::operator<<(const char * s)
{
clearTagDeque();
- os_ << html::htmlize(from_ascii(s));
+ docstring const d = from_ascii(s);
+ if (nextraw_) {
+ os_ << d;
+ nextraw_ = false;
+ } else
+ os_ << html::htmlize(d);
return *this;
}
XHTMLStream & XHTMLStream::operator<<(char_type c)
{
clearTagDeque();
- os_ << html::escapeChar(c);
+ if (nextraw_) {
+ os_ << c;
+ nextraw_ = false;
+ } else
+ os_ << html::escapeChar(c);
+ return *this;
+}
+
+
+XHTMLStream & XHTMLStream::operator<<(NextRaw const &)
+{
+ nextraw_ = true;
return *this;
}
if (par != pbegin)
xs.cr();
- // FIXME Should we really allow anything other than 'p' here?
-
// If we are already in a paragraph, and this is the first one, then we
// do not want to open the paragraph tag.
- bool const opened =
- (par == pbegin && runparams.html_in_par) ? false : true;
+ // we also do not want to open it if the current layout does not permit
+ // multiple paragraphs.
+ bool const opened = runparams.html_make_pars &&
+ (par != pbegin || !runparams.html_in_par);
if (opened)
openTag(xs, lay);
docstring const deferred =
xs.cr();
}
if (!deferred.empty()) {
- xs << deferred;
+ xs << XHTMLStream::NextRaw() << deferred;
xs.cr();
}
}
}
if (labelfirst)
openItemTag(xs, style);
- else
- // FIXME This should probalby be put into the layout file rather
- // than hardcoded.
- xs << StartTag("span", "class='" + to_utf8(style.name()) + "_inneritem'");
}
par->simpleLyXHTMLOnePar(buf, xs, runparams,
text.outerFont(distance(begin, par)), sep);
- if (!isNormalEnv(style) && !labelfirst)
- xs << EndTag("span");
++par;
// We may not want to close the tag yet, in particular,
// if we're not at the end...
if (par != pend
// and are doing items...
- && style.latextype == LATEX_ITEM_ENVIRONMENT
+ && !isNormalEnv(style)
// and if the depth has changed...
&& par->params().depth() != origdepth) {
// then we'll save this layout for later, and close it when