version 1.281, 2014/09/03 05:22:45 |
version 1.284, 2014/10/20 02:33:06 |
Line 65 static void synopsis_pre(struct termp *, |
|
Line 65 static void synopsis_pre(struct termp *, |
|
|
|
static void termp____post(DECL_ARGS); |
static void termp____post(DECL_ARGS); |
static void termp__t_post(DECL_ARGS); |
static void termp__t_post(DECL_ARGS); |
static void termp_an_post(DECL_ARGS); |
|
static void termp_bd_post(DECL_ARGS); |
static void termp_bd_post(DECL_ARGS); |
static void termp_bk_post(DECL_ARGS); |
static void termp_bk_post(DECL_ARGS); |
static void termp_bl_post(DECL_ARGS); |
static void termp_bl_post(DECL_ARGS); |
Line 138 static const struct termact termacts[MDOC_MAX] = { |
|
Line 137 static const struct termact termacts[MDOC_MAX] = { |
|
{ NULL, NULL }, /* El */ |
{ NULL, NULL }, /* El */ |
{ termp_it_pre, termp_it_post }, /* It */ |
{ termp_it_pre, termp_it_post }, /* It */ |
{ termp_under_pre, NULL }, /* Ad */ |
{ termp_under_pre, NULL }, /* Ad */ |
{ termp_an_pre, termp_an_post }, /* An */ |
{ termp_an_pre, NULL }, /* An */ |
{ termp_under_pre, NULL }, /* Ar */ |
{ termp_under_pre, NULL }, /* Ar */ |
{ termp_cd_pre, NULL }, /* Cd */ |
{ termp_cd_pre, NULL }, /* Cd */ |
{ termp_bold_pre, NULL }, /* Cm */ |
{ termp_bold_pre, NULL }, /* Cm */ |
Line 345 print_mdoc_node(DECL_ARGS) |
|
Line 344 print_mdoc_node(DECL_ARGS) |
|
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
break; |
break; |
case MDOC_EQN: |
case MDOC_EQN: |
|
if ( ! (n->flags & MDOC_LINE)) |
|
p->flags |= TERMP_NOSPACE; |
term_eqn(p, n->eqn); |
term_eqn(p, n->eqn); |
break; |
break; |
case MDOC_TBL: |
case MDOC_TBL: |
Line 542 a2width(const struct termp *p, const char *v) |
|
Line 543 a2width(const struct termp *p, const char *v) |
|
struct roffsu su; |
struct roffsu su; |
|
|
assert(v); |
assert(v); |
if ( ! a2roffsu(v, &su, SCALE_MAX)) |
if ( ! a2roffsu(v, &su, SCALE_MAX)) { |
SCALE_HS_INIT(&su, term_strlen(p, v)); |
SCALE_HS_INIT(&su, term_strlen(p, v)); |
|
su.scale /= term_strlen(p, "0"); |
|
} |
|
|
return(term_hspan(p, &su)); |
return(term_hspan(p, &su)); |
} |
} |
Line 561 a2offs(const struct termp *p, const char *v) |
|
Line 564 a2offs(const struct termp *p, const char *v) |
|
return(term_len(p, p->defindent + 1)); |
return(term_len(p, p->defindent + 1)); |
else if (0 == strcmp(v, "indent-two")) |
else if (0 == strcmp(v, "indent-two")) |
return(term_len(p, (p->defindent + 1) * 2)); |
return(term_len(p, (p->defindent + 1) * 2)); |
else if ( ! a2roffsu(v, &su, SCALE_MAX)) |
else if ( ! a2roffsu(v, &su, SCALE_MAX)) { |
SCALE_HS_INIT(&su, term_strlen(p, v)); |
SCALE_HS_INIT(&su, term_strlen(p, v)); |
|
su.scale /= term_strlen(p, "0"); |
|
} |
|
|
return(term_hspan(p, &su)); |
return(term_hspan(p, &su)); |
} |
} |
|
|
termp_an_pre(DECL_ARGS) |
termp_an_pre(DECL_ARGS) |
{ |
{ |
|
|
if (NULL == n->child) |
if (n->norm->An.auth == AUTH_split) { |
return(1); |
|
|
|
/* |
|
* If not in the AUTHORS section, `An -split' will cause |
|
* newlines to occur before the author name. If in the AUTHORS |
|
* section, by default, the first `An' invocation is nosplit, |
|
* then all subsequent ones, regardless of whether interspersed |
|
* with other macros/text, are split. -split, in this case, |
|
* will override the condition of the implied first -nosplit. |
|
*/ |
|
|
|
if (n->sec == SEC_AUTHORS) { |
|
if ( ! (TERMP_ANPREC & p->flags)) { |
|
if (TERMP_SPLIT & p->flags) |
|
term_newln(p); |
|
return(1); |
|
} |
|
if (TERMP_NOSPLIT & p->flags) |
|
return(1); |
|
term_newln(p); |
|
return(1); |
|
} |
|
|
|
if (TERMP_SPLIT & p->flags) |
|
term_newln(p); |
|
|
|
return(1); |
|
} |
|
|
|
static void |
|
termp_an_post(DECL_ARGS) |
|
{ |
|
|
|
if (n->child) { |
|
if (SEC_AUTHORS == n->sec) |
|
p->flags |= TERMP_ANPREC; |
|
return; |
|
} |
|
|
|
if (AUTH_split == n->norm->An.auth) { |
|
p->flags &= ~TERMP_NOSPLIT; |
p->flags &= ~TERMP_NOSPLIT; |
p->flags |= TERMP_SPLIT; |
p->flags |= TERMP_SPLIT; |
} else if (AUTH_nosplit == n->norm->An.auth) { |
return(0); |
|
} |
|
if (n->norm->An.auth == AUTH_nosplit) { |
p->flags &= ~TERMP_SPLIT; |
p->flags &= ~TERMP_SPLIT; |
p->flags |= TERMP_NOSPLIT; |
p->flags |= TERMP_NOSPLIT; |
|
return(0); |
} |
} |
|
|
|
if (n->child == NULL) |
|
return(0); |
|
|
|
if (p->flags & TERMP_SPLIT) |
|
term_newln(p); |
|
|
|
if (n->sec == SEC_AUTHORS && ! (p->flags & TERMP_NOSPLIT)) |
|
p->flags |= TERMP_SPLIT; |
|
|
|
return(1); |
} |
} |
|
|
static int |
static int |