X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.h;h=596c082b5d6aca131dbaf661714cfd732cf2b1e6;hb=2098f1d8c20d51e63e670bcdc9da8996068975bf;hp=d251d292c2ec6e7f51e3093cfa488bda955fdfea;hpb=9aad4bc27f607d869be86681dce1ef60f1053e23;p=lyx.git diff --git a/src/Layout.h b/src/Layout.h index d251d292c2..596c082b5d 100644 --- a/src/Layout.h +++ b/src/Layout.h @@ -28,12 +28,12 @@ class Language; class Lexer; class TextClass; -/* Fix labels are printed flushright, manual labels flushleft. +/* Fixed labels are printed flushright, manual labels flushleft. * MARGIN_MANUAL and MARGIN_FIRST_DYNAMIC are *only* for LABEL_MANUAL, * MARGIN_DYNAMIC and MARGIN_STATIC are *not* for LABEL_MANUAL. * This seems a funny restriction, but I think other combinations are * not needed, so I will not change it yet. - * Correction: MARGIN_FIRST_DYNAMIC also usable with LABEL_STATIC + * Correction: MARGIN_FIRST_DYNAMIC also usable with LABEL_STATIC. */ @@ -73,17 +73,20 @@ public: /// void readSpacing(Lexer &); /// - docstring const & name() const; + docstring const & name() const { return name_; } /// - void setName(docstring const & n); + void setName(docstring const & n) { name_ = n; } /// - docstring const & obsoleted_by() const; + docstring const & obsoleted_by() const { return obsoleted_by_; } /// - docstring const & depends_on() const; + docstring const & depends_on() const { return depends_on_; } /// std::string const & latexname() const { return latexname_; } /// - docstring const & labelstring() const { return labelstring_; } + void setLatexName(std::string const & n) { latexname_ = n; } + /// + docstring const & labelstring(bool in_appendix) const + { return in_appendix ? labelstring_appendix_ : labelstring_; } /// docstring const & endlabelstring() const { return endlabelstring_; } /// @@ -106,10 +109,26 @@ public: std::string const & labeltag() const { return labeltag_; } /// std::string const & itemtag() const { return itemtag_; } - /// - docstring const & labelstring_appendix() const { - return labelstring_appendix_; - } + /// + std::string const & htmltag() const; + /// + std::string const & htmlattr() const; + /// + std::string const & htmlitemtag() const; + /// + std::string const & htmlitemattr() const; + /// + std::string const & htmllabeltag() const; + /// + std::string const & htmllabelattr() const; + /// + std::string defaultCSSClass() const; + /// + bool htmllabelfirst() const { return htmllabelfirst_; } + /// + docstring htmlstyle() const; + /// + docstring const & htmlpreamble() const { return htmlpreamble_; } /// bool isParagraph() const { return latextype == LATEX_PARAGRAPH; } /// @@ -131,11 +150,6 @@ public: //////////////////////////////////////////////////////////////// // members //////////////////////////////////////////////////////////////// - /** Is this layout the default layout for an unknown layout? If - * so, its name will be displayed as xxx (unknown). - */ - bool unknown_; - /** Default font for this layout/environment. The main font for this kind of environment. If an attribute has INHERITED_*, it means that the value is specified by @@ -223,6 +237,8 @@ public: LatexType latextype; /// Does this object belong in the title part of the document? bool intitle; + /// Is the content to go in the preamble rather than the body? + bool inpreamble; /// Does this layout allow for an optional parameter? int optionalargs; /// Which counter to step @@ -235,12 +251,26 @@ public: /// until it has proper support for the caption inset (JMarc) static Layout * forCaption(); + +private: + /// generates the default CSS for this layout + void makeDefaultCSS() const; + /// + std::string defaultCSSItemClass() const { return defaultCSSClass() + "_item"; } + /// + std::string defaultCSSLabelClass() const { return defaultCSSClass() + "_label"; } + /// Name of the layout/paragraph environment docstring name_; + /// LaTeX name for environment std::string latexname_; -private: + /** Is this layout the default layout for an unknown layout? If + * so, its name will be displayed as xxx (unknown). + */ + bool unknown_; + /** Name of an layout that has replaced this layout. This is used to rename a layout, while keeping backward compatibility @@ -263,10 +293,62 @@ private: std::string latexparam_; /// Internal tag to use (e.g., for sect header) std::string innertag_; - /// Internal tag to use e.g. to surround varlistentry label) + /// Internal tag to use (e.g. to surround varentrylist label) std::string labeltag_; - /// Internal tag to surround the item text in a list) + /// Internal tag to surround the item text in a list. std::string itemtag_; + /// The interpretation of this tag varies depending upon the latextype. + /// In an environment, it is the tag enclosing all content for this set of + /// paragraphs. So for quote, e.g,. it would be: blockquote. For itemize, + /// it would be: ul. (You get the idea.) + /// + /// For a command, it is the tag enclosing the content of the command. + /// So, for section, it might be: h2. + /// + /// For the paragraph type, it is the tag that will enclose each paragraph. + /// + /// Defaults to "div". + mutable std::string htmltag_; + /// Additional attributes for inclusion with the start tag. Defaults + /// to: class="layoutname". + mutable std::string htmlattr_; + /// Tag for individual paragraphs in an environment. In lists, this + /// would be something like "li". But it also needs to be set for + /// quotation, e.g., since the paragraphs in a quote need to be + /// in "p" tags. Default is "div". + /// Note that when I said "environment", I meant it: This has no + /// effect for LATEX_PARAGRAPH type layouts. + mutable std::string htmlitemtag_; + /// Attributes for htmlitemtag_. Default is: class="layoutname_item". + mutable std::string htmlitemattr_; + /// Tag for labels, of whatever sort. One use for this is in setting + /// descriptions, in which case it would be: dt. Another use is to + /// customize the display of, say, the auto-generated label for + /// sections. Defaults to "span". + /// If set to "NONE", this suppresses the printing of the label. + mutable std::string htmllabeltag_; + /// Attributes for the label. Defaults to: class="layoutname_label". + mutable std::string htmllabelattr_; + /// Whether to put the label before the item, or within the item. + /// I.e., do we have (true): + /// ... + /// or instead (false): + /// ... + /// The latter is the default. + bool htmllabelfirst_; + /// CSS information needed by this layout. + docstring htmlstyle_; + /// Should we generate the default CSS for this layout, even if HTMLStyle + /// has been given? Default is false. + /// Note that the default CSS is output first, then the user CSS, so it is + /// possible to override what one does not want. + bool htmlforcecss_; + /// A cache for the default style info so generated. + mutable docstring htmldefaultstyle_; + /// Any other info for the HTML header. + docstring htmlpreamble_; + /// calculating this is expensive, so we cache it. + mutable std::string defaultcssclass_; /// This is the `category' for this layout. The following are /// recommended basic categories: FrontMatter, BackMatter, MainText, /// Section, Starred, List, Theorem.