}
else if (t.cat() == catBegin) {
- array.push_back(MathAtom(new MathBraceInset));
- parse_into(array.back()->cell(0), FLAG_BRACE_LAST);
+ MathArray ar;
+ parse_into(ar, FLAG_BRACE_LAST);
+#ifndef WITH_WARNINGS
+#warning this might be wrong in general!
+#endif
+ // ignore braces around simple items
+ if (ar.size() == 1 || (ar.size() == 2 && ar.back()->asScriptInset())) {
+ array.push_back(ar);
+ } else {
+ array.push_back(MathAtom(new MathBraceInset));
+ array.back()->cell(0).swap(ar);
+ }
}
else if (t.cat() == catEnd) {
if (flags & FLAG_BRACE_LAST)
return;
- lyxerr << "found '}' unexpectedly, array: '" << array << "'\n";
+ //lyxerr << "found '}' unexpectedly, array: '" << array << "'\n";
+ lyxerr << "found '}' unexpectedly\n";
add(array, '}', LM_TC_TEX);
}
else if (t.cat() == catAlign) {
- lyxerr << "found tab unexpectedly, array: '" << array << "'\n";
+ //lyxerr << "found tab unexpectedly, array: '" << array << "'\n";
+ lyxerr << "found tab unexpectedly\n";
add(array, '&', LM_TC_TEX);
}
else if (t.cs() == "\\") {
curr_skip_ = getArg('[', ']');
- lyxerr << "found newline unexpectedly, array: '" << array << "'\n";
+ //lyxerr << "found newline unexpectedly, array: '" << array << "'\n";
+ lyxerr << "found newline unexpectedly\n";
array.push_back(createMathInset("\\"));
}
else if (t.cs() == "right") {
if (!(flags & FLAG_RIGHT)) {
- lyxerr << "got so far: '" << array << "'\n";
+ //lyxerr << "got so far: '" << array << "'\n";
error("Unmatched right delimiter");
}
return;