=================================================================== RCS file: /cvs/mandoc/eqn.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -p -r1.17 -r1.18 --- mandoc/eqn.c 2011/07/21 13:37:04 1.17 +++ mandoc/eqn.c 2011/07/21 14:13:00 1.18 @@ -1,4 +1,4 @@ -/* $Id: eqn.c,v 1.17 2011/07/21 13:37:04 kristaps Exp $ */ +/* $Id: eqn.c,v 1.18 2011/07/21 14:13:00 kristaps Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * @@ -80,11 +80,22 @@ static const struct eqnstr eqnmarks[EQNMARK__MAX] = { }; static const struct eqnstr eqnfonts[EQNFONT__MAX] = { + { "", 0 }, { "roman", 5 }, { "bold", 4 }, { "italic", 6 }, }; +static const struct eqnstr eqnposs[EQNPOS__MAX] = { + { "", 0 }, + { "over", 4 }, + { "sup", 3 }, + { "sub", 3 }, + { "to", 2 }, + { "from", 4 }, + { "above", 5 }, +}; + /* ARGSUSED */ enum rofferr eqn_read(struct eqn_node **epp, int ln, @@ -189,8 +200,7 @@ eqn_box(struct eqn_node *ep, struct eqn_box *last, str *sv = last; nextc = 1; - font = EQNFONT_NONE; - + font = EQNFONT_NONE; again: if (NULL == (start = eqn_nexttok(ep, &sz))) return(0); @@ -201,6 +211,15 @@ again: if (strncmp(eqnfonts[i].name, start, sz)) continue; font = (enum eqn_fontt)i; + goto again; + } + + for (i = 0; i < (int)EQNFONT__MAX; i++) { + if (eqnposs[i].sz != sz) + continue; + if (strncmp(eqnposs[i].name, start, sz)) + continue; + last->pos = (enum eqn_post)i; goto again; }