version 1.343, 2017/02/06 03:44:58 |
version 1.349, 2017/04/17 12:53:29 |
Line 395 print_mdoc_node(DECL_ARGS) |
|
Line 395 print_mdoc_node(DECL_ARGS) |
|
*/ |
*/ |
if (ENDBODY_NOT != n->end) |
if (ENDBODY_NOT != n->end) |
n->body->flags |= NODE_ENDED; |
n->body->flags |= NODE_ENDED; |
|
|
/* |
|
* End of line terminating an implicit block |
|
* while an explicit block is still open. |
|
* Continue the explicit block without spacing. |
|
*/ |
|
if (ENDBODY_NOSPACE == n->end) |
|
p->flags |= TERMP_NOSPACE; |
|
break; |
break; |
} |
} |
|
|
Line 614 termp_ll_pre(DECL_ARGS) |
|
Line 606 termp_ll_pre(DECL_ARGS) |
|
static int |
static int |
termp_it_pre(DECL_ARGS) |
termp_it_pre(DECL_ARGS) |
{ |
{ |
|
struct roffsu su; |
char buf[24]; |
char buf[24]; |
const struct roff_node *bl, *nn; |
const struct roff_node *bl, *nn; |
size_t ncols, dcol; |
size_t ncols, dcol; |
Line 691 termp_it_pre(DECL_ARGS) |
|
Line 684 termp_it_pre(DECL_ARGS) |
|
|
|
for (i = 0, nn = n->prev; |
for (i = 0, nn = n->prev; |
nn->prev && i < (int)ncols; |
nn->prev && i < (int)ncols; |
nn = nn->prev, i++) |
nn = nn->prev, i++) { |
offset += dcol + a2width(p, |
SCALE_HS_INIT(&su, |
bl->norm->Bl.cols[i]); |
term_strlen(p, bl->norm->Bl.cols[i])); |
|
su.scale /= term_strlen(p, "0"); |
|
offset += term_hspan(p, &su) / 24 + dcol; |
|
} |
|
|
/* |
/* |
* When exceeding the declared number of columns, leave |
* When exceeding the declared number of columns, leave |
Line 708 termp_it_pre(DECL_ARGS) |
|
Line 704 termp_it_pre(DECL_ARGS) |
|
* Use the declared column widths, extended as explained |
* Use the declared column widths, extended as explained |
* in the preceding paragraph. |
* in the preceding paragraph. |
*/ |
*/ |
width = a2width(p, bl->norm->Bl.cols[i]) + dcol; |
SCALE_HS_INIT(&su, term_strlen(p, bl->norm->Bl.cols[i])); |
|
su.scale /= term_strlen(p, "0"); |
|
width = term_hspan(p, &su) / 24 + dcol; |
break; |
break; |
default: |
default: |
if (NULL == bl->norm->Bl.width) |
if (NULL == bl->norm->Bl.width) |
Line 1716 termp_quote_pre(DECL_ARGS) |
|
Line 1714 termp_quote_pre(DECL_ARGS) |
|
case MDOC_Bq: |
case MDOC_Bq: |
term_word(p, "["); |
term_word(p, "["); |
break; |
break; |
|
case MDOC__T: |
|
/* FALLTHROUGH */ |
case MDOC_Do: |
case MDOC_Do: |
case MDOC_Dq: |
case MDOC_Dq: |
term_word(p, "\\(Lq"); |
term_word(p, "\\(Lq"); |
Line 1730 termp_quote_pre(DECL_ARGS) |
|
Line 1730 termp_quote_pre(DECL_ARGS) |
|
case MDOC_Pq: |
case MDOC_Pq: |
term_word(p, "("); |
term_word(p, "("); |
break; |
break; |
case MDOC__T: |
|
case MDOC_Qo: |
case MDOC_Qo: |
case MDOC_Qq: |
case MDOC_Qq: |
term_word(p, "\""); |
term_word(p, "\""); |
Line 1773 termp_quote_post(DECL_ARGS) |
|
Line 1772 termp_quote_post(DECL_ARGS) |
|
case MDOC_Bq: |
case MDOC_Bq: |
term_word(p, "]"); |
term_word(p, "]"); |
break; |
break; |
|
case MDOC__T: |
|
/* FALLTHROUGH */ |
case MDOC_Do: |
case MDOC_Do: |
case MDOC_Dq: |
case MDOC_Dq: |
term_word(p, "\\(Rq"); |
term_word(p, "\\(Rq"); |
Line 1789 termp_quote_post(DECL_ARGS) |
|
Line 1790 termp_quote_post(DECL_ARGS) |
|
case MDOC_Pq: |
case MDOC_Pq: |
term_word(p, ")"); |
term_word(p, ")"); |
break; |
break; |
case MDOC__T: |
|
case MDOC_Qo: |
case MDOC_Qo: |
case MDOC_Qq: |
case MDOC_Qq: |
term_word(p, "\""); |
term_word(p, "\""); |
|
|
termp_lk_pre(DECL_ARGS) |
termp_lk_pre(DECL_ARGS) |
{ |
{ |
const struct roff_node *link, *descr; |
const struct roff_node *link, *descr; |
|
int display; |
|
|
if (NULL == (link = n->child)) |
if ((link = n->child) == NULL) |
return 0; |
return 0; |
|
|
if (NULL != (descr = link->next)) { |
/* Link text. */ |
|
if ((descr = link->next) != NULL && !(descr->flags & NODE_DELIMC)) { |
term_fontpush(p, TERMFONT_UNDER); |
term_fontpush(p, TERMFONT_UNDER); |
while (NULL != descr) { |
while (descr != NULL && !(descr->flags & NODE_DELIMC)) { |
term_word(p, descr->string); |
term_word(p, descr->string); |
descr = descr->next; |
descr = descr->next; |
} |
} |
|
term_fontpop(p); |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
term_word(p, ":"); |
term_word(p, ":"); |
term_fontpop(p); |
|
} |
} |
|
|
|
/* Link target. */ |
|
display = term_strlen(p, link->string) >= 26; |
|
if (display) { |
|
term_newln(p); |
|
p->offset += term_len(p, p->defindent + 1); |
|
} |
term_fontpush(p, TERMFONT_BOLD); |
term_fontpush(p, TERMFONT_BOLD); |
term_word(p, link->string); |
term_word(p, link->string); |
term_fontpop(p); |
term_fontpop(p); |
|
|
|
/* Trailing punctuation. */ |
|
while (descr != NULL) { |
|
p->flags |= TERMP_NOSPACE; |
|
term_word(p, descr->string); |
|
descr = descr->next; |
|
} |
|
if (display) |
|
term_newln(p); |
return 0; |
return 0; |
} |
} |
|
|