X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_xhtml.cpp;h=0a0bfd3cbe328f105941b066eaf53e0552851a7d;hb=af6cb2d0e239a4e84a8e25c947862c215aac93f4;hp=7212bb2de10651867be456f4f49dd4f111a09e44;hpb=5cadeed4d7a2c8e7d64f1e774d6dea5621382539;p=lyx.git diff --git a/src/output_xhtml.cpp b/src/output_xhtml.cpp index 7212bb2de1..0a0bfd3cbe 100644 --- a/src/output_xhtml.cpp +++ b/src/output_xhtml.cpp @@ -221,11 +221,24 @@ string fontToTag(html::FontTypes type) return "del"; case FT_ITALIC: return "i"; + case FT_UPRIGHT: case FT_SLANTED: case FT_SMALLCAPS: case FT_ROMAN: case FT_SANS: - case FT_TYPER: + case FT_TYPE: + case FT_SIZE_TINY: + case FT_SIZE_SCRIPT: + case FT_SIZE_FOOTNOTE: + case FT_SIZE_SMALL: + case FT_SIZE_NORMAL: + case FT_SIZE_LARGE: + case FT_SIZE_LARGER: + case FT_SIZE_LARGEST: + case FT_SIZE_HUGE: + case FT_SIZE_HUGER: + case FT_SIZE_INCREASE: + case FT_SIZE_DECREASE: return "span"; } // kill warning @@ -252,6 +265,8 @@ StartTag fontToStartTag(html::FontTypes type) return html::StartTag(tag, "class='wline'"); case FT_ITALIC: return html::StartTag(tag); + case FT_UPRIGHT: + return html::StartTag(tag, "style='font-style:normal;'"); case FT_SLANTED: return html::StartTag(tag, "style='font-style:oblique;'"); case FT_SMALLCAPS: @@ -260,8 +275,28 @@ StartTag fontToStartTag(html::FontTypes type) return html::StartTag(tag, "style='font-family:serif;'"); case FT_SANS: return html::StartTag(tag, "style='font-family:sans-serif;'"); - case FT_TYPER: + case FT_TYPE: return html::StartTag(tag, "style='font-family:monospace;'"); + case FT_SIZE_TINY: + case FT_SIZE_SCRIPT: + case FT_SIZE_FOOTNOTE: + return html::StartTag(tag, "style='font-size:x-small;'"); + case FT_SIZE_SMALL: + return html::StartTag(tag, "style='font-size:small;'"); + case FT_SIZE_NORMAL: + return html::StartTag(tag, "style='font-size:normal;'"); + case FT_SIZE_LARGE: + return html::StartTag(tag, "style='font-size:large;'"); + case FT_SIZE_LARGER: + case FT_SIZE_LARGEST: + return html::StartTag(tag, "style='font-size:x-large;'"); + case FT_SIZE_HUGE: + case FT_SIZE_HUGER: + return html::StartTag(tag, "style='font-size:xx-large;'"); + case FT_SIZE_INCREASE: + return html::StartTag(tag, "style='font-size:larger;'"); + case FT_SIZE_DECREASE: + return html::StartTag(tag, "style='font-size:smaller;'"); } // kill warning return StartTag(""); @@ -597,7 +632,8 @@ XHTMLStream & XHTMLStream::operator<<(html::EndTag const & etag) // it was pending, so we just erase it writeError("Tried to close pending tag `" + etag.tag_ + "' when other tags were pending. Last pending tag is `" - + pending_tags_.back()->tag_ + "'. Tag discarded."); + + to_utf8(pending_tags_.back()->writeTag()) + + "'. Tag discarded."); pending_tags_.erase(dit); return *this; } @@ -614,7 +650,7 @@ XHTMLStream & XHTMLStream::operator<<(html::EndTag const & etag) string estr = "Closing tag `" + etag.tag_ + "' when other tags are pending. Discarded pending tags:\n"; for (dit = pending_tags_.begin(); dit != den; ++dit) - estr += (*dit)->tag_ + "\n"; + estr += to_utf8(html::htmlize((*dit)->writeTag(), XHTMLStream::ESCAPE_ALL)) + "\n"; writeError(estr); // clear the pending tags... pending_tags_.clear(); @@ -706,35 +742,15 @@ XHTMLStream & XHTMLStream::operator<<(html::EndTag const & etag) // curtag is now the one we actually want. os_ << curtag->writeEndTag(); tag_stack_.pop_back(); - + return *this; } // End code for XHTMLStream namespace { - -// convenience functions - -inline void openTag(XHTMLStream & xs, Layout const & lay) -{ - xs << html::StartTag(lay.htmltag(), lay.htmlattr()); -} - - -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); -} +// convenience functions inline void openParTag(XHTMLStream & xs, Layout const & lay, std::string parlabel) @@ -815,7 +831,7 @@ ParagraphList::const_iterator findLastParagraph( ParagraphList::const_iterator findEndOfEnvironment( - ParagraphList::const_iterator const pstart, + ParagraphList::const_iterator const & pstart, ParagraphList::const_iterator const & pend) { ParagraphList::const_iterator p = pstart; @@ -828,15 +844,19 @@ ParagraphList::const_iterator findEndOfEnvironment( // it can happen. We pretend that it's just at lowest depth. if (style.latextype == LATEX_COMMAND) return p; + // If depth is down, we're done if (p->params().depth() < depth) return p; + // If depth is up, we're not done if (p->params().depth() > depth) continue; - // Now we know we are at the same depth - if (style.latextype == LATEX_PARAGRAPH - || style.latexname() != bstyle.latexname()) + + // FIXME I am not sure about the first check. + // Surely we *could* have different layouts that count as + // LATEX_PARAGRAPH, right? + if (style.latextype == LATEX_PARAGRAPH || style != bstyle) return p; } return pend;