fromto(p1
,p2
,p3
) int p1
,p2
,p3
; {
h1
= eht
[yyval
] = eht
[p1
];
printf(".ds %d ", yyval
); /* bottom of middle box */
down(eht
[p2
]-ebase
[p2
]+b1
);
up(eht
[p2
]-ebase
[p2
]+b1
);
if(dbg
)printf(".\tfrom to: S%d <- %d f %d t %d; h=%d b=%d,w=%d\n",
yyval
,p1
,p2
,p3
,eht
[yyval
], ebase
[yyval
], ewid
[yyval
]);
paren(leftc
,p1
,rightc
) int p1
, leftc
, rightc
; {
h1
= eht
[p1
]; ebase
[yyval
] = b1
= ebase
[p1
];
printf(".ds %d ", yyval
);
ewid
[yyval
] = ewid
[p1
] + 1 + (rightc
? 1 : 0);
if(dbg
)printf(".\tcurly: h=%d b=%d n=%d w=%d l=%c,r=%c\n",
eht
[yyval
],ebase
[yyval
],n
,ewid
[yyval
],leftc
,rightc
);
diacrit(p1
,type
) int p1
,type
; {
printf(".ds %d \\*(%d", yyval
, p1
);
back((ewid
[p1
]+ewid
[c
])/2);
fwd(abs(ewid
[p1
]-ewid
[c
])/2);
ewid
[yyval
] = max(ewid
[p1
], ewid
[c
]);
ebase
[yyval
] = ebase
[p1
];
if(dbg
)printf(".\t%c diacrit: S%d <- %d; h=%d,b=%d,w=%d\n",
type
, yyval
, p1
, eht
[yyval
], ebase
[yyval
], ewid
[yyval
]);
move(dir
, amt
, p
) int dir
, amt
; char *p
; {
printf(".ds %d ", yyval
);
else if( dir
==1 ) up(amt
);
else if( dir
==2 ) back(amt
);
else if( dir
==3 ) down(amt
);
if(dbg
)printf(".\tmove %d dir %d amt %d; h=%d b=%d\n",
p
,dir
,amt
,eht
[yyval
],ebase
[yyval
]);