X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.h;h=0a398d31c29b2ac0e9fda2bd413cc35910e2b091;hb=a174f43bc5515291c4d0b28cacd806c9c9ea4de4;hp=e96d9ee9886dcc04ed14516307fa00d83bbd2202;hpb=e3cb00d7c7da819e3ba4760c1a75c8d60924bfb6;p=lyx.git diff --git a/src/Layout.h b/src/Layout.h index e96d9ee988..0a398d31c2 100644 --- a/src/Layout.h +++ b/src/Layout.h @@ -73,7 +73,7 @@ public: /// void readSpacing(Lexer &); /// - docstring const & name() const { return name_; }; + docstring const & name() const { return name_; } /// void setName(docstring const & n) { name_ = n; } /// @@ -110,24 +110,28 @@ public: /// std::string const & itemtag() const { return itemtag_; } /// - std::string const & htmltag() const { return htmltag_; } + std::string const & htmltag() const; /// - std::string const & htmlattr() const { return htmlattr_; } + std::string const & htmlattr() const; /// - std::string const & htmlitem() const { return htmlitem_; } + std::string const & htmlitemtag() const; /// - std::string const & htmlitemattr() const { return htmlitemattr_; } + std::string const & htmlitemattr() const; /// - std::string const & htmllabel() const { return htmllabel_; } + std::string const & htmllabeltag() const; /// - std::string const & htmllabelattr() const { return htmllabelattr_; } + std::string const & htmllabelattr() const; + /// + std::string defaultCSSClass() const; /// bool htmllabelfirst() const { return htmllabelfirst_; } /// - docstring const & htmlstyle() const { return htmlstyle_; } + docstring htmlstyle() const; /// docstring const & htmlpreamble() const { return htmlpreamble_; } /// + bool htmltitle() const { return htmltitle_; } + /// bool isParagraph() const { return latextype == LATEX_PARAGRAPH; } /// bool isCommand() const { return latextype == LATEX_COMMAND; } @@ -235,10 +239,21 @@ public: LatexType latextype; /// Does this object belong in the title part of the document? bool intitle; - /// Does this layout allow for an optional parameter? - int optionalargs; + /// Is the content to go in the preamble rather than the body? + bool inpreamble; + /// Number of requried arguments for this command or environment + unsigned int reqargs; + /// Number of optional arguments for this command or environment + /// These MUST come at the beginning, so: + /// \cmd[opt1][opt2]{req1}{here is the text from LyX} + /// is fine. But: + /// \cmd[opt1]{req1}[opt2]{here is the text from LyX} + /// is not. + unsigned int optargs; /// Which counter to step docstring counter; + /// Prefix to use when creating labels + docstring refprefix; /// Depth of XML command int commanddepth; @@ -247,8 +262,18 @@ public: /// until it has proper support for the caption inset (JMarc) static Layout * forCaption(); + /// Is this spellchecked? + bool spellcheck; + 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_; @@ -282,29 +307,42 @@ 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_; - /// Tag for HTML output, e.g., h2. - std::string htmltag_; - /// Additional attributes for inclusion with the start tag, - /// e.g.: class='section'. - std::string htmlattr_; + /// 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. - std::string htmlitem_; - /// Attributes for htmlitem_ - std::string htmlitemattr_; + /// 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 (in that case, it might be: span). - std::string htmllabel_; - /// Attributes for the label. - std::string htmllabelattr_; + /// 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): /// ... @@ -314,8 +352,19 @@ private: 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_; + /// Whether this is the paragraph. + bool htmltitle_; + /// 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.