+static void
+roff_term_pre_ce(ROFF_TERM_ARGS)
+{
+ const struct roff_node *nc1, *nc2;
+
+ roff_term_pre_br(p, n);
+ p->flags |= n->tok == ROFF_ce ? TERMP_CENTER : TERMP_RIGHT;
+ nc1 = n->child->next;
+ while (nc1 != NULL) {
+ nc2 = nc1;
+ do {
+ nc2 = nc2->next;
+ } while (nc2 != NULL && (nc2->type != ROFFT_TEXT ||
+ (nc2->flags & NODE_LINE) == 0));
+ while (nc1 != nc2) {
+ if (nc1->type == ROFFT_TEXT)
+ term_word(p, nc1->string);
+ else
+ roff_term_pre(p, nc1);
+ nc1 = nc1->next;
+ }
+ p->flags |= TERMP_NOSPACE;
+ term_flushln(p);
+ }
+ p->flags &= ~(TERMP_CENTER | TERMP_RIGHT);
+}
+