From: Jean-Marc Lasgouttes Date: Thu, 12 Jan 2017 09:27:41 +0000 (+0100) Subject: Implement mathClass() for \big and friends X-Git-Tag: 2.3.0alpha1~490^2~2 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=4cea47d1eb082ed2e957cfe381fe4cdfd951453e;p=features.git Implement mathClass() for \big and friends The information here is obtained by reading LaTeX sources. --- diff --git a/src/mathed/InsetMathBig.cpp b/src/mathed/InsetMathBig.cpp index eeaf96514b..889f8d4f97 100644 --- a/src/mathed/InsetMathBig.cpp +++ b/src/mathed/InsetMathBig.cpp @@ -39,6 +39,25 @@ docstring InsetMathBig::name() const } +MathClass InsetMathBig::mathClass() const +{ + /* The class of the delimiter depends on the type (l, m, r, nothing). + * For example, the definition of \bigl in LaTeX sources is + * \def\bigl{\mathopen\big} + */ + switch(name_.back()) { + case 'l': + return MC_OPEN; + case 'm': + return MC_REL; + case 'r': + return MC_CLOSE; + default: + return MC_ORD; + } +} + + Inset * InsetMathBig::clone() const { return new InsetMathBig(*this); @@ -49,9 +68,9 @@ InsetMathBig::size_type InsetMathBig::size() const { // order: big Big bigg Bigg biggg Biggg // 0 1 2 3 4 5 - char_type const c = name_[name_.size() - 1]; + char_type const c = name_.back(); int const base_size = (c == 'l' || c == 'm' || c == 'r') ? 4 : 3; - return name_[0] == 'B' ? + return name_.front() == 'B' ? 2 * (name_.size() - base_size) + 1: 2 * (name_.size() - base_size); } diff --git a/src/mathed/InsetMathBig.h b/src/mathed/InsetMathBig.h index 996a30a39d..83010a9260 100644 --- a/src/mathed/InsetMathBig.h +++ b/src/mathed/InsetMathBig.h @@ -24,6 +24,8 @@ public: InsetMathBig(docstring const & name, docstring const & delim); /// docstring name() const; + /// class is different for l(eft), r(ight) and m(iddle) + MathClass mathClass() const; /// void metrics(MetricsInfo & mi, Dimension & dim) const; ///