X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.cpp;h=fd4709e35659bf8927e4974b014f3efc588b5a14;hb=8b7584846c4e1a9c87a004fab479722fee7e3013;hp=cbac74886ac311b7f731ba938d72646b7d0e58b4;hpb=fc9cfc5d673c9e1d4396e91be8c8e884be3879c5;p=lyx.git diff --git a/src/Layout.cpp b/src/Layout.cpp index cbac74886a..fd4709e356 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -13,15 +13,16 @@ #include #include "Layout.h" +#include "FontInfo.h" #include "Language.h" -#include "TextClass.h" #include "Lexer.h" -#include "FontInfo.h" +#include "output_xhtml.h" +#include "TextClass.h" -#include "support/Messages.h" #include "support/debug.h" #include "support/lassert.h" #include "support/lstrings.h" +#include "support/Messages.h" #include "support/regex.h" @@ -956,8 +957,13 @@ string const & Layout::htmlitemattr() const string const & Layout::htmllabeltag() const { - if (htmllabeltag_.empty()) - htmllabeltag_ = "span"; + if (htmllabeltag_.empty()) { + if (labeltype != LABEL_TOP_ENVIRONMENT && + labeltype != LABEL_CENTERED_TOP_ENVIRONMENT) + htmllabeltag_ = "span"; + else + htmllabeltag_ = "div"; + } return htmllabeltag_; } @@ -1003,27 +1009,77 @@ string Layout::defaultCSSClass() const } -// NOTE There is a whole ton of stuff that could go into this. -// Things like bottomsep, topsep, and parsep could become various -// sorts of margins or padding, for example. But for now we are -// going to keep it simple. +namespace { + string makeMarginValue(char const * side, double d) { + ostringstream os; + os << "margin-" << side << ": " << d << "ex;\n"; + return os.str(); + } +} + + void Layout::makeDefaultCSS() const { // this never needs to be redone, since reloading layouts will // wipe out what we did before. if (!htmldefaultstyle_.empty()) return; - docstring const mainfontCSS = font.asCSS(); - if (!mainfontCSS.empty()) + + // main font + htmldefaultstyle_ = font.asCSS(); + + // bottom margins + string tmp; + if (topsep > 0) + tmp += makeMarginValue("top", topsep); + if (bottomsep > 0) + tmp += makeMarginValue("bottom", bottomsep); + if (!leftmargin.empty()) { + // we can't really do what LyX does with the margin, so + // we'll just figure out how many characters it is + int const len = leftmargin.length(); + tmp += makeMarginValue("left", len); + } + if (!rightmargin.empty()) { + int const len = rightmargin.length(); + tmp += makeMarginValue("right", len); + } + + if (!tmp.empty()) { + if (!htmldefaultstyle_.empty()) + htmldefaultstyle_ += from_ascii("\n"); + htmldefaultstyle_ += from_ascii(tmp); + } + +// tex2lyx does not see output_xhtml.cpp +#ifndef TEX2LYX + // alignment + string where = alignmentToCSS(align); + if (!where.empty()) { + htmldefaultstyle_ += from_ascii("text-align: " + where + ";\n"); + } +#endif + + // wrap up what we have, if anything + if (!htmldefaultstyle_.empty()) htmldefaultstyle_ = from_ascii(htmltag() + "." + defaultCSSClass() + " {\n") + - mainfontCSS + from_ascii("\n}\n"); - if (labelfont == font || htmllabeltag() == "NONE") + htmldefaultstyle_ + from_ascii("\n}\n"); + + if (labeltype == LABEL_NO_LABEL || htmllabeltag() == "NONE") return; - docstring const labelfontCSS = labelfont.asCSS(); - if (!labelfontCSS.empty()) + + docstring labelCSS; + + // label font + if (labelfont != font) + labelCSS = labelfont.asCSS() + from_ascii("\n"); + if (labeltype == LABEL_CENTERED_TOP_ENVIRONMENT) + labelCSS += from_ascii("text-align: center;\n"); + + if (!labelCSS.empty()) htmldefaultstyle_ += from_ascii(htmllabeltag() + "." + defaultCSSLabelClass() + " {\n") + - labelfontCSS + from_ascii("\n}\n"); + labelCSS + from_ascii("\n}\n"); }