+ cell->push_back(MathAtom(new InsetMathFrac(buf, InsetMathFrac::UNITFRAC)));
+ }
+ parse(cell->back().nucleus()->cell(0), FLAG_ITEM, mode);
+ parse(cell->back().nucleus()->cell(1), FLAG_ITEM, mode);
+ }
+
+ else if (t.cs() == "cfrac") {
+ // allowed formats are \cfrac[pos]{num}{denom}
+ docstring const arg = getArg('[', ']');
+ //lyxerr << "got so far: '" << arg << "'" << endl;
+ if (arg == "l")
+ cell->push_back(MathAtom(new InsetMathFrac(buf, InsetMathFrac::CFRACLEFT)));
+ else if (arg == "r")
+ cell->push_back(MathAtom(new InsetMathFrac(buf, InsetMathFrac::CFRACRIGHT)));
+ else if (arg.empty() || arg == "c")
+ cell->push_back(MathAtom(new InsetMathFrac(buf, InsetMathFrac::CFRAC)));
+ else {
+ error("found invalid optional argument");
+ break;
+ }
+ parse(cell->back().nucleus()->cell(0), FLAG_ITEM, mode);
+ parse(cell->back().nucleus()->cell(1), FLAG_ITEM, mode);
+ }
+
+ else if (t.cs() == "sideset") {
+ // Here allowed formats are \sideset{_{bl}^{tl}}{_{br}^{tr}}{operator}
+ MathData ar[2];
+ InsetMathScript * script[2] = {0, 0};
+ for (int i = 0; i < 2; ++i) {
+ parse(ar[i], FLAG_ITEM, mode);
+ if (ar[i].size() == 1)
+ script[i] = ar[i][0].nucleus()->asScriptInset();