X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_xhtml.cpp;h=44d94e3e14b8e7274a8771887a2349d915112b02;hb=4594b1425b484138fcae28996f460312d810b8d5;hp=67ae2cc3029a540f5fd04122ff8d801fddffee53;hpb=9fd3c8e9a4a5cad7eb3821c700bfb6e7e95da5ad;p=lyx.git diff --git a/src/output_xhtml.cpp b/src/output_xhtml.cpp index 67ae2cc302..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(); @@ -250,14 +276,19 @@ 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); if (label_tag_opened) closeLabelTag(os, cstyle); os << '\n'; - } else if (style.latextype == LATEX_ENVIRONMENT + } + // FIXME Why did I put that first condition?? + else if (style.latextype == LATEX_ENVIRONMENT && style.labeltype != LABEL_NO_LABEL) { bool const label_tag_opened = openLabelTag(os, cstyle); os << pbegin->expandLabel(style, buf.params(), false); @@ -265,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 { @@ -297,9 +334,15 @@ 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; } } @@ -326,6 +369,7 @@ void makeCommand(Buffer const & buf, bool const main_tag_opened = openTag(os, style); // Label around sectioning number: + // FIXME Probably need to account for LABEL_MANUAL if (style.labeltype != LABEL_NO_LABEL) { bool const label_tag_opened = openLabelTag(os, style); os << pbegin->expandLabel(style, buf.params(), false); @@ -354,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; @@ -371,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??