X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.h;h=c8f7c95ad08ad70dc0d64cc98747b953d4b5e9d3;hb=35bb9cb4a63bbbd103306ec749f082faf318c56b;hp=913546fd744c37e3f993b13390e1f01f017cb871;hpb=7bdc34a98700f487a923ea2b3546f476b9d5d98c;p=lyx.git diff --git a/src/Layout.h b/src/Layout.h index 913546fd74..c8f7c95ad0 100644 --- a/src/Layout.h +++ b/src/Layout.h @@ -94,6 +94,7 @@ public: docstring labelstring; docstring menustring; bool mandatory; + bool nodelims; docstring ldelim; docstring rdelim; docstring defaultarg; @@ -104,23 +105,40 @@ public: FontInfo font; FontInfo labelfont; bool autoinsert; + bool insertcotext; + bool insertonnewline; + ArgPassThru passthru; + docstring pass_thru_chars; + bool is_toc_caption; + bool free_spacing; + std::string newlinecmd; }; /// typedef std::map LaTeXArgMap; /// - LaTeXArgMap args() const; - /// LaTeXArgMap const & latexargs() const { return latexargs_; } /// LaTeXArgMap const & postcommandargs() const { return postcommandargs_; } /// + LaTeXArgMap const & listpreamble() const { return listpreamble_; } + /// LaTeXArgMap const & itemargs() const { return itemargs_; } + /// Returns true is the layout has arguments. If false, then an + /// InsetArgument in this layout stands for the parent InsetText. + bool hasArgs() const; + /// Returns latexargs() + postcommandargs() + itemargs(). + /// But note that it returns a *copy*, not a reference, so do not do + /// anything like: + /// Layout::LaTeXArgMap::iterator it = args().begin(); + /// Layout::LaTeXArgMap::iterator en = args().end(); + /// Those are iterators for different containers. + LaTeXArgMap args() const; /// int optArgs() const; /// int requiredArgs() const; /// - docstring const & labelstring(bool in_appendix) const + docstring const & labelstring(bool in_appendix) const { return in_appendix ? labelstring_appendix_ : labelstring_; } /// docstring const & endlabelstring() const { return endlabelstring_; } @@ -135,7 +153,11 @@ public: /// this layout for language \p lang docstring const babelpreamble() const { return babelpreamble_; } /// - std::set const & requires() const { return requires_; } + std::set const & required() const { return requires_; } + /// + std::set const & autonests() const { return autonests_; } + /// + std::set const & isAutonestedBy() const { return autonested_by_; } /// std::string const & latexparam() const { return latexparam_; } /// @@ -148,25 +170,25 @@ public: std::string const & labeltag() const { return labeltag_; } /// std::string const & itemtag() const { return itemtag_; } - /// + /// 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 htmltitle() const { return htmltitle_; } @@ -183,10 +205,7 @@ public: } /// Is this the kind of layout in which adjacent paragraphs /// are handled as one group? - bool isParagraphGroup() const { - return latextype == LATEX_ENVIRONMENT - || latextype == LATEX_BIB_ENVIRONMENT; - } + bool isParagraphGroup() const { return par_group_; } /// bool labelIsInline() const { return labeltype == LABEL_STATIC @@ -199,11 +218,17 @@ public: || labeltype == LABEL_CENTERED || labeltype == LABEL_BIBLIO; } + /// + bool addToToc() const { return add_to_toc_; } + /// + std::string tocType() const { return toc_type_; } + /// + bool isTocCaption() const { return is_toc_caption_; } /// bool operator==(Layout const &) const; /// - bool operator!=(Layout const & rhs) const + bool operator!=(Layout const & rhs) const { return !(*this == rhs); } //////////////////////////////////////////////////////////////// @@ -275,9 +300,13 @@ public: /// bool nextnoindent; /// + ToggleIndentation toggle_indent; + /// bool free_spacing; /// bool pass_thru; + /// Individual chars to be passed verbatim + docstring pass_thru_chars; /// bool parbreak_is_newline; /// show this in toc @@ -288,6 +317,12 @@ public: /** true when the fragile commands in the paragraph need to be \protect'ed. */ bool needprotect; + /** true when the verbatim stuff of this layout needs to be + \cprotect'ed. */ + bool needcprotect; + /** true when specific commands in this paragraph need to be + protected in an \mbox. */ + bool needmboxprotect; /// true when empty paragraphs should be kept. bool keepempty; /// Type of LaTeX object @@ -298,6 +333,10 @@ public: bool inpreamble; /// Which counter to step docstring counter; + /// Resume counter? + bool resumecounter; + /// Step master counter? + bool stepmastercounter; /// Prefix to use when creating labels docstring refprefix; /// Depth of XML command @@ -333,7 +372,7 @@ private: std::string defaultCSSItemClass() const { return defaultCSSClass() + "_item"; } /// std::string defaultCSSLabelClass() const { return defaultCSSClass() + "_label"; } - + /// Name of the layout/paragraph environment docstring name_; @@ -378,13 +417,13 @@ private: /// 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, + /// 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". @@ -394,7 +433,7 @@ private: 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 + /// 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. @@ -403,7 +442,7 @@ private: 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 + /// 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_; @@ -433,7 +472,7 @@ private: mutable std::string defaultcssclass_; /// This is the `category' for this layout. The following are /// recommended basic categories: FrontMatter, BackMatter, MainText, - /// Section, Starred, List, Theorem. + /// Sectioning, Starred, List, Reasoning. docstring category_; /// Macro definitions needed for this layout docstring preamble_; @@ -441,16 +480,31 @@ private: docstring langpreamble_; /// Language and babel dependent macro definitions needed for this layout docstring babelpreamble_; + /// Are adjacent paragraphs handled as one group? + bool par_group_; /// Packages needed for this layout std::set requires_; + /// Layouts that are by default nested after this one + std::set autonests_; + /// Layouts that by auto-nest this one + std::set autonested_by_; /// LaTeXArgMap latexargs_; /// LaTeXArgMap postcommandargs_; /// + LaTeXArgMap listpreamble_; + /// LaTeXArgMap itemargs_; + /// + bool add_to_toc_; + /// + std::string toc_type_; + /// + bool is_toc_caption_; }; + } // namespace lyx #endif