// which will give us all the cross-referenced info. But for every
// entry, so there's a lot of repitition. This should be fixed.
xs << html::StartTag("span", "class='bibtexinfo'")
- << XHTMLStream::ESCAPE_AND
- << bibinfo.getInfo(entry.key(), buffer(), true)
- << html::EndTag("span")
- << html::EndTag("div");
- xs.cr();
+ << XHTMLStream::ESCAPE_AND
+ << bibinfo.getInfo(entry.key(), buffer(), true)
+ << html::EndTag("span")
+ << html::EndTag("div")
+ << html::CR();
}
xs << html::EndTag("div");
return docstring();
// close last entry or entries, depending.
if (level == 3) {
// close this sub-sub-entry
- xs << html::EndTag("li");
- xs.cr();
+ xs << html::EndTag("li") << html::CR();
// is this another sub-sub-entry within the same sub-entry?
if (!eit->same_sub(last)) {
// close this level
- xs << html::EndTag("ul");
- xs.cr();
+ xs << html::EndTag("ul") << html::CR();
level = 2;
}
}
// sub-entry. In that case, we do not want to close anything.
if (level == 2 && !eit->same_sub(last)) {
// close sub-entry
- xs << html::EndTag("li");
- xs.cr();
+ xs << html::EndTag("li") << html::CR();
// is this another sub-entry with the same main entry?
if (!eit->same_main(last)) {
// close this level
- xs << html::EndTag("ul");
- xs.cr();
+ xs << html::EndTag("ul") << html::CR();
level = 1;
}
}
// close the entry.
if (level == 1 && !eit->same_main(last)) {
// close entry
- xs << html::EndTag("li");
- xs.cr();
+ xs << html::EndTag("li") << html::CR();
}
}
<< XHTMLStream::ESCAPE_NONE << sub;
if (!subsub.empty()) {
// it's actually a subsubentry, so we need to start that list
- xs.cr();
- xs << html::StartTag("ul", "class='subsubentry'")
+ xs << html::CR()
+ << html::StartTag("ul", "class='subsubentry'")
<< html::StartTag("li", "class='subsubentry'")
<< XHTMLStream::ESCAPE_NONE << subsub;
level = 3;
xs << html::StartTag("li", "class='main'") << main;
if (!sub.empty()) {
// there's a sub-entry, too
- xs.cr();
- xs << html::StartTag("ul", "class='subentry'")
+ xs << html::CR()
+ << html::StartTag("ul", "class='subentry'")
<< html::StartTag("li", "class='subentry'")
<< XHTMLStream::ESCAPE_NONE << sub;
level = 2;
if (!subsub.empty()) {
// and a sub-sub-entry
- xs.cr();
- xs << html::StartTag("ul", "class='subsubentry'")
+ xs << html::CR()
+ << html::StartTag("ul", "class='subsubentry'")
<< html::StartTag("li", "class='subsubentry'")
<< XHTMLStream::ESCAPE_NONE << subsub;
level = 3;
}
// now we have to close all the open levels
while (level > 0) {
- xs << html::EndTag("li") << html::EndTag("ul");
- xs.cr();
+ xs << html::EndTag("li") << html::EndTag("ul") << html::CR();
--level;
}
- xs << html::EndTag("div");
- xs.cr();
+ xs << html::EndTag("div") << html::CR();
return ods.str();
}
docstring InsetLine::xhtml(XHTMLStream & xs, OutputParams const &) const
{
- xs << html::CompTag("hr");
- xs.cr();
+ xs << html::CompTag("hr") << html::CR();
return docstring();
}
docstring InsetNewline::xhtml(XHTMLStream & xs, OutputParams const &) const
{
- xs << html::CompTag("br");
- xs.cr();
+ xs << html::CR() << html::CompTag("br") << html::CR();
return docstring();
}
continue;
if (depth > lastdepth) {
- xs.cr();
+ xs << html::CR();
// open as many tags as we need to open to get to this level
// this includes the tag for the current level
for (int i = lastdepth + 1; i <= depth; ++i) {
stringstream attr;
attr << "class='lyxtoc-" << i << "'";
- xs << html::StartTag("div", attr.str());
+ xs << html::StartTag("div", attr.str()) << html::CR();
}
lastdepth = depth;
}
// close as many as we have to close to get back to this level
// this includes closing the last tag at this level
for (int i = lastdepth; i >= depth; --i)
- xs << html::EndTag("div");
+ xs << html::EndTag("div") << html::CR();
// now open our tag
stringstream attr;
attr << "class='lyxtoc-" << depth << "'";
- xs << html::StartTag("div", attr.str());
+ xs << html::StartTag("div", attr.str()) << html::CR();
lastdepth = depth;
} else {
// no change of level, so close and open
- xs << html::EndTag("div");
+ xs << html::EndTag("div") << html::CR();
stringstream attr;
attr << "class='lyxtoc-" << depth << "'";
- xs << html::StartTag("div", attr.str());
+ xs << html::StartTag("div", attr.str()) << html::CR();
}
// Now output TOC info for this entry
xs << html::EndTag("a");
}
for (int i = lastdepth; i > 0; --i)
- xs << html::EndTag("div");
- xs << html::EndTag("div");
+ xs << html::EndTag("div") << html::CR();
+ xs << html::EndTag("div") << html::CR();
return ods.str();
}
if (isMultiColumn(cell))
attr << " colspan='" << columnSpan(cell) << "'";
- xs << html::StartTag(celltag, attr.str());
- xs.cr();
+ xs << html::StartTag(celltag, attr.str()) << html::CR();
ret += cellInset(cell)->xhtml(xs, runparams);
- xs << html::EndTag(celltag);
- xs.cr();
+ xs << html::EndTag(celltag) << html::CR();
++cell;
}
xs << html::EndTag("tr");
align = "right";
break;
}
- xs << html::StartTag("div", "class='longtable' style='text-align: " + align + ";'");
+ xs << html::StartTag("div", "class='longtable' style='text-align: " + align + ";'")
+ << html::CR();
if (haveLTCaption()) {
- xs << html::StartTag("div", "class='longtable-caption' style='text-align: " + align + ";'");
+ xs << html::StartTag("div", "class='longtable-caption' style='text-align: " + align + ";'")
+ << html::CR();
for (row_type r = 0; r < nrows(); ++r)
if (row_info[r].caption)
ret += xhtmlRow(xs, r, runparams);
- xs << html::EndTag("div");
+ xs << html::EndTag("div") << html::CR();
}
}
- xs << html::StartTag("table");
+ xs << html::StartTag("table") << html::CR();
// output header info
bool const havefirsthead = haveLTFirstHead();
// in XHTML. this test accomplishes that.
bool const havehead = !havefirsthead && haveLTHead();
if (havehead || havefirsthead) {
- xs << html::StartTag("thead");
+ xs << html::StartTag("thead") << html::CR();
for (row_type r = 0; r < nrows(); ++r) {
if ((havefirsthead && row_info[r].endfirsthead)
|| (havehead && row_info[r].endhead)) {
ret += xhtmlRow(xs, r, runparams, true);
}
}
- xs << html::EndTag("thead");
+ xs << html::EndTag("thead") << html::CR();
}
// output footer info
bool const havelastfoot = haveLTLastFoot();
// as before.
bool const havefoot = !havelastfoot && haveLTFoot();
if (havefoot || havelastfoot) {
- xs << html::StartTag("tfoot");
+ xs << html::StartTag("tfoot") << html::CR();
for (row_type r = 0; r < nrows(); ++r) {
if ((havelastfoot && row_info[r].endlastfoot)
|| (havefoot && row_info[r].endfoot)) {
ret += xhtmlRow(xs, r, runparams);
}
}
- xs << html::EndTag("tfoot");
+ xs << html::EndTag("tfoot") << html::CR();
}
- xs << html::StartTag("tbody");
+ xs << html::StartTag("tbody") << html::CR();
for (row_type r = 0; r < nrows(); ++r) {
if (isValidRow(r)) {
ret += xhtmlRow(xs, r, runparams);
}
}
xs << html::EndTag("tbody")
- << html::EndTag("table");
+ << html::CR()
+ << html::EndTag("table")
+ << html::CR();
if (is_long_tabular)
- xs << html::EndTag("div");
+ xs << html::EndTag("div") << html::CR();
return ret;
}
FileName const & mathimg = pimage->filename();
xs << html::StartTag(tag)
<< html::CompTag("img", "src=\"" + mathimg.onlyFileName() + "\"")
- << html::EndTag(tag);
- xs.cr();
+ << html::EndTag(tag)
+ << html::CR();
// add the file to the list of files to be exported
op.exportdata->addExternalFile("xhtml", mathimg);
success = true;
xs << html::StartTag(tag, "class='math'")
<< XHTMLStream::ESCAPE_AND
<< latex
- << html::EndTag(tag);
- xs.cr();
+ << html::EndTag(tag)
+ << html::CR();
}
return docstring();
}
void extractStructure(MathData & ar, ExternalMath kind)
{
- //lyxerr << "\nStructure from: " << ar << endl;
+ lyxerr << "\nStructure from: " << ar << endl;
if (kind != MATHML && kind != HTML)
splitScripts(ar);
extractDelims(ar);
extractLims(ar);
extractStrings(ar);
}
- //lyxerr << "\nStructure to: " << ar << endl;
+ lyxerr << "\nStructure to: " << ar << endl;
}
{}
-void XHTMLStream::cr()
-{
- // tabs?
- os_ << from_ascii("\n");
-}
-
-
void XHTMLStream::writeError(std::string const & s)
{
LYXERR0(s);
clearTagDeque();
// tabs?
os_ << tag.asTag();
- cr();
+ *this << html::CR();
+ return *this;
+}
+
+
+XHTMLStream & XHTMLStream::operator<<(html::CR const &)
+{
+ // tabs?
+ os_ << from_ascii("\n");
return *this;
}
// FIXME We should see if there's a label to be output and
// do something with it.
if (par != pbegin)
- xs.cr();
+ xs << html::CR();
// If we are already in a paragraph, and this is the first one, then we
// do not want to open the paragraph tag.
|| (!opened && runparams.html_in_par && par == pbegin && nextpar != pend);
if (needclose) {
closeTag(xs, lay);
- xs.cr();
+ xs << html::CR();
}
if (!deferred.empty()) {
- xs << XHTMLStream::ESCAPE_NONE << deferred;
- xs.cr();
+ xs << XHTMLStream::ESCAPE_NONE << deferred << html::CR();
}
}
return pend;
{
// FIXME XHTML
// Use TextClass::htmlTOCLayout() to figure out how we should look.
- xs << html::StartTag("h2", "class='bibliography'");
- xs << pbegin->layout().labelstring(false);
- xs << html::EndTag("h2");
- xs.cr();
+ xs << html::StartTag("h2", "class='bibliography'")
+ << pbegin->layout().labelstring(false);
+ << html::EndTag("h2");
+ xs << html::CR();
xs << html::StartTag("div", "class='bibliography'");
- xs.cr();
+ xs << html::CR();
makeParagraphs(buf, xs, runparams, text, pbegin, pend);
xs << html::EndTag("div");
return pend;
// open tag for this environment
openTag(xs, bstyle);
- xs.cr();
+ xs << html::CR();
// we will on occasion need to remember a layout from before.
Layout const * lastlay = 0;
xs << lbl;
closeLabelTag(xs, style);
}
- xs.cr();
+ xs << html::CR();
}
} else { // some kind of list
if (style.labeltype == LABEL_MANUAL) {
openLabelTag(xs, style);
sep = par->firstWordLyXHTML(xs, runparams);
closeLabelTag(xs, style);
- xs.cr();
+ xs << html::CR();
}
else {
openLabelTag(xs, style);
xs << par->params().labelString();
closeLabelTag(xs, style);
- xs.cr();
+ xs << html::CR();
}
}
} // end label output
lastlay = &style;
} else
closeItemTag(xs, style);
- xs.cr();
+ xs << html::CR();
}
// The other possibility is that the depth has increased, in which
// case we need to recurse.
if (lastlay != 0)
closeItemTag(xs, *lastlay);
closeTag(xs, bstyle);
- xs.cr();
+ xs << html::CR();
return pend;
}
pbegin->simpleLyXHTMLOnePar(buf, xs, runparams,
text.outerFont(distance(begin, pbegin)));
closeTag(xs, style);
- xs.cr();
+ xs << html::CR();
}
} // end anonymous namespace
std::string attr_;
};
+// trivial struct for output of newlines
+struct CR{};
+
} // namespace html
class XHTMLStream {
///
explicit XHTMLStream(odocstream & os);
///
- void cr();
- ///
odocstream & os() { return os_; }
///
// int & tab() { return tab_; }
///
XHTMLStream & operator<<(html::CompTag const &);
///
+ XHTMLStream & operator<<(html::CR const &);
+ ///
enum EscapeSettings {
ESCAPE_NONE,
ESCAPE_AND, // meaning &