| 1 | # include "e.h" |
| 2 | # include "e.def" |
| 3 | |
| 4 | diacrit(p1, type) int p1, type; { |
| 5 | int c, t; |
| 6 | |
| 7 | c = oalloc(); |
| 8 | t = oalloc(); |
| 9 | nrwid(p1, ps, p1); |
| 10 | printf(".nr 10 %du\n", max(eht[p1]-ebase[p1]-VERT(2),0)); |
| 11 | switch(type) { |
| 12 | case VEC: /* vec */ |
| 13 | case DYAD: /* dyad */ |
| 14 | printf(".ds %d \\v'-1'_\\v'1'\n", c); |
| 15 | break; |
| 16 | case HAT: |
| 17 | printf(".ds %d ^\n", c); |
| 18 | break; |
| 19 | case TILDE: |
| 20 | printf(".ds %d ~\n", c); |
| 21 | break; |
| 22 | case DOT: |
| 23 | printf(".ds %d \\v'-1'.\\v'1'\n", c); |
| 24 | break; |
| 25 | case DOTDOT: |
| 26 | printf(".ds %d \\v'-1'..\\v'1'\n", c); |
| 27 | break; |
| 28 | case BAR: |
| 29 | printf(".ds %d \\v'-1'\\l'\\n(%du'\\v'1'\n", |
| 30 | c, p1); |
| 31 | break; |
| 32 | case UNDER: |
| 33 | printf(".ds %d \\l'\\n(%du'\n", c, p1); |
| 34 | break; |
| 35 | } |
| 36 | nrwid(c, ps, c); |
| 37 | printf(".as %d \\h'-\\n(%du-\\n(%du/2u'\\v'0-\\n(10u'\\*(%d", |
| 38 | p1, p1, c, c); |
| 39 | printf("\\v'\\n(10u'\\h'-\\n(%du+\\n(%du/2u'\n", c, p1); |
| 40 | if (type != UNDER) |
| 41 | eht[p1] += VERT(1); |
| 42 | if (dbg) printf(".\tdiacrit: %c over S%d, h=%d, b=%d\n", type, p1, eht[p1], ebase[p1]); |
| 43 | ofree(c); ofree(t); |
| 44 | } |