#include "Lsstream.h"
#ifdef __GNUG__
-#pragma implementation "formula.h"
+#pragma implementation
#endif
#include "formula.h"
LyXFont WhichFont(short type, int size)
{
LyXFont f;
-
+
if (!Math_Fonts)
mathed_init_fonts();
switch (type) {
- case LM_TC_SYMB:
- f = Math_Fonts[2];
- break;
-
- case LM_TC_BSYM:
- f = Math_Fonts[2];
- break;
-
- case LM_TC_VAR:
- case LM_TC_IT:
- f = Math_Fonts[0];
- break;
-
- case LM_TC_BF:
- f = Math_Fonts[3];
- break;
-
- case LM_TC_SF:
- f = Math_Fonts[7];
- break;
-
- case LM_TC_CAL:
- f = Math_Fonts[4];
- break;
-
- case LM_TC_TT:
- f = Math_Fonts[5];
- break;
-
- case LM_TC_SPECIAL: //f = Math_Fonts[0]; break;
- case LM_TC_TEXTRM:
- case LM_TC_RM:
- f = Math_Fonts[6];
- break;
-
- default:
- f = Math_Fonts[1];
- break;
+ case LM_TC_SYMB:
+ f = Math_Fonts[2];
+ break;
+
+ case LM_TC_BSYM:
+ f = Math_Fonts[2];
+ break;
+
+ case LM_TC_VAR:
+ case LM_TC_IT:
+ f = Math_Fonts[0];
+ break;
+
+ case LM_TC_BF:
+ f = Math_Fonts[3];
+ break;
+
+ case LM_TC_SF:
+ f = Math_Fonts[7];
+ break;
+
+ case LM_TC_CAL:
+ f = Math_Fonts[4];
+ break;
+
+ case LM_TC_TT:
+ f = Math_Fonts[5];
+ break;
+
+ case LM_TC_SPECIAL: //f = Math_Fonts[0]; break;
+ case LM_TC_TEXTRM:
+ case LM_TC_RM:
+ f = Math_Fonts[6];
+ break;
+
+ default:
+ f = Math_Fonts[1];
+ break;
}
f.setSize(lfont_size);
switch (size) {
- case LM_ST_DISPLAY:
- if (type == LM_TC_BSYM) {
- f.incSize();
- f.incSize();
- }
- break;
+ case LM_ST_DISPLAY:
+ if (type == LM_TC_BSYM) {
+ f.incSize();
+ f.incSize();
+ }
+ break;
- case LM_ST_TEXT:
- break;
+ case LM_ST_TEXT:
+ break;
- case LM_ST_SCRIPT:
- f.decSize();
- break;
+ case LM_ST_SCRIPT:
+ f.decSize();
+ break;
- case LM_ST_SCRIPTSCRIPT:
- f.decSize();
- f.decSize();
- break;
+ case LM_ST_SCRIPTSCRIPT:
+ f.decSize();
+ f.decSize();
+ break;
- default:
- lyxerr << "Mathed Error: wrong font size: " << size << endl;
- break;
+ default:
+ lyxerr << "Mathed Error: wrong font size: " << size << endl;
+ break;
}
if (type != LM_TC_TEXTRM)
Math_Fonts[7].setFamily(LyXFont::SANS_FAMILY);
LyXFont f = WhichFont(LM_TC_VAR, LM_ST_TEXT);
- MathedInset::df_asc = lyxfont::maxAscent(f);
- MathedInset::df_des = lyxfont::maxDescent(f);
- MathedInset::df_width = lyxfont::width('I', f);
+ MathedInset::defaultAscent(lyxfont::maxAscent(f));
+ MathedInset::defaultDescent(lyxfont::maxDescent(f));
+ MathedInset::defaultWidth(lyxfont::width('I', f));
}
lyxerr << "InsetFormula::InsetFormula: This shouldn't happen" << endl;
par = is_multiline(p->GetType()) ?
- new MathMatrixInset(static_cast<MathMatrixInset*>(p)):
- new MathParInset(p);
+ new MathMatrixInset(static_cast<MathMatrixInset*>(p)):
+ new MathParInset(p);
// mathcursor = 0;
disp_flag = (par->GetType()>0);
if (lex.GetString() == "\\end_inset")
break;
lyxerr << "InsetFormula::Read: Garbage before \\end_inset,"
- " or missing \\end_inset!" << endl;
+ " or missing \\end_inset!" << endl;
}
- #ifdef DEBUG
+#ifdef DEBUG
Write(lyxerr);
- #endif
+#endif
}
void InsetFormula::draw(BufferView * bv, LyXFont const & f,
- int baseline, float & x, bool) const
+ int baseline, float & x, bool) const
{
MathedInset::workWidth = bv->workWidth();
Painter & pain = bv->painter();
x += float(width(bv, font));
if (is_numbered(par->GetType())) {
- LyXFont wfont = WhichFont(LM_TC_BF, par->size);
+ LyXFont wfont = WhichFont(LM_TC_BF, par->size());
wfont.setLatex(LyXFont::OFF);
if (is_singlely_numbered(par->GetType())) {
pain.text(int(x + 20), baseline, str, wfont);
} else {
MathMatrixInset * mt =
- static_cast<MathMatrixInset*>(par);
+ static_cast<MathMatrixInset*>(par);
int y;
MathedRowSt const * crow = mt->getRowSt();
while (crow) {
par->Metrics();
bv->updateInset(this, false);
- x += par->xo;
- y += par->yo;
+ x += par->xo();
+ y += par->yo();
mathcursor->SetPos(x, y);
sel_x = 0;
sel_y = 0;
void InsetFormula::GetCursorPos(BufferView *, int & x, int & y) const
{
mathcursor->GetPos(x, y);
- x -= par->xo;
- y -= par->yo;
+ x -= par->xo();
+ y -= par->yo();
}
int y;
mathcursor->GetPos(x, y);
// x -= par->xo;
- y -= par->yo;
+ y -= par->yo();
LyXFont font = WhichFont(LM_TC_TEXTRM, LM_ST_TEXT);
int asc = lyxfont::maxAscent(font);
int desc = lyxfont::maxDescent(font);
int y;
mathcursor->GetPos(x, y);
// x -= par->xo;
- y -= par->yo;
+ y -= par->yo();
LyXFont font = WhichFont(LM_TC_TEXTRM, LM_ST_TEXT);
int asc = lyxfont::maxAscent(font);
int desc = lyxfont::maxDescent(font);
void InsetFormula::UpdateLocal(BufferView * bv)
{
par->Metrics(); // To inform lyx kernel the exact size
- // (there were problems with arrays).
+ // (there were problems with arrays).
bv->updateInset(this, true);
}
void InsetFormula::InsetButtonRelease(BufferView * bv,
- int x, int y, int /*button*/)
+ int x, int y, int /*button*/)
{
if (mathcursor) {
HideInsetCursor(bv);
- x += par->xo;
- y += par->yo;
+ x += par->xo();
+ y += par->yo();
mathcursor->SetPos(x, y);
ShowInsetCursor(bv);
if (sel_flag) {
void InsetFormula::InsetButtonPress(BufferView * bv, int x, int y,
- int /*button*/)
+ int /*button*/)
{
sel_flag = false;
sel_x = x; sel_y = y;
void InsetFormula::InsetMotionNotify(BufferView * bv,
- int x, int y, int /*button*/)
+ int x, int y, int /*button*/)
{
if (sel_x && sel_y && abs(x-sel_x) > 4 && !sel_flag) {
sel_flag = true;
HideInsetCursor(bv);
- mathcursor->SetPos(sel_x + par->xo, sel_y + par->yo);
+ mathcursor->SetPos(sel_x + par->xo(), sel_y + par->yo());
mathcursor->SelStart();
ShowInsetCursor(bv);
mathcursor->GetPos(sel_x, sel_y);
} else if (sel_flag) {
HideInsetCursor(bv);
- x += par->xo;
- y += par->yo;
+ x += par->xo();
+ y += par->yo();
mathcursor->SetPos(x, y);
ShowInsetCursor(bv);
mathcursor->GetPos(x, y);
{
if (disp_flag) {
short type = par->GetType();
- bool oldf = is_numbered(type);
+ bool const oldf = is_numbered(type);
if (numbf && !oldf)
++type;
if (!numbf && oldf)
switch (action) {
// --- Cursor Movements ---------------------------------------------
- case LFUN_RIGHTSEL:
- sel = true; // fall through...
+ case LFUN_RIGHTSEL:
+ sel = true; // fall through...
- case LFUN_RIGHT:
- result = DISPATCH_RESULT(mathcursor->Right(sel));
- if (!sel && (result == DISPATCHED))
- result = DISPATCHED_NOUPDATE;
- break;
+ case LFUN_RIGHT:
+ result = DISPATCH_RESULT(mathcursor->Right(sel));
+ if (!sel && (result == DISPATCHED))
+ result = DISPATCHED_NOUPDATE;
+ break;
- case LFUN_LEFTSEL:
- sel = true; // fall through
+ case LFUN_LEFTSEL:
+ sel = true; // fall through
- case LFUN_LEFT:
- result = DISPATCH_RESULT(mathcursor->Left(sel));
- if (!sel && (result == DISPATCHED))
+ case LFUN_LEFT:
+ result = DISPATCH_RESULT(mathcursor->Left(sel));
+ if (!sel && (result == DISPATCHED))
result = DISPATCHED_NOUPDATE;
- break;
+ break;
- case LFUN_UPSEL:
- sel = true;
+ case LFUN_UPSEL:
+ sel = true;
- case LFUN_UP:
- result = DISPATCH_RESULT(mathcursor->Up(sel));
- if (!sel && (result == DISPATCHED))
- result = DISPATCHED_NOUPDATE;
- break;
+ case LFUN_UP:
+ result = DISPATCH_RESULT(mathcursor->Up(sel));
+ if (!sel && (result == DISPATCHED))
+ result = DISPATCHED_NOUPDATE;
+ break;
- case LFUN_DOWNSEL:
- sel = true;
+ case LFUN_DOWNSEL:
+ sel = true;
- case LFUN_DOWN:
- result = DISPATCH_RESULT(mathcursor->Down(sel));
- if (!sel && (result == DISPATCHED))
+ case LFUN_DOWN:
+ result = DISPATCH_RESULT(mathcursor->Down(sel));
+ if (!sel && (result == DISPATCHED))
result = DISPATCHED_NOUPDATE;
- break;
+ break;
- case LFUN_HOME:
- mathcursor->Home();
- result = DISPATCHED_NOUPDATE;
- break;
+ case LFUN_HOME:
+ mathcursor->Home();
+ result = DISPATCHED_NOUPDATE;
+ break;
- case LFUN_END:
- mathcursor->End();
- result = DISPATCHED_NOUPDATE;
- break;
+ case LFUN_END:
+ mathcursor->End();
+ result = DISPATCHED_NOUPDATE;
+ break;
- case LFUN_DELETE_LINE_FORWARD:
- bv->lockedInsetStoreUndo(Undo::DELETE);
- mathcursor->DelLine();
- UpdateLocal(bv);
- break;
+ case LFUN_DELETE_LINE_FORWARD:
+ bv->lockedInsetStoreUndo(Undo::DELETE);
+ mathcursor->DelLine();
+ UpdateLocal(bv);
+ break;
+
+ case LFUN_BREAKLINE:
+ {
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ byte c = arg.empty() ? '1' : arg[0];
+ mathcursor->Insert(c, LM_TC_CR);
+ if (!label.empty()) {
+ mathcursor->setLabel(label);
+ label.erase();
+ }
+ par = mathcursor->GetPar();
+ UpdateLocal(bv);
+ }
+ break;
- case LFUN_BREAKLINE:
- {
- bv->lockedInsetStoreUndo(Undo::INSERT);
- byte c = arg.empty() ? '1' : arg[0];
- mathcursor->Insert(c, LM_TC_CR);
- if (!label.empty()) {
- mathcursor->setLabel(label);
- label.erase();
- }
- par = mathcursor->GetPar();
- UpdateLocal(bv);
- }
- break;
+ case LFUN_TAB:
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ mathcursor->Insert(0, LM_TC_TAB);
+ //UpdateInset(this);
+ break;
- case LFUN_TAB:
- bv->lockedInsetStoreUndo(Undo::INSERT);
- mathcursor->Insert(0, LM_TC_TAB);
- //UpdateInset(this);
- break;
+ case LFUN_TABINSERT:
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ mathcursor->Insert('T', LM_TC_TAB);
+ UpdateLocal(bv);
+ break;
- case LFUN_TABINSERT:
- bv->lockedInsetStoreUndo(Undo::INSERT);
- mathcursor->Insert('T', LM_TC_TAB);
- UpdateLocal(bv);
+ case LFUN_BACKSPACE:
+ if (!mathcursor->Left())
break;
- case LFUN_BACKSPACE:
- if (!mathcursor->Left())
- break;
-
- if (!mathcursor->InMacroMode() && mathcursor->pullArg()) {
- bv->updateInset(this, true);
- break;
- }
- // fall through...
-
- case LFUN_DELETE:
- bv->lockedInsetStoreUndo(Undo::DELETE);
- mathcursor->Delete();
+ if (!mathcursor->InMacroMode() && mathcursor->pullArg()) {
bv->updateInset(this, true);
break;
+ }
+ // fall through...
+
+ case LFUN_DELETE:
+ bv->lockedInsetStoreUndo(Undo::DELETE);
+ mathcursor->Delete();
+ bv->updateInset(this, true);
+ break;
// case LFUN_GETXY:
// sprintf(dispatch_buffer, "%d %d",);
// dispatch_result = dispatch_buffer;
// break;
- case LFUN_SETXY:
- {
- int x;
- int y;
- int x1;
- int y1;
- istringstream ist(arg.c_str());
- ist >> x >> y;
- par->GetXY(x1, y1);
- mathcursor->SetPos(x1 + x, y1 + y);
- }
- break;
+ case LFUN_SETXY:
+ {
+ int x;
+ int y;
+ int x1;
+ int y1;
+ istringstream ist(arg.c_str());
+ ist >> x >> y;
+ par->GetXY(x1, y1);
+ mathcursor->SetPos(x1 + x, y1 + y);
+ }
+ break;
/* cursor selection ---------------------------- */
- case LFUN_PASTE:
- if (was_macro)
- mathcursor->MacroModeClose();
- bv->lockedInsetStoreUndo(Undo::INSERT);
- mathcursor->SelPaste();
- UpdateLocal(bv);
- break;
+ case LFUN_PASTE:
+ if (was_macro)
+ mathcursor->MacroModeClose();
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ mathcursor->SelPaste();
+ UpdateLocal(bv);
+ break;
- case LFUN_CUT:
- bv->lockedInsetStoreUndo(Undo::DELETE);
- mathcursor->SelCut();
- UpdateLocal(bv);
- break;
+ case LFUN_CUT:
+ bv->lockedInsetStoreUndo(Undo::DELETE);
+ mathcursor->SelCut();
+ UpdateLocal(bv);
+ break;
- case LFUN_COPY:
- mathcursor->SelCopy();
- break;
+ case LFUN_COPY:
+ mathcursor->SelCopy();
+ break;
- case LFUN_HOMESEL:
- case LFUN_ENDSEL:
- case LFUN_WORDRIGHTSEL:
- case LFUN_WORDLEFTSEL:
- break;
+ case LFUN_HOMESEL:
+ case LFUN_ENDSEL:
+ case LFUN_WORDRIGHTSEL:
+ case LFUN_WORDLEFTSEL:
+ break;
// --- accented characters ------------------------------
- case LFUN_UMLAUT: mathcursor->setAccent(LM_ddot); break;
- case LFUN_CIRCUMFLEX: mathcursor->setAccent(LM_hat); break;
- case LFUN_GRAVE: mathcursor->setAccent(LM_grave); break;
- case LFUN_ACUTE: mathcursor->setAccent(LM_acute); break;
- case LFUN_TILDE: mathcursor->setAccent(LM_tilde); break;
- case LFUN_MACRON: mathcursor->setAccent(LM_bar); break;
- case LFUN_DOT: mathcursor->setAccent(LM_dot); break;
- case LFUN_CARON: mathcursor->setAccent(LM_check); break;
- case LFUN_BREVE: mathcursor->setAccent(LM_breve); break;
- case LFUN_VECTOR: mathcursor->setAccent(LM_vec); break;
+ case LFUN_UMLAUT: mathcursor->setAccent(LM_ddot); break;
+ case LFUN_CIRCUMFLEX: mathcursor->setAccent(LM_hat); break;
+ case LFUN_GRAVE: mathcursor->setAccent(LM_grave); break;
+ case LFUN_ACUTE: mathcursor->setAccent(LM_acute); break;
+ case LFUN_TILDE: mathcursor->setAccent(LM_tilde); break;
+ case LFUN_MACRON: mathcursor->setAccent(LM_bar); break;
+ case LFUN_DOT: mathcursor->setAccent(LM_dot); break;
+ case LFUN_CARON: mathcursor->setAccent(LM_check); break;
+ case LFUN_BREVE: mathcursor->setAccent(LM_breve); break;
+ case LFUN_VECTOR: mathcursor->setAccent(LM_vec); break;
// Greek mode
- case LFUN_GREEK:
- if (!greek_kb_flag) {
- greek_kb_flag = 1;
- bv->owner()->getMiniBuffer()->Set(_("Math greek mode on"));
- } else
- greek_kb_flag = 0;
- break;
+ case LFUN_GREEK:
+ if (!greek_kb_flag) {
+ greek_kb_flag = 1;
+ bv->owner()->getMiniBuffer()->Set(_("Math greek mode on"));
+ } else
+ greek_kb_flag = 0;
+ break;
// Greek keyboard
- case LFUN_GREEK_TOGGLE:
- greek_kb_flag = (greek_kb_flag) ? 0 : 2;
- if (greek_kb_flag)
- bv->owner()->getMiniBuffer()->Set(_("Math greek keyboard on"));
- else
- bv->owner()->getMiniBuffer()->Set(_("Math greek keyboard off"));
- break;
+ case LFUN_GREEK_TOGGLE:
+ greek_kb_flag = (greek_kb_flag) ? 0 : 2;
+ if (greek_kb_flag)
+ bv->owner()->getMiniBuffer()->Set(_("Math greek keyboard on"));
+ else
+ bv->owner()->getMiniBuffer()->Set(_("Math greek keyboard off"));
+ break;
// Math fonts
- case LFUN_BOLD: mathcursor->toggleLastCode(LM_TC_BF); break;
- case LFUN_SANS: mathcursor->toggleLastCode(LM_TC_SF); break;
- case LFUN_EMPH: mathcursor->toggleLastCode(LM_TC_CAL); break;
- case LFUN_ROMAN: mathcursor->toggleLastCode(LM_TC_RM); break;
- case LFUN_CODE: mathcursor->toggleLastCode(LM_TC_TT); break;
- case LFUN_DEFAULT: mathcursor->setLastCode(LM_TC_VAR); break;
-
- case LFUN_TEX:
- // varcode = LM_TC_TEX;
- mathcursor->setLastCode(LM_TC_TEX);
- bv->owner()->getMiniBuffer()->Set(_("TeX mode"));
- break;
-
- case LFUN_MATH_NUMBER:
- bv->lockedInsetStoreUndo(Undo::INSERT);
- if (disp_flag) {
- short type = par->GetType();
- if (is_numbered(type)) {
- --type;
- if (!label.empty()) {
+ case LFUN_BOLD: mathcursor->toggleLastCode(LM_TC_BF); break;
+ case LFUN_SANS: mathcursor->toggleLastCode(LM_TC_SF); break;
+ case LFUN_EMPH: mathcursor->toggleLastCode(LM_TC_CAL); break;
+ case LFUN_ROMAN: mathcursor->toggleLastCode(LM_TC_RM); break;
+ case LFUN_CODE: mathcursor->toggleLastCode(LM_TC_TT); break;
+ case LFUN_DEFAULT: mathcursor->setLastCode(LM_TC_VAR); break;
+
+ case LFUN_TEX:
+ // varcode = LM_TC_TEX;
+ mathcursor->setLastCode(LM_TC_TEX);
+ bv->owner()->getMiniBuffer()->Set(_("TeX mode"));
+ break;
+
+ case LFUN_MATH_NUMBER:
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ if (disp_flag) {
+ short type = par->GetType();
+ if (is_numbered(type)) {
+ --type;
+ if (!label.empty()) {
label.erase();
- }
- bv->owner()->getMiniBuffer()->Set(_("No number"));
- } else {
- ++type;
- bv->owner()->getMiniBuffer()->Set(_("Number"));
}
- par->SetType(type);
- UpdateLocal(bv);
+ bv->owner()->getMiniBuffer()->Set(_("No number"));
+ } else {
+ ++type;
+ bv->owner()->getMiniBuffer()->Set(_("Number"));
}
- break;
+ par->SetType(type);
+ UpdateLocal(bv);
+ }
+ break;
- case LFUN_MATH_NONUMBER:
- if (is_multi_numbered(par->GetType())) {
+ case LFUN_MATH_NONUMBER:
+ if (is_multi_numbered(par->GetType())) {
// MathMatrixInset *mt = (MathMatrixInset*)par;
//BUG
// mt->SetNumbered(!mt->IsNumbered());
- #warning This is a terrible hack! We should find a better solution.
- while (mathcursor->getLabel() == MathedXIter::error_label) {
- if (LocalDispatch(bv, LFUN_LEFT, string()) == FINISHED)
+#warning This is a terrible hack! We should find a better solution.
+ while (mathcursor->getLabel() == MathedXIter::error_label) {
+ if (LocalDispatch(bv, LFUN_LEFT, string()) == FINISHED)
return DISPATCHED;
- }
- mathcursor->setNumbered();
- UpdateLocal(bv);
}
- break;
+ mathcursor->setNumbered();
+ UpdateLocal(bv);
+ }
+ break;
- case LFUN_MATH_LIMITS:
- bv->lockedInsetStoreUndo(Undo::INSERT);
- if (mathcursor->Limits())
- UpdateLocal(bv);
- // fall through!
-
- case LFUN_MATH_SIZE:
- if (!arg.empty()) {
- latexkeys * l = in_word_set(arg);
- int sz = (l) ? l->id: -1;
- mathcursor->SetSize(sz);
- UpdateLocal(bv);
- break;
- }
- // possible fall through?
+ case LFUN_MATH_LIMITS:
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ if (mathcursor->Limits())
+ UpdateLocal(bv);
+ // fall through!
- case LFUN_INSERT_MATH:
- bv->lockedInsetStoreUndo(Undo::INSERT);
- InsertSymbol(bv, arg);
+ case LFUN_MATH_SIZE:
+ if (!arg.empty()) {
+ latexkeys * l = in_word_set(arg);
+ int sz = (l) ? l->id: -1;
+ mathcursor->SetSize(sz);
+ UpdateLocal(bv);
break;
+ }
+ // possible fall through?
+ case LFUN_INSERT_MATH:
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ InsertSymbol(bv, arg);
+ break;
- case LFUN_INSERT_MATRIX:
- {
- bv->lockedInsetStoreUndo(Undo::INSERT);
- int k, m, n;
- char s[80], arg2[80];
+
+ case LFUN_INSERT_MATRIX:
+ {
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ int k, m, n;
+ char s[80], arg2[80];
// This is just so that too long args won't ooze out of s.
- strncpy(arg2, arg.c_str(), 80); arg2[79]= '\0';
- k = sscanf(arg2, "%d %d %s", &m, &n, s);
- s[79] = '\0';
-
- if (k < 1) {
- m = n = 1;
- } else if (k == 1) {
- n = 1;
- }
+ strncpy(arg2, arg.c_str(), 80); arg2[79]= '\0';
+ k = sscanf(arg2, "%d %d %s", &m, &n, s);
+ s[79] = '\0';
+
+ if (k < 1) {
+ m = n = 1;
+ } else if (k == 1) {
+ n = 1;
+ }
- MathMatrixInset * p = new MathMatrixInset(m, n);
- if (mathcursor && p) {
- if (k > 2 && int(strlen(s)) > m)
- p->SetAlign(s[0], &s[1]);
- mathcursor->Insert(p, LM_TC_ACTIVE_INSET);
- UpdateLocal(bv);
- }
- break;
- }
+ MathMatrixInset * p = new MathMatrixInset(m, n);
+ if (mathcursor && p) {
+ if (k > 2 && int(strlen(s)) > m)
+ p->SetAlign(s[0], &s[1]);
+ mathcursor->Insert(p, LM_TC_ACTIVE_INSET);
+ UpdateLocal(bv);
+ }
+ break;
+ }
- case LFUN_MATH_DELIM:
- {
- bv->lockedInsetStoreUndo(Undo::INSERT);
- char lf[40], rg[40], arg2[40];
- int ilf = '(', irg = '.';
- latexkeys * l;
- string vdelim("(){}[]./|");
+ case LFUN_MATH_DELIM:
+ {
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ char lf[40], rg[40], arg2[40];
+ int ilf = '(', irg = '.';
+ latexkeys * l;
+ string vdelim("(){}[]./|");
- if (arg.empty())
- break;
- ::strncpy(arg2, arg.c_str(), 40);
- arg2[39]= '\0';
- int n = sscanf(arg2, "%s %s", lf, rg);
- lf[39] = '\0';
- rg[39] = '\0';
-
- if (n > 0) {
- if (isdigit(lf[0]))
- ilf = lyx::atoi(lf);
- else
+ if (arg.empty())
+ break;
+ ::strncpy(arg2, arg.c_str(), 40);
+ arg2[39]= '\0';
+ int n = sscanf(arg2, "%s %s", lf, rg);
+ lf[39] = '\0';
+ rg[39] = '\0';
+
+ if (n > 0) {
+ if (isdigit(lf[0]))
+ ilf = lyx::atoi(lf);
+ else
if (lf[1]) {
l = in_word_set(lf, strlen(lf));
// Long words will cause l == 0; so check.
} else if (vdelim.find(lf[0]) != string::npos)
ilf = lf[0];
- if (n > 1) {
- if (isdigit(rg[0]))
+ if (n > 1) {
+ if (isdigit(rg[0]))
irg = lyx::atoi(rg);
- else
+ else
if (rg[1]) {
l = in_word_set(rg, strlen(rg));
if (l)
irg = l->id;
} else if (vdelim.find(rg[0]) != string::npos)
irg = rg[0];
- }
}
-
- MathDelimInset * p = new MathDelimInset(ilf, irg);
- mathcursor->Insert(p, LM_TC_ACTIVE_INSET);
- UpdateLocal(bv);
- break;
}
- case LFUN_PROTECTEDSPACE:
- bv->lockedInsetStoreUndo(Undo::INSERT);
- sp = new MathSpaceInset(1);
- mathcursor->Insert(sp);
- space_on = true;
- UpdateLocal(bv);
- break;
-
- case LFUN_INSERT_LABEL:
- {
- bv->lockedInsetStoreUndo(Undo::INSERT);
- if (par->GetType() < LM_OT_PAR)
- break;
-
- string old_label = is_multiline(par->GetType())
- ? mathcursor->getLabel() : label;
-
- #warning This is a terrible hack! We should find a better solution.
- /// This is needed because in some positions mathcursor->cursor->crow
- /// is equal to 0, and therefore the label cannot be inserted.
- /// So we move the cursor left until mathcursor->cursor->crow != 0.
- while (old_label == MathedXIter::error_label) {
- if (LocalDispatch(bv, LFUN_LEFT, string()) == FINISHED)
- return DISPATCHED;
- old_label = mathcursor->getLabel();
- }
-
- string new_label = arg;
- if (new_label.empty()) {
- string default_label = (lyxrc.label_init_length >= 0) ? "eq:" : "";
- pair<bool, string> res = old_label.empty()
- ? askForText(_("Enter new label to insert:"), default_label)
- : askForText(_("Enter label:"), old_label);
- if (!res.first)
- break;
- new_label = frontStrip(strip(res.second));
- }
-
- if (new_label == old_label)
- break; // Nothing to do
-
- if (!new_label.empty())
- SetNumber(true);
-
- if (!new_label.empty() && bv->ChangeRefsIfUnique(old_label, new_label))
- bv->redraw();
-
- if (is_multi_numbered(par->GetType()))
- mathcursor->setLabel(new_label);
- // MathMatrixInset *mt = (MathMatrixInset*)par;
- // mt->SetLabel(new_label);
- else
- label = new_label;
-
- UpdateLocal(bv);
- break;
- }
-
- case LFUN_MATH_DISPLAY:
- bv->lockedInsetStoreUndo(Undo::EDIT);
- display(!disp_flag);
- UpdateLocal(bv);
- break;
+ MathDelimInset * p = new MathDelimInset(ilf, irg);
+ mathcursor->Insert(p, LM_TC_ACTIVE_INSET);
+ UpdateLocal(bv);
+ break;
+ }
- // Invalid actions under math mode
- case LFUN_MATH_MODE:
- if (mathcursor->getLastCode()!= LM_TC_TEXTRM) {
- bv->owner()->getMiniBuffer()->Set(_("math text mode"));
- varcode = LM_TC_TEXTRM;
- } else {
- varcode = LM_TC_VAR;
- }
- mathcursor->setLastCode(varcode);
- break;
+ case LFUN_PROTECTEDSPACE:
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ sp = new MathSpaceInset(1);
+ mathcursor->Insert(sp);
+ space_on = true;
+ UpdateLocal(bv);
+ break;
- case LFUN_UNDO:
- bv->owner()->getMiniBuffer()->Set(_("Invalid action in math mode!"));
+ case LFUN_INSERT_LABEL:
+ {
+ bv->lockedInsetStoreUndo(Undo::INSERT);
+ if (par->GetType() < LM_OT_PAR)
break;
- //------- dummy actions
- case LFUN_EXEC_COMMAND:
- bv->owner()->getMiniBuffer()->PrepareForCommand();
- break;
+ string old_label = is_multiline(par->GetType())
+ ? mathcursor->getLabel() : label;
+
+#warning This is a terrible hack! We should find a better solution.
+ // This is needed because in some positions
+ // mathcursor->cursor->crow is equal to 0, and therefore
+ // the label cannot be inserted.
+ // So we move the cursor left until
+ // mathcursor->cursor->crow != 0.
+ while (old_label == MathedXIter::error_label) {
+ if (LocalDispatch(bv, LFUN_LEFT, string()) == FINISHED)
+ return DISPATCHED;
+ old_label = mathcursor->getLabel();
+ }
- default:
- if ((action == -1 || action == LFUN_SELFINSERT) && !arg.empty()) {
- unsigned char c = arg[0];
- bv->lockedInsetStoreUndo(Undo::INSERT);
+ string new_label = arg;
+ if (new_label.empty()) {
+ string default_label = (lyxrc.label_init_length >= 0) ? "eq:" : "";
+ pair<bool, string> res = old_label.empty()
+ ? askForText(_("Enter new label to insert:"), default_label)
+ : askForText(_("Enter label:"), old_label);
+ if (!res.first)
+ break;
+ new_label = frontStrip(strip(res.second));
+ }
- if (c == ' ' && mathcursor->getAccent() == LM_hat) {
- c = '^';
- mathcursor->setAccent(0);
- }
+ if (new_label == old_label)
+ break; // Nothing to do
- if (c == 0) { // Dead key, do nothing
- //lyxerr << "deadkey" << endl;
- break;
- }
+ if (!new_label.empty())
+ SetNumber(true);
- if (isalpha(c)) {
- if (mathcursor->getLastCode() == LM_TC_TEX) {
- mathcursor->MacroModeOpen();
- mathcursor->clearLastCode();
- varcode = LM_TC_MIN;
- } else
+ if (!new_label.empty() && bv->ChangeRefsIfUnique(old_label, new_label))
+ bv->redraw();
- if (!varcode) {
- short f = (mathcursor->getLastCode()) ?
- mathcursor->getLastCode() :
- static_cast<MathedTextCodes>(mathcursor->GetFCode());
- varcode = MathIsAlphaFont(f) ?
- static_cast<MathedTextCodes>(f) :
- LM_TC_VAR;
- }
+ if (is_multi_numbered(par->GetType())) {
+ mathcursor->setLabel(new_label);
+ // MathMatrixInset *mt = (MathMatrixInset*)par;
+ // mt->SetLabel(new_label);
+ } else
+ label = new_label;
- // lyxerr << "Varcode << vardoce;
- MathedTextCodes char_code = varcode;
- if (greek_kb_flag) {
- char greek[26] =
- {'A', 'B', 'X', 0 , 'E', 0 , 0 , 'H', 'I', 0 ,
- 'K', 0 , 'M', 'N', 'O', 0 , 0 , 'P', 0 , 'T',
- 'Y', 0, 0, 0, 0 , 'Z' };
-
- if ('A' <= c && c <= 'Z' && greek[c - 'A']) {
- char_code = LM_TC_RM;
- c = greek[c - 'A'];
- } else
- char_code = LM_TC_SYMB;
- }
+ UpdateLocal(bv);
+ break;
+ }
- mathcursor->Insert(c, char_code);
+ case LFUN_MATH_DISPLAY:
+ bv->lockedInsetStoreUndo(Undo::EDIT);
+ display(!disp_flag);
+ UpdateLocal(bv);
+ break;
- if (greek_kb_flag && char_code == LM_TC_RM )
- mathcursor->setLastCode(LM_TC_VAR);
+ // Invalid actions under math mode
+ case LFUN_MATH_MODE:
+ if (mathcursor->getLastCode()!= LM_TC_TEXTRM) {
+ bv->owner()->getMiniBuffer()->Set(_("math text mode"));
+ varcode = LM_TC_TEXTRM;
+ } else {
+ varcode = LM_TC_VAR;
+ }
+ mathcursor->setLastCode(varcode);
+ break;
- varcode = LM_TC_MIN;
+ case LFUN_UNDO:
+ bv->owner()->getMiniBuffer()->Set(_("Invalid action in math mode!"));
+ break;
- if (greek_kb_flag<2)
- greek_kb_flag = 0;
+ //------- dummy actions
+ case LFUN_EXEC_COMMAND:
+ bv->owner()->getMiniBuffer()->PrepareForCommand();
+ break;
- } else
+ default:
+ if ((action == -1 || action == LFUN_SELFINSERT) && !arg.empty()) {
+ unsigned char c = arg[0];
+ bv->lockedInsetStoreUndo(Undo::INSERT);
- if (strchr("!,:;{}", c) && (varcode == LM_TC_TEX||was_macro)) {
- mathcursor->Insert(c, LM_TC_TEX);
- if (c == '{') {
- mathcursor->Insert('}', LM_TC_TEX);
- mathcursor->Left();
- }
- mathcursor->clearLastCode();
- // varcode = LM_TC_MIN;
- } else
+ if (c == ' ' && mathcursor->getAccent() == LM_hat) {
+ c = '^';
+ mathcursor->setAccent(0);
+ }
- if (c == '_' && varcode == LM_TC_TEX) {
- mathcursor->Insert(c, LM_TC_SPECIAL);
- mathcursor->clearLastCode();
- // varcode = LM_TC_MIN;
- } else
+ if (c == 0) { // Dead key, do nothing
+ //lyxerr << "deadkey" << endl;
+ break;
+ }
- if (('0'<= c && c<= '9') && (varcode == LM_TC_TEX||was_macro)) {
+ if (isalpha(c)) {
+ if (mathcursor->getLastCode() == LM_TC_TEX) {
mathcursor->MacroModeOpen();
mathcursor->clearLastCode();
- mathcursor->Insert(c, LM_TC_MIN);
- } else
-
- if (('0'<= c && c<= '9') || strchr(";:!|[]().,?", c)) {
- mathcursor->Insert(c, LM_TC_CONST);
- } else
-
- if (strchr("+/-*<>=", c)) {
- mathcursor->Insert(c, LM_TC_BOP);
- } else
-
- if (strchr(latex_special_chars, c) && c!= '_') {
- mathcursor->Insert(c, LM_TC_SPECIAL);
- } else
-
- if (c == '_' || c == '^') {
- char s[2];
- s[0] = c;
- s[1] = 0;
- mathcursor->Interpret(s);
- } else
-
- if (c == ' ') {
- if (!varcode) {
- short f = (mathcursor->getLastCode()) ?
- mathcursor->getLastCode() :
- static_cast<MathedTextCodes>(mathcursor->GetFCode());
- varcode = MathIsAlphaFont(f) ?
+ varcode = LM_TC_MIN;
+ } else if (!varcode) {
+ short f = (mathcursor->getLastCode()) ?
+ mathcursor->getLastCode() :
+ static_cast<MathedTextCodes>(mathcursor->GetFCode());
+ varcode = MathIsAlphaFont(f) ?
static_cast<MathedTextCodes>(f) :
LM_TC_VAR;
- }
-
- if (varcode == LM_TC_TEXTRM) {
- mathcursor->Insert(c, LM_TC_TEXTRM);
- } else
-
- if (was_macro) {
- mathcursor->MacroModeClose();
+ }
+
+ // lyxerr << "Varcode << vardoce;
+ MathedTextCodes char_code = varcode;
+ if (greek_kb_flag) {
+ char greek[26] =
+ {'A', 'B', 'X', 0 , 'E', 0 , 0 , 'H', 'I', 0 ,
+ 'K', 0 , 'M', 'N', 'O', 0 , 0 , 'P', 0 , 'T',
+ 'Y', 0, 0, 0, 0 , 'Z' };
+
+ if ('A' <= c && c <= 'Z' && greek[c - 'A']) {
+ char_code = LM_TC_RM;
+ c = greek[c - 'A'];
} else
-
- if (sp) {
- int isp = (sp->GetSpace()<5) ? sp->GetSpace()+1: 0;
- sp->SetSpace(isp);
- space_on = true;
- } else
-
- if (!mathcursor->Pop() && mathcursor->IsEnd())
- result = FINISHED;
- } else
-
- if (c == '\'' || c == '@') {
- mathcursor->Insert (c, LM_TC_VAR);
- } else
-
- if (c == '\\') {
- if (was_macro)
- mathcursor->MacroModeClose();
- bv->owner()->getMiniBuffer()->Set(_("TeX mode"));
- mathcursor->setLastCode(LM_TC_TEX);
+ char_code = LM_TC_SYMB;
}
- UpdateLocal(bv);
- } else if (action == LFUN_MATH_PANEL) {
- result = UNDISPATCHED;
- } else {
- // lyxerr << "Closed by action " << action << endl;
- result = FINISHED;
+
+ mathcursor->Insert(c, char_code);
+
+ if (greek_kb_flag && char_code == LM_TC_RM )
+ mathcursor->setLastCode(LM_TC_VAR);
+
+ varcode = LM_TC_MIN;
+
+ if (greek_kb_flag<2)
+ greek_kb_flag = 0;
+
+ } else if (strchr("!,:;{}", c) && (varcode == LM_TC_TEX||was_macro)) {
+ mathcursor->Insert(c, LM_TC_TEX);
+ if (c == '{') {
+ mathcursor->Insert('}', LM_TC_TEX);
+ mathcursor->Left();
+ }
+ mathcursor->clearLastCode();
+ // varcode = LM_TC_MIN;
+ } else if (c == '_' && varcode == LM_TC_TEX) {
+ mathcursor->Insert(c, LM_TC_SPECIAL);
+ mathcursor->clearLastCode();
+ // varcode = LM_TC_MIN;
+ } else if (('0'<= c && c<= '9') && (varcode == LM_TC_TEX||was_macro)) {
+ mathcursor->MacroModeOpen();
+ mathcursor->clearLastCode();
+ mathcursor->Insert(c, LM_TC_MIN);
+ } else if (('0'<= c && c<= '9') || strchr(";:!|[]().,?", c)) {
+ mathcursor->Insert(c, LM_TC_CONST);
+ } else if (strchr("+/-*<>=", c)) {
+ mathcursor->Insert(c, LM_TC_BOP);
+ } else if (strchr(latex_special_chars, c) && c!= '_') {
+ mathcursor->Insert(c, LM_TC_SPECIAL);
+ } else if (c == '_' || c == '^') {
+ char s[2];
+ s[0] = c;
+ s[1] = 0;
+ mathcursor->Interpret(s);
+ } else if (c == ' ') {
+ if (!varcode) {
+ short f = (mathcursor->getLastCode()) ?
+ mathcursor->getLastCode() :
+ static_cast<MathedTextCodes>(mathcursor->GetFCode());
+ varcode = MathIsAlphaFont(f) ?
+ static_cast<MathedTextCodes>(f) :
+ LM_TC_VAR;
+ }
+
+ if (varcode == LM_TC_TEXTRM) {
+ mathcursor->Insert(c, LM_TC_TEXTRM);
+ } else if (was_macro) {
+ mathcursor->MacroModeClose();
+ } else if (sp) {
+ int isp = (sp->GetSpace()<5) ? sp->GetSpace()+1: 0;
+ sp->SetSpace(isp);
+ space_on = true;
+ } else if (!mathcursor->Pop() && mathcursor->IsEnd())
+ result = FINISHED;
+ } else if (c == '\'' || c == '@') {
+ mathcursor->Insert (c, LM_TC_VAR);
+ } else if (c == '\\') {
+ if (was_macro)
+ mathcursor->MacroModeClose();
+ bv->owner()->getMiniBuffer()->Set(_("TeX mode"));
+ mathcursor->setLastCode(LM_TC_TEX);
}
+ UpdateLocal(bv);
+ } else if (action == LFUN_MATH_PANEL) {
+ result = UNDISPATCHED;
+ } else {
+ // lyxerr << "Closed by action " << action << endl;
+ result = FINISHED;
+ }
}
-
+
if (was_macro != mathcursor->InMacroMode()
- && action >= 0
- && action != LFUN_BACKSPACE)
+ && action >= 0
+ && action != LFUN_BACKSPACE)
UpdateLocal(bv);
if (sp && !space_on)
ToggleInsetSelection(bv);
if ((result == DISPATCHED) || (result == DISPATCHED_NOUPDATE) ||
- (result == UNDISPATCHED))
+ (result == UNDISPATCHED))
ShowInsetCursor(bv);
else
bv->unlockInset(this);
if (it.IsActive()) {
MathParInset * p = it.GetActiveInset();
if (!features.binom && p->GetType() == LM_OT_MACRO &&
- p->GetName() == "binom") {
+ p->GetName() == "binom") {
features.binom = true;
} else {
for (int i = 0; i <= p->getMaxArgumentIdx(); ++i) {
/* Command-line: gperf -a -p -o -t -G -D keywords */
#include <config.h>
-#include <cstdlib>
#include <cstring>
#include "math_defs.h"
static
unsigned int
-math_hash (register char const *str, register int len)
+math_hash (register char const * str, register int len)
{
- static unsigned short asso_values[] =
- {
- 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
- 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
- 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
- 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
- 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
- 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
- 491, 491, 491, 491, 491, 491, 491, 491, 95, 491,
- 491, 45, 491, 10, 491, 491, 255, 491, 491, 65,
- 30, 491, 0, 70, 80, 70, 15, 491, 10, 491,
- 491, 491, 491, 491, 491, 491, 491, 50, 200, 140,
- 219, 35, 135, 237, 230, 69, 0, 20, 10, 180,
- 105, 247, 55, 208, 125, 0, 25, 42, 255, 75,
- 5, 0, 0, 491, 491, 491, 491, 491,
- };
- return len + asso_values[str[len - 1]] + asso_values[str[0]];
+ static unsigned short asso_values[] =
+ {
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 95, 491,
+ 491, 45, 491, 10, 491, 491, 255, 491, 491, 65,
+ 30, 491, 0, 70, 80, 70, 15, 491, 10, 491,
+ 491, 491, 491, 491, 491, 491, 491, 50, 200, 140,
+ 219, 35, 135, 237, 230, 69, 0, 20, 10, 180,
+ 105, 247, 55, 208, 125, 0, 25, 42, 255, 75,
+ 5, 0, 0, 491, 491, 491, 491, 491,
+ };
+ return len + asso_values[str[len - 1]] + asso_values[str[0]];
}
static
latexkeys wordlist[] =
{
- {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0},
- {"setminus", LM_TK_SYM, LM_setminus},
- {"ldots", LM_TK_DOTS, LM_ldots},
- {"limits", LM_TK_LIMIT, 1 },
- {"stackrel", LM_TK_STACK, 0},
- {"ll", LM_TK_SYM, LM_ll},
- {"label", LM_TK_LABEL, 0},
- {"lceil", LM_TK_SYM, LM_lceil},
- {"sqrt", LM_TK_SQRT, 0},
- {"times", LM_TK_SYM, LM_times},
- {"subset", LM_TK_SYM, LM_subset},
- {"supset", LM_TK_SYM, LM_supset},
- {"spadesuit", LM_TK_SYM, LM_spadesuit},
- {"Re", LM_TK_SYM, LM_Re},
- {"left", LM_TK_LEFT, 0},
- {"smile", LM_TK_SYM, LM_smile},
- {"exists", LM_TK_SYM, LM_exists},
- {"Vert", LM_TK_SYM, LM_Vert},
- {"scriptstyle", LM_TK_STY, LM_ST_SCRIPT},
- {"uplus", LM_TK_SYM, LM_uplus},
- {"ell", LM_TK_SYM, LM_ell},
- {"langle", LM_TK_SYM, LM_langle},
- {"scriptscriptstyle", LM_TK_STY, LM_ST_SCRIPTSCRIPT},
- {"zeta", LM_TK_SYM, LM_zeta},
- {"sigma", LM_TK_SYM, LM_sigma},
- {"arccos", LM_TK_FUNC, 0},
- {"sup", LM_TK_FUNCLIM, 0},
- {"sharp", LM_TK_SYM, LM_sharp},
- {"sqcup", LM_TK_SYM, LM_sqcup},
- {"sqcap", LM_TK_SYM, LM_sqcap},
- {"approx", LM_TK_SYM, LM_approx},
- {"triangleleft", LM_TK_SYM, LM_triangleleft},
- {"triangleright", LM_TK_SYM, LM_triangleright},
- {"tilde", LM_TK_ACCENT, LM_tilde},
- {"lambda", LM_TK_SYM, LM_lambda},
- {"emptyset", LM_TK_MACRO, LM_emptyset},
- {"triangle", LM_TK_SYM, LM_triangle},
- {"textstyle", LM_TK_STY, LM_ST_TEXT},
- {"tau", LM_TK_SYM, LM_tau},
- {"limsup", LM_TK_FUNCLIM, 0},
- {"partial", LM_TK_SYM, LM_partial},
- {"parallel", LM_TK_SYM, LM_parallel},
- {"infty", LM_TK_SYM, LM_infty},
- {"kappa", LM_TK_SYM, LM_kappa},
- {"xi", LM_TK_SYM, LM_xi},
- {"leftharpoonup", LM_TK_SYM, LM_leftharpoonup},
- {"theta", LM_TK_SYM, LM_theta},
- {"Xi", LM_TK_SYM, LM_Xi},
- {"searrow", LM_TK_SYM, LM_searrow},
- {"swarrow", LM_TK_SYM, LM_swarrow},
- {"top", LM_TK_SYM, LM_top},
- {"Rightarrow", LM_TK_SYM, LM_Rightarrow},
- {"underline", LM_TK_WIDE, LM_underline},
- {"underbrace", LM_TK_WIDE, LM_underbrace},
- {"eta", LM_TK_SYM, LM_eta},
- {"acute", LM_TK_ACCENT, LM_acute},
- {"angle", LM_TK_SYM, LM_angle},
- {"exp", LM_TK_FUNC, 0},
- {"leftarrow", LM_TK_SYM, LM_leftarrow},
- {"prime", LM_TK_SYM, LM_prime},
- {"int", LM_TK_BIGSYM, LM_int},
- {"longleftarrow", LM_TK_SYM, LM_longleftarrow},
- {"leftrightarrow", LM_TK_SYM, LM_leftrightarrow},
- {"longrightarrow", LM_TK_SYM, LM_longrightarrow},
- {"Gamma", LM_TK_SYM, LM_Gamma},
- {"Pi", LM_TK_SYM, LM_Pi},
- {"Phi", LM_TK_SYM, LM_Phi},
- {"Psi", LM_TK_SYM, LM_Psi},
- {"longleftrightarrow", LM_TK_SYM, LM_longleftrightarrow},
- {"alpha", LM_TK_SYM, LM_alpha},
- {"widehat", LM_TK_WIDE, LM_widehat},
- {"sin", LM_TK_FUNC, 0},
- {"asymp", LM_TK_SYM, LM_asymp},
- {"nolimits", LM_TK_LIMIT, 0 },
- {"perp", LM_TK_MACRO, LM_perp},
- {"wedge", LM_TK_SYM, LM_wedge},
- {"ln", LM_TK_FUNC, 0},
- {"widetilde", LM_TK_WIDE, LM_widetilde},
- {"Omega", LM_TK_SYM, LM_Omega},
- {"natural", LM_TK_SYM, LM_natural},
- {"iota", LM_TK_SYM, LM_iota},
- {"uparrow", LM_TK_SYM, LM_uparrow},
- {"Sigma", LM_TK_SYM, LM_Sigma},
- {"pi", LM_TK_SYM, LM_pi},
- {"phi", LM_TK_SYM, LM_phi},
- {"psi", LM_TK_SYM, LM_psi},
- {"updownarrow", LM_TK_SYM, LM_updownarrow},
- {"star", LM_TK_SYM, LM_star},
- {"leftharpoondown", LM_TK_SYM, LM_leftharpoondown},
- {"wp", LM_TK_SYM, LM_wp},
- {"not", LM_TK_ACCENT, LM_not},
- {"tan", LM_TK_FUNC, 0},
- {"Theta", LM_TK_SYM, LM_Theta},
- {"rceil", LM_TK_SYM, LM_rceil},
- {"lfloor", LM_TK_SYM, LM_lfloor},
- {"rightleftharpoons", LM_TK_SYM, LM_rightleftharpoons},
- {"cos", LM_TK_FUNC, 0},
- {"sec", LM_TK_FUNC, 0},
- {"succ", LM_TK_SYM, LM_succ},
- {"cdots", LM_TK_DOTS, LM_cdots},
- {"epsilon", LM_TK_SYM, LM_epsilon},
- {"ker", LM_TK_FUNC, 0},
- {"nu", LM_TK_SYM, LM_nu},
- {"Delta", LM_TK_SYM, LM_Delta},
- {"forall", LM_TK_SYM, LM_forall},
- {"liminf", LM_TK_FUNCLIM, 0},
- {"Uparrow", LM_TK_SYM, LM_Uparrow},
- {"upsilon", LM_TK_SYM, LM_upsilon},
- {"right", LM_TK_RIGHT, 0},
- {"Updownarrow", LM_TK_SYM, LM_Updownarrow},
- {"Pr", LM_TK_FUNCLIM, 0},
- {"nabla", LM_TK_SYM, LM_nabla},
- {"arcsin", LM_TK_FUNC, 0},
- {"arctan", LM_TK_FUNC, 0},
- {"flat", LM_TK_SYM, LM_flat},
- {"check", LM_TK_ACCENT, LM_check},
- {"rangle", LM_TK_SYM, LM_rangle},
- {"cot", LM_TK_FUNC, 0},
- {"cdot", LM_TK_SYM, LM_cdot},
- {"clubsuit", LM_TK_SYM, LM_clubsuit},
- {"in", LM_TK_SYM, LM_in},
- {"ni", LM_TK_SYM, LM_ni},
- {"Downarrow", LM_TK_SYM, LM_Downarrow},
- {"Upsilon", LM_TK_SYM, LM_Upsilon},
- {"sim", LM_TK_SYM, LM_sim},
- {"sum", LM_TK_BIGSYM, LM_sum},
- {"models", LM_TK_SYM, LM_models},
- {"nearrow", LM_TK_SYM, LM_nearrow},
- {"nwarrow", LM_TK_SYM, LM_nwarrow},
- {"max", LM_TK_FUNCLIM, 0},
- {"Im", LM_TK_SYM, LM_Im},
- {"lim", LM_TK_FUNCLIM, 0},
- {"rightharpoonup", LM_TK_SYM, LM_rightharpoonup},
- {"mathcal", LM_TK_FONT, LM_TC_CAL},
- {"cap", LM_TK_SYM, LM_cap},
- {"cup", LM_TK_SYM, LM_cup},
- {"prec", LM_TK_SYM, LM_prec},
- {"mathnormal", LM_TK_FONT, LM_TC_VAR},
- {"wr", LM_TK_SYM, LM_wr},
- {"inf", LM_TK_FUNCLIM, 0},
- {"bigoplus", LM_TK_BIGSYM, LM_oplus},
- {"biguplus", LM_TK_BIGSYM, LM_biguplus},
- {"bigotimes", LM_TK_BIGSYM, LM_otimes},
- {"rightarrow", LM_TK_SYM, LM_rightarrow},
- {"mathit", LM_TK_FONT, LM_TC_IT},
- {"textrm", LM_TK_FONT, LM_TC_TEXTRM},
- {"mathtt", LM_TK_FONT, LM_TC_TT},
- {"chi", LM_TK_SYM, LM_chi},
- {"simeq", LM_TK_SYM, LM_simeq},
- {"succeq", LM_TK_SYM, LM_succeq},
- {"notin", LM_TK_MACRO, LM_notin},
- {"subseteq", LM_TK_SYM, LM_subseteq},
- {"supseteq", LM_TK_SYM, LM_supseteq},
- {"sqsubseteq", LM_TK_SYM, LM_sqsubseteq},
- {"sqsupseteq", LM_TK_SYM, LM_sqsupseteq},
- {"leq", LM_TK_SYM, LM_leq},
- {"surd", LM_TK_SYM, LM_surd},
- {"ddots", LM_TK_DOTS, LM_ddots},
- {"mu", LM_TK_SYM, LM_mu},
- {"bot", LM_TK_SYM, LM_bot},
- {"bullet", LM_TK_SYM, LM_bullet},
- {"bigodot", LM_TK_BIGSYM, LM_bigodot},
- {"sinh", LM_TK_FUNC, 0},
- {"jmath", LM_TK_SYM, LM_jmath},
- {"mp", LM_TK_SYM, LM_mp},
- {"pm", LM_TK_SYM, LM_pm},
- {"nonumber", LM_TK_NONUM, 0},
- {"breve", LM_TK_ACCENT, LM_breve},
- {"bigvee", LM_TK_BIGSYM, LM_vee},
- {"bowtie", LM_TK_SYM, LM_bowtie},
- {"bigwedge", LM_TK_BIGSYM, LM_wedge},
- {"frown", LM_TK_SYM, LM_frown},
- {"rightharpoondown", LM_TK_SYM, LM_rightharpoondown},
- {"det", LM_TK_FUNCLIM, 0},
- {"dot", LM_TK_ACCENT, LM_dot},
- {"ddot", LM_TK_ACCENT, LM_ddot},
- {"lg", LM_TK_FUNC, 0},
- {"log", LM_TK_FUNC, 0},
- {"oplus", LM_TK_SYM, LM_oplus},
- {"ominus", LM_TK_SYM, LM_ominus},
- {"otimes", LM_TK_SYM, LM_otimes},
- {"beta", LM_TK_SYM, LM_beta},
- {"diamondsuit", LM_TK_SYM, LM_diamondsuit},
- {"rfloor", LM_TK_SYM, LM_rfloor},
- {"end", LM_TK_END, 0},
- {"hat", LM_TK_ACCENT, LM_hat},
- {"tanh", LM_TK_FUNC, 0},
- {"vdots", LM_TK_DOTS, LM_vdots},
- {"bigcap", LM_TK_BIGSYM, LM_cap},
- {"bigcup", LM_TK_BIGSYM, LM_cup},
- {"bigsqcup", LM_TK_BIGSYM, LM_bigsqcup},
- {"heartsuit", LM_TK_SYM, LM_heartsuit},
- {"displaystyle", LM_TK_STY, LM_ST_DISPLAY},
- {"longmapsto", LM_TK_SYM, LM_longmapsto},
- {"bigtriangleup", LM_TK_SYM, LM_bigtriangleup},
- {"preceq", LM_TK_SYM, LM_preceq},
- {"delta", LM_TK_SYM, LM_delta},
- {"odot", LM_TK_SYM, LM_odot},
- {"oint", LM_TK_BIGSYM, LM_oint},
- {"grave", LM_TK_ACCENT, LM_grave},
- {"pmod", LM_TK_PMOD, 0},
- {"prod", LM_TK_BIGSYM, LM_prod},
- {"frac", LM_TK_FRAC, 0},
- {"csc", LM_TK_FUNC, 0},
- {"circ", LM_TK_SYM, LM_circ},
- {"aleph", LM_TK_SYM, LM_aleph},
- {"min", LM_TK_FUNCLIM, 0},
- {"overline", LM_TK_WIDE, LM_overline},
- {"arg", LM_TK_FUNC, 0},
- {"overbrace", LM_TK_WIDE, LM_overbrace},
- {"amalg", LM_TK_SYM, LM_amalg},
- {"gamma", LM_TK_SYM, LM_gamma},
- {"vee", LM_TK_SYM, LM_vee},
- {"equiv", LM_TK_SYM, LM_equiv},
- {"omega", LM_TK_SYM, LM_omega},
- {"downarrow", LM_TK_SYM, LM_downarrow},
- {"imath", LM_TK_SYM, LM_imath},
- {"propto", LM_TK_SYM, LM_propto},
- {"begin", LM_TK_BEGIN, 0},
- {"Lambda", LM_TK_SYM, LM_Lambda},
- {"varsigma", LM_TK_SYM, LM_varsigma},
- {"vartheta", LM_TK_SYM, LM_vartheta},
- {"neq", LM_TK_SYM, LM_neq},
- {"hookleftarrow", LM_TK_SYM, LM_hookleftarrow},
- {"hookrightarrow", LM_TK_SYM, LM_hookrightarrow},
- {"bigtriangledown", LM_TK_SYM, LM_bigtriangledown},
- {"mathbf", LM_TK_FONT, LM_TC_BF},
- {"mathsf", LM_TK_FONT, LM_TC_SF},
- {"bar", LM_TK_ACCENT, LM_bar},
- {"varpi", LM_TK_SYM, LM_varpi},
- {"varphi", LM_TK_SYM, LM_varphi},
- {"newcommand", LM_TK_NEWCOMMAND, 0 },
- {"overleftarrow", LM_TK_WIDE, LM_overleftarrow},
- {"overrightarrow", LM_TK_WIDE, LM_overightarrow},
- {"Leftarrow", LM_TK_SYM, LM_Leftarrow},
- {"Longleftarrow", LM_TK_SYM, LM_Longleftarrow},
- {"Leftrightarrow", LM_TK_SYM, LM_Leftrightarrow},
- {"Longrightarrow", LM_TK_SYM, LM_Longrightarrow},
- {"neg", LM_TK_SYM, LM_neg},
- {"bigcirc", LM_TK_SYM, LM_bigcirc},
- {"Longleftrightarrow", LM_TK_SYM, LM_Longleftrightarrow},
- {"dagger", LM_TK_SYM, LM_dagger},
- {"ddagger", LM_TK_SYM, LM_ddagger},
- {"hbar", LM_TK_SYM, LM_hbar},
- {"coprod", LM_TK_BIGSYM, LM_coprod},
- {"mathrm", LM_TK_FONT, LM_TC_RM},
- {"varepsilon", LM_TK_SYM, LM_varepsilon},
- {"cosh", LM_TK_FUNC, 0},
- {"coth", LM_TK_FUNC, 0},
- {"rho", LM_TK_SYM, LM_rho},
- {"cong", LM_TK_SYM, LM_cong},
- {"vec", LM_TK_ACCENT, LM_vec},
- {"dim", LM_TK_FUNC, 0},
- {"mid", LM_TK_SYM, LM_mid},
- {"hom", LM_TK_FUNC, 0},
- {"bmod", LM_TK_FUNC, 0},
- {"quad", LM_TK_SPACE, LM_quad},
- {"doteq", LM_TK_SYM, LM_doteq},
- {"qquad", LM_TK_SPACE, LM_qquad},
- {"mapsto", LM_TK_SYM, LM_mapsto},
- {"backslash", LM_TK_SYM, LM_backslash},
- {"diamond", LM_TK_SYM, LM_diamond},
- {"geq", LM_TK_SYM, LM_geq},
- {"deg", LM_TK_FUNC, 0},
- {"gcd", LM_TK_FUNCLIM, 0},
- {"gg", LM_TK_SYM, LM_gg},
- {"div", LM_TK_SYM, LM_div},
- {"dashv", LM_TK_SYM, LM_dashv},
- {"oslash", LM_TK_SYM, LM_oslash},
- {"vdash", LM_TK_SYM, LM_vdash},
+ {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0},
+ {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0},
+ {"setminus", LM_TK_SYM, LM_setminus},
+ {"ldots", LM_TK_DOTS, LM_ldots},
+ {"limits", LM_TK_LIMIT, 1 },
+ {"stackrel", LM_TK_STACK, 0},
+ {"ll", LM_TK_SYM, LM_ll},
+ {"label", LM_TK_LABEL, 0},
+ {"lceil", LM_TK_SYM, LM_lceil},
+ {"sqrt", LM_TK_SQRT, 0},
+ {"times", LM_TK_SYM, LM_times},
+ {"subset", LM_TK_SYM, LM_subset},
+ {"supset", LM_TK_SYM, LM_supset},
+ {"spadesuit", LM_TK_SYM, LM_spadesuit},
+ {"Re", LM_TK_SYM, LM_Re},
+ {"left", LM_TK_LEFT, 0},
+ {"smile", LM_TK_SYM, LM_smile},
+ {"exists", LM_TK_SYM, LM_exists},
+ {"Vert", LM_TK_SYM, LM_Vert},
+ {"scriptstyle", LM_TK_STY, LM_ST_SCRIPT},
+ {"uplus", LM_TK_SYM, LM_uplus},
+ {"ell", LM_TK_SYM, LM_ell},
+ {"langle", LM_TK_SYM, LM_langle},
+ {"scriptscriptstyle", LM_TK_STY, LM_ST_SCRIPTSCRIPT},
+ {"zeta", LM_TK_SYM, LM_zeta},
+ {"sigma", LM_TK_SYM, LM_sigma},
+ {"arccos", LM_TK_FUNC, 0},
+ {"sup", LM_TK_FUNCLIM, 0},
+ {"sharp", LM_TK_SYM, LM_sharp},
+ {"sqcup", LM_TK_SYM, LM_sqcup},
+ {"sqcap", LM_TK_SYM, LM_sqcap},
+ {"approx", LM_TK_SYM, LM_approx},
+ {"triangleleft", LM_TK_SYM, LM_triangleleft},
+ {"triangleright", LM_TK_SYM, LM_triangleright},
+ {"tilde", LM_TK_ACCENT, LM_tilde},
+ {"lambda", LM_TK_SYM, LM_lambda},
+ {"emptyset", LM_TK_MACRO, LM_emptyset},
+ {"triangle", LM_TK_SYM, LM_triangle},
+ {"textstyle", LM_TK_STY, LM_ST_TEXT},
+ {"tau", LM_TK_SYM, LM_tau},
+ {"limsup", LM_TK_FUNCLIM, 0},
+ {"partial", LM_TK_SYM, LM_partial},
+ {"parallel", LM_TK_SYM, LM_parallel},
+ {"infty", LM_TK_SYM, LM_infty},
+ {"kappa", LM_TK_SYM, LM_kappa},
+ {"xi", LM_TK_SYM, LM_xi},
+ {"leftharpoonup", LM_TK_SYM, LM_leftharpoonup},
+ {"theta", LM_TK_SYM, LM_theta},
+ {"Xi", LM_TK_SYM, LM_Xi},
+ {"searrow", LM_TK_SYM, LM_searrow},
+ {"swarrow", LM_TK_SYM, LM_swarrow},
+ {"top", LM_TK_SYM, LM_top},
+ {"Rightarrow", LM_TK_SYM, LM_Rightarrow},
+ {"underline", LM_TK_WIDE, LM_underline},
+ {"underbrace", LM_TK_WIDE, LM_underbrace},
+ {"eta", LM_TK_SYM, LM_eta},
+ {"acute", LM_TK_ACCENT, LM_acute},
+ {"angle", LM_TK_SYM, LM_angle},
+ {"exp", LM_TK_FUNC, 0},
+ {"leftarrow", LM_TK_SYM, LM_leftarrow},
+ {"prime", LM_TK_SYM, LM_prime},
+ {"int", LM_TK_BIGSYM, LM_int},
+ {"longleftarrow", LM_TK_SYM, LM_longleftarrow},
+ {"leftrightarrow", LM_TK_SYM, LM_leftrightarrow},
+ {"longrightarrow", LM_TK_SYM, LM_longrightarrow},
+ {"Gamma", LM_TK_SYM, LM_Gamma},
+ {"Pi", LM_TK_SYM, LM_Pi},
+ {"Phi", LM_TK_SYM, LM_Phi},
+ {"Psi", LM_TK_SYM, LM_Psi},
+ {"longleftrightarrow", LM_TK_SYM, LM_longleftrightarrow},
+ {"alpha", LM_TK_SYM, LM_alpha},
+ {"widehat", LM_TK_WIDE, LM_widehat},
+ {"sin", LM_TK_FUNC, 0},
+ {"asymp", LM_TK_SYM, LM_asymp},
+ {"nolimits", LM_TK_LIMIT, 0 },
+ {"perp", LM_TK_MACRO, LM_perp},
+ {"wedge", LM_TK_SYM, LM_wedge},
+ {"ln", LM_TK_FUNC, 0},
+ {"widetilde", LM_TK_WIDE, LM_widetilde},
+ {"Omega", LM_TK_SYM, LM_Omega},
+ {"natural", LM_TK_SYM, LM_natural},
+ {"iota", LM_TK_SYM, LM_iota},
+ {"uparrow", LM_TK_SYM, LM_uparrow},
+ {"Sigma", LM_TK_SYM, LM_Sigma},
+ {"pi", LM_TK_SYM, LM_pi},
+ {"phi", LM_TK_SYM, LM_phi},
+ {"psi", LM_TK_SYM, LM_psi},
+ {"updownarrow", LM_TK_SYM, LM_updownarrow},
+ {"star", LM_TK_SYM, LM_star},
+ {"leftharpoondown", LM_TK_SYM, LM_leftharpoondown},
+ {"wp", LM_TK_SYM, LM_wp},
+ {"not", LM_TK_ACCENT, LM_not},
+ {"tan", LM_TK_FUNC, 0},
+ {"Theta", LM_TK_SYM, LM_Theta},
+ {"rceil", LM_TK_SYM, LM_rceil},
+ {"lfloor", LM_TK_SYM, LM_lfloor},
+ {"rightleftharpoons", LM_TK_SYM, LM_rightleftharpoons},
+ {"cos", LM_TK_FUNC, 0},
+ {"sec", LM_TK_FUNC, 0},
+ {"succ", LM_TK_SYM, LM_succ},
+ {"cdots", LM_TK_DOTS, LM_cdots},
+ {"epsilon", LM_TK_SYM, LM_epsilon},
+ {"ker", LM_TK_FUNC, 0},
+ {"nu", LM_TK_SYM, LM_nu},
+ {"Delta", LM_TK_SYM, LM_Delta},
+ {"forall", LM_TK_SYM, LM_forall},
+ {"liminf", LM_TK_FUNCLIM, 0},
+ {"Uparrow", LM_TK_SYM, LM_Uparrow},
+ {"upsilon", LM_TK_SYM, LM_upsilon},
+ {"right", LM_TK_RIGHT, 0},
+ {"Updownarrow", LM_TK_SYM, LM_Updownarrow},
+ {"Pr", LM_TK_FUNCLIM, 0},
+ {"nabla", LM_TK_SYM, LM_nabla},
+ {"arcsin", LM_TK_FUNC, 0},
+ {"arctan", LM_TK_FUNC, 0},
+ {"flat", LM_TK_SYM, LM_flat},
+ {"check", LM_TK_ACCENT, LM_check},
+ {"rangle", LM_TK_SYM, LM_rangle},
+ {"cot", LM_TK_FUNC, 0},
+ {"cdot", LM_TK_SYM, LM_cdot},
+ {"clubsuit", LM_TK_SYM, LM_clubsuit},
+ {"in", LM_TK_SYM, LM_in},
+ {"ni", LM_TK_SYM, LM_ni},
+ {"Downarrow", LM_TK_SYM, LM_Downarrow},
+ {"Upsilon", LM_TK_SYM, LM_Upsilon},
+ {"sim", LM_TK_SYM, LM_sim},
+ {"sum", LM_TK_BIGSYM, LM_sum},
+ {"models", LM_TK_SYM, LM_models},
+ {"nearrow", LM_TK_SYM, LM_nearrow},
+ {"nwarrow", LM_TK_SYM, LM_nwarrow},
+ {"max", LM_TK_FUNCLIM, 0},
+ {"Im", LM_TK_SYM, LM_Im},
+ {"lim", LM_TK_FUNCLIM, 0},
+ {"rightharpoonup", LM_TK_SYM, LM_rightharpoonup},
+ {"mathcal", LM_TK_FONT, LM_TC_CAL},
+ {"cap", LM_TK_SYM, LM_cap},
+ {"cup", LM_TK_SYM, LM_cup},
+ {"prec", LM_TK_SYM, LM_prec},
+ {"mathnormal", LM_TK_FONT, LM_TC_VAR},
+ {"wr", LM_TK_SYM, LM_wr},
+ {"inf", LM_TK_FUNCLIM, 0},
+ {"bigoplus", LM_TK_BIGSYM, LM_oplus},
+ {"biguplus", LM_TK_BIGSYM, LM_biguplus},
+ {"bigotimes", LM_TK_BIGSYM, LM_otimes},
+ {"rightarrow", LM_TK_SYM, LM_rightarrow},
+ {"mathit", LM_TK_FONT, LM_TC_IT},
+ {"textrm", LM_TK_FONT, LM_TC_TEXTRM},
+ {"mathtt", LM_TK_FONT, LM_TC_TT},
+ {"chi", LM_TK_SYM, LM_chi},
+ {"simeq", LM_TK_SYM, LM_simeq},
+ {"succeq", LM_TK_SYM, LM_succeq},
+ {"notin", LM_TK_MACRO, LM_notin},
+ {"subseteq", LM_TK_SYM, LM_subseteq},
+ {"supseteq", LM_TK_SYM, LM_supseteq},
+ {"sqsubseteq", LM_TK_SYM, LM_sqsubseteq},
+ {"sqsupseteq", LM_TK_SYM, LM_sqsupseteq},
+ {"leq", LM_TK_SYM, LM_leq},
+ {"surd", LM_TK_SYM, LM_surd},
+ {"ddots", LM_TK_DOTS, LM_ddots},
+ {"mu", LM_TK_SYM, LM_mu},
+ {"bot", LM_TK_SYM, LM_bot},
+ {"bullet", LM_TK_SYM, LM_bullet},
+ {"bigodot", LM_TK_BIGSYM, LM_bigodot},
+ {"sinh", LM_TK_FUNC, 0},
+ {"jmath", LM_TK_SYM, LM_jmath},
+ {"mp", LM_TK_SYM, LM_mp},
+ {"pm", LM_TK_SYM, LM_pm},
+ {"nonumber", LM_TK_NONUM, 0},
+ {"breve", LM_TK_ACCENT, LM_breve},
+ {"bigvee", LM_TK_BIGSYM, LM_vee},
+ {"bowtie", LM_TK_SYM, LM_bowtie},
+ {"bigwedge", LM_TK_BIGSYM, LM_wedge},
+ {"frown", LM_TK_SYM, LM_frown},
+ {"rightharpoondown", LM_TK_SYM, LM_rightharpoondown},
+ {"det", LM_TK_FUNCLIM, 0},
+ {"dot", LM_TK_ACCENT, LM_dot},
+ {"ddot", LM_TK_ACCENT, LM_ddot},
+ {"lg", LM_TK_FUNC, 0},
+ {"log", LM_TK_FUNC, 0},
+ {"oplus", LM_TK_SYM, LM_oplus},
+ {"ominus", LM_TK_SYM, LM_ominus},
+ {"otimes", LM_TK_SYM, LM_otimes},
+ {"beta", LM_TK_SYM, LM_beta},
+ {"diamondsuit", LM_TK_SYM, LM_diamondsuit},
+ {"rfloor", LM_TK_SYM, LM_rfloor},
+ {"end", LM_TK_END, 0},
+ {"hat", LM_TK_ACCENT, LM_hat},
+ {"tanh", LM_TK_FUNC, 0},
+ {"vdots", LM_TK_DOTS, LM_vdots},
+ {"bigcap", LM_TK_BIGSYM, LM_cap},
+ {"bigcup", LM_TK_BIGSYM, LM_cup},
+ {"bigsqcup", LM_TK_BIGSYM, LM_bigsqcup},
+ {"heartsuit", LM_TK_SYM, LM_heartsuit},
+ {"displaystyle", LM_TK_STY, LM_ST_DISPLAY},
+ {"longmapsto", LM_TK_SYM, LM_longmapsto},
+ {"bigtriangleup", LM_TK_SYM, LM_bigtriangleup},
+ {"preceq", LM_TK_SYM, LM_preceq},
+ {"delta", LM_TK_SYM, LM_delta},
+ {"odot", LM_TK_SYM, LM_odot},
+ {"oint", LM_TK_BIGSYM, LM_oint},
+ {"grave", LM_TK_ACCENT, LM_grave},
+ {"pmod", LM_TK_PMOD, 0},
+ {"prod", LM_TK_BIGSYM, LM_prod},
+ {"frac", LM_TK_FRAC, 0},
+ {"csc", LM_TK_FUNC, 0},
+ {"circ", LM_TK_SYM, LM_circ},
+ {"aleph", LM_TK_SYM, LM_aleph},
+ {"min", LM_TK_FUNCLIM, 0},
+ {"overline", LM_TK_WIDE, LM_overline},
+ {"arg", LM_TK_FUNC, 0},
+ {"overbrace", LM_TK_WIDE, LM_overbrace},
+ {"amalg", LM_TK_SYM, LM_amalg},
+ {"gamma", LM_TK_SYM, LM_gamma},
+ {"vee", LM_TK_SYM, LM_vee},
+ {"equiv", LM_TK_SYM, LM_equiv},
+ {"omega", LM_TK_SYM, LM_omega},
+ {"downarrow", LM_TK_SYM, LM_downarrow},
+ {"imath", LM_TK_SYM, LM_imath},
+ {"propto", LM_TK_SYM, LM_propto},
+ {"begin", LM_TK_BEGIN, 0},
+ {"Lambda", LM_TK_SYM, LM_Lambda},
+ {"varsigma", LM_TK_SYM, LM_varsigma},
+ {"vartheta", LM_TK_SYM, LM_vartheta},
+ {"neq", LM_TK_SYM, LM_neq},
+ {"hookleftarrow", LM_TK_SYM, LM_hookleftarrow},
+ {"hookrightarrow", LM_TK_SYM, LM_hookrightarrow},
+ {"bigtriangledown", LM_TK_SYM, LM_bigtriangledown},
+ {"mathbf", LM_TK_FONT, LM_TC_BF},
+ {"mathsf", LM_TK_FONT, LM_TC_SF},
+ {"bar", LM_TK_ACCENT, LM_bar},
+ {"varpi", LM_TK_SYM, LM_varpi},
+ {"varphi", LM_TK_SYM, LM_varphi},
+ {"newcommand", LM_TK_NEWCOMMAND, 0 },
+ {"overleftarrow", LM_TK_WIDE, LM_overleftarrow},
+ {"overrightarrow", LM_TK_WIDE, LM_overightarrow},
+ {"Leftarrow", LM_TK_SYM, LM_Leftarrow},
+ {"Longleftarrow", LM_TK_SYM, LM_Longleftarrow},
+ {"Leftrightarrow", LM_TK_SYM, LM_Leftrightarrow},
+ {"Longrightarrow", LM_TK_SYM, LM_Longrightarrow},
+ {"neg", LM_TK_SYM, LM_neg},
+ {"bigcirc", LM_TK_SYM, LM_bigcirc},
+ {"Longleftrightarrow", LM_TK_SYM, LM_Longleftrightarrow},
+ {"dagger", LM_TK_SYM, LM_dagger},
+ {"ddagger", LM_TK_SYM, LM_ddagger},
+ {"hbar", LM_TK_SYM, LM_hbar},
+ {"coprod", LM_TK_BIGSYM, LM_coprod},
+ {"mathrm", LM_TK_FONT, LM_TC_RM},
+ {"varepsilon", LM_TK_SYM, LM_varepsilon},
+ {"cosh", LM_TK_FUNC, 0},
+ {"coth", LM_TK_FUNC, 0},
+ {"rho", LM_TK_SYM, LM_rho},
+ {"cong", LM_TK_SYM, LM_cong},
+ {"vec", LM_TK_ACCENT, LM_vec},
+ {"dim", LM_TK_FUNC, 0},
+ {"mid", LM_TK_SYM, LM_mid},
+ {"hom", LM_TK_FUNC, 0},
+ {"bmod", LM_TK_FUNC, 0},
+ {"quad", LM_TK_SPACE, LM_quad},
+ {"doteq", LM_TK_SYM, LM_doteq},
+ {"qquad", LM_TK_SPACE, LM_qquad},
+ {"mapsto", LM_TK_SYM, LM_mapsto},
+ {"backslash", LM_TK_SYM, LM_backslash},
+ {"diamond", LM_TK_SYM, LM_diamond},
+ {"geq", LM_TK_SYM, LM_geq},
+ {"deg", LM_TK_FUNC, 0},
+ {"gcd", LM_TK_FUNCLIM, 0},
+ {"gg", LM_TK_SYM, LM_gg},
+ {"div", LM_TK_SYM, LM_div},
+ {"dashv", LM_TK_SYM, LM_dashv},
+ {"oslash", LM_TK_SYM, LM_oslash},
+ {"vdash", LM_TK_SYM, LM_vdash},
};
static short lookup[] =
68, 565, 71, 72, 499, 75, -1, 76, -1, 77, 78, -1, 79, -73,
-2, 80, 81, 82, -1, 83, -1, 84, 85, -1, 86, 87, 88, 89,
90, 501, 93, 94, 95, -1, 96, 493, -1, 99, -97, -2, -91, -2,
- 100, 101, 102, 517, 105, 106, -1, 107, 108, 109, 110, 497, 113, -1,
- 114, 115, 116, 117,-111, -2, 118, 491,-119, -2, 121, 122, 123, -1,
- 124, 125,-103, -2, -1, 126, -69, -2, 491,-127, -2, 129, -55, -2,
- 130, 491,-131, -2, 133, 492, 136,-134, -2, -1, 137, 138, 139, -42,
+ 100, 101, 102, 517, 105, 106, -1, 107, 108, 109, 110, 497, 113, -1,
+ 114, 115, 116, 117,-111, -2, 118, 491,-119, -2, 121, 122, 123, -1,
+ 124, 125,-103, -2, -1, 126, -69, -2, 491,-127, -2, 129, -55, -2,
+ 130, 491,-131, -2, 133, 492, 136,-134, -2, -1, 137, 138, 139, -42,
-2, 140, 495, 143, 144, -1, 145,-141, -2, -34, -3, 146, 613, 149,
- 150, 605, 154, 155, 156, 157, 503, -1, 491,-160, -2, 162, -1, 163,
- 491,-164, -2, -1, 166,-158, -2, 167, 168, -1, 169, 170, -1, 577,
- 173, -1, 174, 554, -1, 177, -1, 178, 179, 543, 182, 183, 184, -1,
- 185, 509, 188, 189, 190, 191, 192, 193, 194, 499, -1, 197, 198, -1,
- 199, 200, 201, 202,-195, -2,-186, -2, 203, -1, 500, 206, 492, 209,
- -207, -2, -1, 210, 211, 212,-204, -2, 213, -1, 498, 216, 494, 219,
+ 150, 605, 154, 155, 156, 157, 503, -1, 491,-160, -2, 162, -1, 163,
+ 491,-164, -2, -1, 166,-158, -2, 167, 168, -1, 169, 170, -1, 577,
+ 173, -1, 174, 554, -1, 177, -1, 178, 179, 543, 182, 183, 184, -1,
+ 185, 509, 188, 189, 190, 191, 192, 193, 194, 499, -1, 197, 198, -1,
+ 199, 200, 201, 202,-195, -2,-186, -2, 203, -1, 500, 206, 492, 209,
+ -207, -2, -1, 210, 211, 212,-204, -2, 213, -1, 498, 216, 494, 219,
-1, 220,-217, -2,-214, -2,-180, -2, 221, 222, 223,-175, -2, -1,
- 224, -1, 225, 226, -1, 491,-227, -2, 229, -1, 230, 231, 232, 491,
- -233, -2,-171, -2,-151, -3, 235, 236, 237,-147, -2, -1, 238, 239,
- 240, -1, -1, 241, -1, -1, -1, 242, 498, 245, -1, 246, 247, -1,
- 248, 249,-243, -2, -1, -1, -1, -1, -1, 250, -1, -1, -1, -1,
+ 224, -1, 225, 226, -1, 491,-227, -2, 229, -1, 230, 231, 232, 491,
+ -233, -2,-171, -2,-151, -3, 235, 236, 237,-147, -2, -1, 238, 239,
+ 240, -1, -1, 241, -1, -1, -1, 242, 498, 245, -1, 246, 247, -1,
+ 248, 249,-243, -2, -1, -1, -1, -1, -1, 250, -1, -1, -1, -1,
-1, 251, 252, -1, -1, -1, 253, -1, -1, -1, 492, 256,-254, -2,
-1, -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 258, -1, -1, -1, 491,-259, -2, -1,
-1, -1, -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 262, -1, -1, -1, -1, -1, -1, -1, 263, 492, 266,
- -264, -2, -1, -1, -1, 267, -1, -1, -1, -1, -1, 268, -1, -1,
- 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 491,-270, -2,
+ -264, -2, -1, -1, -1, 267, -1, -1, -1, -1, -1, 268, -1, -1,
+ 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 491,-270, -2,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 272, 273, -1, 274, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1,
- 276,
+ 272, 273, -1, 274, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1,
+ 276,
};
latexkeys *
-in_word_set (register char const *str, register int len)
+in_word_set (register char const * str, register int len)
{
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) {
- int key = math_hash (str, len);
+ int const key = math_hash (str, len);
if (key <= MAX_HASH_VALUE && key >= 0) {
- int idx = lookup[key];
+ int const idx = lookup[key];
if (idx >= 0 && idx < MAX_HASH_VALUE) {
char const * s = wordlist[idx].name;
} else if (idx < 0 && idx >= -MAX_HASH_VALUE) {
return 0;
} else {
- int offset = key + idx + (idx > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE);
+ int const offset = key + idx + (idx > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE);
latexkeys * base = &wordlist[-lookup[offset]];
latexkeys * ptr = base + -lookup[offset + 1];
}
-latexkeys *lm_get_key_by_id(int t, short tk)
+latexkeys * lm_get_key_by_id(int t, short tk)
{
- latexkeys * l = &wordlist[MIN_HASH_VALUE+TOTAL_KEYWORDS];
- latexkeys * base = &wordlist[MIN_HASH_VALUE];
- while (--l >= base) {
- if (t == l->id && tk == l->token)
- return l;
- }
- return 0;
+ latexkeys * l = &wordlist[MIN_HASH_VALUE+TOTAL_KEYWORDS];
+ latexkeys * base = &wordlist[MIN_HASH_VALUE];
+ while (--l >= base) {
+ if (t == l->id && tk == l->token)
+ return l;
+ }
+ return 0;
}
-latexkeys *lm_get_key_by_index(int i)
+latexkeys * lm_get_key_by_index(int i)
{
- if (i > 0 && i < TOTAL_KEYWORDS + 2)
- return &wordlist[i];
- else
- return 0;
+ if (i > 0 && i < TOTAL_KEYWORDS + 2)
+ return &wordlist[i];
+ else
+ return 0;
}