From 610da288ad1c36332f5bc333692f49e2326fa30d Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Thu, 21 Jul 2011 14:13:00 +0000 Subject: Full support for eqn positionals (above, over, sup, sub, etc.). --- eqn.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'eqn.c') diff --git a/eqn.c b/eqn.c index d10156b0..23dd934e 100644 --- a/eqn.c +++ b/eqn.c @@ -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, struct eqn_box **sv) *sv = last; nextc = 1; - font = EQNFONT_NONE; - + font = EQNFONT_NONE; again: if (NULL == (start = eqn_nexttok(ep, &sz))) return(0); @@ -204,6 +214,15 @@ again: 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; + } + for (i = 0; i < (int)EQN__MAX; i++) { if (eqnparts[i].str.sz != sz) continue; -- cgit v1.2.3