+ idx_type displayIdx() const { return optionals_ + 2; }
+ ///
+ void updateLook() const;
+ /// look through the macro for #n arguments
+ int maxArgumentInDefinition() const;
+ /// add missing #n arguments up to \c maxArg
+ void insertMissingArguments(int maxArg);
+ /// change the arity
+ void changeArity(Cursor & cur, DocIterator const & inset_pos,
+ int newNumArg);
+ /// find arguments in definition and adapt the arity accordingly
+ void commitEditChanges(Cursor & cur, DocIterator const & inset_pos);
+ /// The representation of the macro template, with some holes to edit
+ mutable MathData look_;
+ ///
+ mutable int numargs_;
+ ///
+ mutable int argsInLook_;
+ ///
+ int optionals_;
+ /// keeps the old optional default value when an
+ /// optional argument is disabled
+ std::vector<MathData> optionalValues_;
+
+ /// (re)newcommand or def
+ mutable MacroType type_;
+ /// defined before already?
+ bool redefinition_;
+ ///
+ void createLook(int args) const;
+ ///
+ mutable bool lookOutdated_;
+ /// true if in pre-calculations of metrics to get height of boxes
+ mutable bool premetrics_;
+ ///
+ mutable int labelBoxAscent_;
+ ///
+ mutable int labelBoxDescent_;
+ ///
+ bool premetrics() const { return premetrics_; }
+ ///
+ int commonLabelBoxAscent() const { return labelBoxAscent_; }
+ ///
+ int commonLabelBoxDescent() const { return labelBoxDescent_; }