X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_xhtml.cpp;h=44d94e3e14b8e7274a8771887a2349d915112b02;hb=4594b1425b484138fcae28996f460312d810b8d5;hp=77ecb834cb7f5c229fd1aa815c658d13c4454c89;hpb=30b081c8f99579462b220e50dcd8eb345f3293cb;p=lyx.git diff --git a/src/output_xhtml.cpp b/src/output_xhtml.cpp index 77ecb834cb..44d94e3e14 100644 --- a/src/output_xhtml.cpp +++ b/src/output_xhtml.cpp @@ -65,6 +65,11 @@ docstring escapeChar(char_type c) } +// FIXME do something here. +docstring htmlize(docstring const & str) { + return str; +} + // FIXME This needs to be protected somehow. static vector taglist; @@ -196,27 +201,48 @@ ParagraphList::const_iterator makeParagraphs(Buffer const & buf, Layout const & lay = par->layout(); if (!lay.counter.empty()) buf.params().documentClass().counters().step(lay.counter); + // FIXME We should see if there's a label to be output and + // do something with it. if (par != pbegin) os << '\n'; bool const opened = openTag(os, lay); - par->simpleLyXHTMLOnePar(buf, os, runparams, + docstring const deferred = par->simpleLyXHTMLOnePar(buf, os, runparams, outerFont(distance(paragraphs.begin(), par), paragraphs)); if (opened) { closeTag(os, lay); os << '\n'; } + if (!deferred.empty()) + os << deferred << '\n'; } return pend; } - + +ParagraphList::const_iterator makeBibliography(Buffer const & buf, + odocstream & os, + OutputParams const & runparams, + ParagraphList const & paragraphs, + ParagraphList::const_iterator const & pbegin, + ParagraphList::const_iterator const & pend) +{ + os << "

" + << pbegin->layout().labelstring() + << "

\n" + << "
\n"; + makeParagraphs(buf, os, runparams, paragraphs, pbegin, pend); + os << "
"; + return pend; +} + + ParagraphList::const_iterator makeEnvironment(Buffer const & buf, odocstream & os, OutputParams const & runparams, ParagraphList const & paragraphs, ParagraphList::const_iterator const & pbegin, - ParagraphList::const_iterator const & pend) { - + ParagraphList::const_iterator const & pend) +{ ParagraphList::const_iterator par = pbegin; Layout const & bstyle = par->layout(); depth_type const origdepth = pbegin->params().depth(); @@ -241,7 +267,6 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf, case LATEX_ENVIRONMENT: case LATEX_LIST_ENVIRONMENT: case LATEX_ITEM_ENVIRONMENT: { - // FIXME Factor this out. // There are two possiblities in this case. // One is that we are still in the environment in which we // started---which we will be if the depth is the same. @@ -251,7 +276,10 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf, closeItemTag(os, *lastlay); lastlay = 0; } - bool const item_tag_opened = openItemTag(os, cstyle); + bool const labelfirst = cstyle.htmllabelfirst(); + bool item_tag_opened = false; + if (!labelfirst) + item_tag_opened = openItemTag(os, cstyle); if (cstyle.labeltype == LABEL_MANUAL) { bool const label_tag_opened = openLabelTag(os, cstyle); sep = par->firstWordLyXHTML(os, runparams); @@ -268,26 +296,32 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf, closeLabelTag(os, cstyle); os << '\n'; } - + if (labelfirst) + item_tag_opened = openItemTag(os, cstyle); + else + os << ""; par->simpleLyXHTMLOnePar(buf, os, runparams, outerFont(distance(paragraphs.begin(), par), paragraphs), sep); + if (!labelfirst) + os << ""; ++par; - // We may not want to close the tag yet, in particular, - if (item_tag_opened - // if we're not at the end... - && par != pend + if (item_tag_opened) { + // 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 - // and if the depth has changed... - && par->params().depth() != origdepth) { - // then we'll save this layout for later, and close it when - // we get another item. + && style.latextype == LATEX_ITEM_ENVIRONMENT + // and if the depth has changed... + && par->params().depth() != origdepth) { + // then we'll save this layout for later, and close it when + // we get another item. lastlay = &cstyle; - } else { - closeItemTag(os, cstyle); // FIXME + } else { + closeItemTag(os, cstyle); + } os << '\n'; } - } + } // The other possibility is that the depth has increased, in which // case we need to recurse. else { @@ -300,8 +334,13 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf, send = searchParagraph(par, pend); par = makeParagraphs(buf, os, runparams, paragraphs, par, send); break; - // FIXME + // Shouldn't happen case LATEX_BIB_ENVIRONMENT: + send = par; + ++send; + par = makeParagraphs(buf, os, runparams, paragraphs, par, send); + break; + // Shouldn't happen case LATEX_COMMAND: ++par; break; @@ -359,7 +398,6 @@ void xhtmlParagraphs(ParagraphList const & paragraphs, ParagraphList::const_iterator pend = paragraphs.end(); while (par != pend) { - LYXERR0(par->id()); Layout const & style = par->layout(); ParagraphList::const_iterator lastpar = par; ParagraphList::const_iterator send; @@ -376,16 +414,17 @@ void xhtmlParagraphs(ParagraphList const & paragraphs, case LATEX_LIST_ENVIRONMENT: case LATEX_ITEM_ENVIRONMENT: { send = searchEnvironment(par, pend); - par = makeEnvironment(buf, os, runparams, paragraphs, par,send); + par = makeEnvironment(buf, os, runparams, paragraphs, par, send); + break; + } + case LATEX_BIB_ENVIRONMENT: { + send = searchEnvironment(par, pend); + par = makeBibliography(buf, os, runparams, paragraphs, par, send); break; } case LATEX_PARAGRAPH: send = searchParagraph(par, pend); - par = makeParagraphs(buf, os, runparams, paragraphs, par,send); - break; - case LATEX_BIB_ENVIRONMENT: - // FIXME - ++par; + par = makeParagraphs(buf, os, runparams, paragraphs, par, send); break; } // FIXME??