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.
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 \
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 \
static char const * latex_delimiters[] = {
"(", ")", "{", "}", "[", "]",
"lceil", "rceil", "lfloor", "rfloor", "langle", "rangle",
+ "llbracket", "rrbracket",
"uparrow", "updownarrow", "Uparrow", "Updownarrow", "downarrow", "Downarrow",
"|", "Vert", "/", "backslash", ""
};
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);
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;
#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"
}
+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);
///
void draw(PainterInfo &, int x, int y) const;
+ ///
+ void validate(LaTeXFeatures & features) const;
///
void write(WriteStream & os) const;
/// write normalized content
};
+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,
{"rbrace", brace, 2 },
{"[", brack, 0 },
{"]", brack, 2 },
+ {"llbracket", dbrack, 0 },
+ {"rrbracket", dbrack, 2 },
{"|", vert, 0 },
{"/", slash, 0 },
{"slash", slash, 0 },