The branch, master, has been updated. - Log -----------------------------------------------------------------
commit 01a6d4252b94c3b0a38faf32da1eea9b17cbf3c5 Author: Georg Baum <[email protected]> Date: Sun Dec 16 15:49:42 2012 +0100 Full delimiter support for llbracket and rrbracket stmaryrd.sty sets these symbols up as variable size math delimiters (i.e. they may be used with \left and \right). Now LyX knows about that and offers them in the delimiter dialog as well as single symbols. diff --git a/lib/Makefile.am b/lib/Makefile.am index 9888787..ea2d1f4 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -708,6 +708,7 @@ dist_imagesmath_DATA = \ images/math/lfloor.png \ images/math/lfloor_rfloor.png \ images/math/ll.png \ + images/math/llbracket.png \ images/math/llcorner.png \ images/math/Lleftarrow.png \ images/math/lll.png \ @@ -862,6 +863,7 @@ dist_imagesmath_DATA = \ images/math/risingdotseq.png \ images/math/root.png \ images/math/rparen.png \ + images/math/rrbracket.png \ images/math/Rrightarrow.png \ images/math/Rsh.png \ images/math/rtimes.png \ diff --git a/lib/images/math/llbracket.png b/lib/images/math/llbracket.png new file mode 100644 index 0000000..3e4d957 Binary files /dev/null and b/lib/images/math/llbracket.png differ diff --git a/lib/images/math/rrbracket.png b/lib/images/math/rrbracket.png new file mode 100644 index 0000000..2082f69 Binary files /dev/null and b/lib/images/math/rrbracket.png differ diff --git a/src/frontends/qt4/GuiDelimiter.cpp b/src/frontends/qt4/GuiDelimiter.cpp index 2736c20..8303fa6 100644 --- a/src/frontends/qt4/GuiDelimiter.cpp +++ b/src/frontends/qt4/GuiDelimiter.cpp @@ -41,6 +41,7 @@ namespace { static char const * latex_delimiters[] = { "(", ")", "{", "}", "[", "]", "lceil", "rceil", "lfloor", "rfloor", "langle", "rangle", + "llbracket", "rrbracket", "uparrow", "updownarrow", "Uparrow", "Updownarrow", "downarrow", "Downarrow", "|", "Vert", "/", "backslash", "" }; @@ -114,6 +115,8 @@ void initMathSymbols() math_symbols_["rfloor"] = MathSymbol(0x230B, 99, CMSY_FAMILY); math_symbols_["langle"] = MathSymbol(0x2329, 104, CMSY_FAMILY); math_symbols_["rangle"] = MathSymbol(0x232A, 105, CMSY_FAMILY); + math_symbols_["llbracket"] = MathSymbol(0x27e6, 74, STMARY_FAMILY); + math_symbols_["rrbracket"] = MathSymbol(0x27e7, 75, STMARY_FAMILY); math_symbols_["uparrow"] = MathSymbol(0x2191, 34, CMSY_FAMILY); math_symbols_["Uparrow"] = MathSymbol(0x21D1, 42, CMSY_FAMILY); math_symbols_["updownarrow"] = MathSymbol(0x2195, 108, CMSY_FAMILY); @@ -233,6 +236,8 @@ char_type GuiDelimiter::doMatch(char_type const symbol) else if (str == "lfloor") match = "rfloor"; else if (str == "rangle") match = "langle"; else if (str == "langle") match = "rangle"; + else if (str == "llbracket") match = "rrbracket"; + else if (str == "rrbracket") match = "llbracket"; else if (str == "backslash") match = "/"; else if (str == "/") match = "backslash"; else return symbol; diff --git a/src/mathed/InsetMathDelim.cpp b/src/mathed/InsetMathDelim.cpp index 0d2fd97..0653e88 100644 --- a/src/mathed/InsetMathDelim.cpp +++ b/src/mathed/InsetMathDelim.cpp @@ -14,10 +14,13 @@ #include "InsetMathDelim.h" #include "MathData.h" +#include "MathFactory.h" #include "MathStream.h" #include "MathSupport.h" #include "MetricsInfo.h" +#include "LaTeXFeatures.h" + #include "support/docstring.h" #include "frontends/FontMetrics.h" @@ -58,6 +61,30 @@ Inset * InsetMathDelim::clone() const } +void InsetMathDelim::validate(LaTeXFeatures & features) const +{ + InsetMathNest::validate(features); + // The delimiters may be used without \left or \right as well. + // Therefore they are listed in lib/symbols, and if they have + // requirements, we need to add them here. + MathWordList const & words = mathedWordList(); + MathWordList::const_iterator it = words.find(left_); + if (it != words.end()) + { + docstring const req = it->second.requires; + if (!req.empty()) + features.require(to_ascii(req)); + } + it = words.find(right_); + if (it != words.end()) + { + docstring const req = it->second.requires; + if (!req.empty()) + features.require(to_ascii(req)); + } +} + + void InsetMathDelim::write(WriteStream & os) const { MathEnsurer ensurer(os); diff --git a/src/mathed/InsetMathDelim.h b/src/mathed/InsetMathDelim.h index cbea8ec..72e204e 100644 --- a/src/mathed/InsetMathDelim.h +++ b/src/mathed/InsetMathDelim.h @@ -46,6 +46,8 @@ public: void draw(PainterInfo &, int x, int y) const; /// + void validate(LaTeXFeatures & features) const; + /// void write(WriteStream & os) const; /// write normalized content void normalize(NormalStream &) const; diff --git a/src/mathed/MathSupport.cpp b/src/mathed/MathSupport.cpp index 95d27b4..0a87fd6 100644 --- a/src/mathed/MathSupport.cpp +++ b/src/mathed/MathSupport.cpp @@ -160,6 +160,15 @@ double const brack[] = { }; +double const dbrack[] = { + 2, 4, + 0.95, 0.05, 0.05, 0.05, 0.05, 0.95, 0.95, 0.95, + 2, 2, + 0.50, 0.05, 0.50, 0.95, + 0 +}; + + double const corner[] = { 2, 3, 0.95, 0.05, 0.05, 0.05, 0.05, 0.95, @@ -299,6 +308,8 @@ named_deco_struct deco_table[] = { {"rbrace", brace, 2 }, {"[", brack, 0 }, {"]", brack, 2 }, + {"llbracket", dbrack, 0 }, + {"rrbracket", dbrack, 2 }, {"|", vert, 0 }, {"/", slash, 0 }, {"slash", slash, 0 }, ----------------------------------------------------------------------- Summary of changes: lib/Makefile.am | 2 ++ lib/images/math/llbracket.png | Bin 0 -> 143 bytes lib/images/math/rrbracket.png | Bin 0 -> 143 bytes src/frontends/qt4/GuiDelimiter.cpp | 5 +++++ src/mathed/InsetMathDelim.cpp | 27 +++++++++++++++++++++++++++ src/mathed/InsetMathDelim.h | 2 ++ src/mathed/MathSupport.cpp | 11 +++++++++++ 7 files changed, 47 insertions(+), 0 deletions(-) create mode 100644 lib/images/math/llbracket.png create mode 100644 lib/images/math/rrbracket.png hooks/post-receive -- The LyX Source Repository
