#include "InsetMathEnv.h"
#include "InsetMathFrac.h"
#include "InsetMathKern.h"
-#include "MathMacro.h"
+#include "InsetMathMacro.h"
#include "InsetMathPar.h"
#include "InsetMathRef.h"
#include "InsetMathRoot.h"
#include "InsetMathStackrel.h"
#include "InsetMathString.h"
#include "InsetMathTabular.h"
-#include "MathMacroTemplate.h"
+#include "InsetMathMacroTemplate.h"
#include "MathExtern.h"
#include "MathFactory.h"
-#include "MathMacroArgument.h"
+#include "InsetMathMacroArgument.h"
#include "MathSupport.h"
#include "Buffer.h"
}
else if (t.cat() == catParameter) {
- Token const & n = getToken();
- if (n.character())
- cell->push_back(MathAtom(new MathMacroArgument(n.character()-'0')));
+ Token const & n = nextToken();
+ char_type c = n.character();
+ if (c && '0' < c && c <= '9') {
+ cell->push_back(MathAtom(new InsetMathMacroArgument(c - '0')));
+ getToken();
+ } else
+ cell->push_back(MathAtom(new InsetMathHash()));
}
else if (t.cat() == catActive)
if (nextToken().cat() == catBegin)
parse(display, FLAG_ITEM, InsetMath::MATH_MODE);
- cell->push_back(MathAtom(new MathMacroTemplate(buf,
+ cell->push_back(MathAtom(new InsetMathMacroTemplate(buf,
name, nargs, 0, MacroTypeDef,
vector<MathData>(), def, display)));
if (nextToken().cat() == catBegin)
parse(display, FLAG_ITEM, InsetMath::MATH_MODE);
- cell->push_back(MathAtom(new MathMacroTemplate(buf,
+ cell->push_back(MathAtom(new InsetMathMacroTemplate(buf,
name, nargs, optionals, MacroTypeNewcommand,
optionalValues, def, display)));
if (nextToken().cat() == catBegin)
parse(display, FLAG_ITEM, InsetMath::MATH_MODE);
- cell->push_back(MathAtom(new MathMacroTemplate(buf,
+ cell->push_back(MathAtom(new InsetMathMacroTemplate(buf,
name, nargs, optionals, MacroTypeNewcommandx,
optionalValues, def, display)));
MathData count;
parse(count, FLAG_ITEM, mode);
int cols;
- if (extractNumber(count, cols)) {
+ // limit arbitrarily to 100 columns
+ if (extractNumber(count, cols) && cols > 0 && cols < 100) {
// resize the table if necessary
size_t first = grid.index(cellrow, cellcol);
for (int i = 1; i < cols; ++i) {
// parse the remaining contents into the "real" cell
parse(*cell, FLAG_ITEM, mode);
} else {
- MathAtom at = MathAtom(new MathMacro(buf, t.cs()));
+ MathAtom at = MathAtom(new InsetMathMacro(buf, t.cs()));
cell->push_back(at);
cell->push_back(MathAtom(new InsetMathBrace(count)));
}
}
else if (t.cs() == "ref" || t.cs() == "eqref" || t.cs() == "prettyref"
- || t.cs() == "pageref" || t.cs() == "vpageref" || t.cs() == "vref") {
+ || t.cs() == "nameref" || t.cs() == "pageref"
+ || t.cs() == "vpageref" || t.cs() == "vref") {
cell->push_back(MathAtom(new InsetMathRef(buf, t.cs())));
docstring const opt = parse_verbatim_option();
docstring const ref = parse_verbatim_item();
else {
success_ = false;
- if (!(mode_ & Parse::QUIET)) {
+ if (!(mode_ & Parse::QUIET) &&
+ !(mode_ & Parse::TRACKMACRO)) {
dump();
lyxerr << "found unknown math environment '"
<< to_utf8(name) << "'" << endl;
}
}
- else if (t.cs() == "kern") {
+ else if (t.cs() == "kern" || t.cs() == "mkern") {
// FIXME: A hack...
docstring s;
int num_tokens = 0;
break;
}
if (s.empty())
- cell->push_back(MathAtom(new InsetMathKern));
+ cell->push_back(MathAtom(new InsetMathMacro(buf, t.cs())));
else
cell->push_back(MathAtom(new InsetMathKern(s)));
}
asArray(label, ar);
if (grid.asHullInset()) {
grid.asHullInset()->label(cellrow, label);
+ grid.asHullInset()->numbered(cellrow, true);
} else {
cell->push_back(createInsetMath(t.cs(), buf));
cell->push_back(MathAtom(new InsetMathBrace(ar)));
else {
// Since the Length class cannot use length variables
// we must not create an InsetMathSpace.
- cell->push_back(MathAtom(new MathMacro(buf, name)));
+ cell->push_back(MathAtom(new InsetMathMacro(buf, name)));
MathData ar;
mathed_parse_cell(ar, '{' + arg + '}', mode_);
cell->append(ar);
parse(cell->back().nucleus()->cell(0), FLAG_ITEM, mode);
} else {
docstring const arg = parse_verbatim_item();
- cell->push_back(MathAtom(new MathMacro(buf, t.cs())));
+ cell->push_back(MathAtom(new InsetMathMacro(buf, t.cs())));
MathData ar;
mathed_parse_cell(ar, '[' + opt + ']', mode_);
cell->append(ar);
new InsetMathBig(t.cs(), delim)));
else {
cell->push_back(createInsetMath(t.cs(), buf));
- putback();
+ // For some reason delim.empty()
+ // is always false here
+ if (delim.at(0))
+ putback();
}
}
}
if (!is_unicode_symbol) {
MathAtom at = is_user_macro ?
- MathAtom(new MathMacro(buf, t.cs()))
+ MathAtom(new InsetMathMacro(buf, t.cs()))
: createInsetMath(t.cs(), buf);
InsetMath::mode_type m = mode;
//if (m == InsetMath::UNDECIDED_MODE)