From cd5c755deee14b76b005ec3913de8e1b13e13580 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Sat, 25 Dec 2010 23:25:53 +0000 Subject: Implement schwarze@'s much more elegant version of my %T/%J fix. --- mdoc.h | 2 +- mdoc_term.c | 6 +++--- mdoc_validate.c | 19 +++---------------- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/mdoc.h b/mdoc.h index 8f1a55db..155410fb 100644 --- a/mdoc.h +++ b/mdoc.h @@ -354,7 +354,7 @@ struct mdoc_an { }; struct mdoc_rs { - int titlejournal; /* whether %T and %J */ + struct mdoc_node *child_J; /* pointer to %J */ }; /* diff --git a/mdoc_term.c b/mdoc_term.c index 7a4a7fa5..f96b9721 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -2148,8 +2148,8 @@ termp__t_post(DECL_ARGS) * If we're in an `Rs' and there's a journal present, then quote * us instead of underlining us (for disambiguation). */ - if (n->parent && MDOC_Rs == n->parent->tok && - n->parent->norm->Rs.titlejournal) + if (n->parent && MDOC_Rs == n->parent->tok && + n->parent->norm->Rs.child_J) termp_quote_post(p, pair, m, n); termp____post(p, pair, m, n); @@ -2165,7 +2165,7 @@ termp__t_pre(DECL_ARGS) * us instead of underlining us (for disambiguation). */ if (n->parent && MDOC_Rs == n->parent->tok && - n->parent->norm->Rs.titlejournal) + n->parent->norm->Rs.child_J) return(termp_quote_pre(p, pair, m, n)); term_fontpush(p, TERMFONT_UNDER); diff --git a/mdoc_validate.c b/mdoc_validate.c index 89cdde0e..19215261 100644 --- a/mdoc_validate.c +++ b/mdoc_validate.c @@ -1649,19 +1649,8 @@ post_rs(POST_ARGS) { struct mdoc_node *nn, *next, *prev; int i, j; - int *tj; -#define RS_JOURNAL (1 << 0) -#define RS_TITLE (1 << 1) - /* Mark whether we're carrying both a %T and %J. */ - - tj = &mdoc->last->norm->Rs.titlejournal; - - if (MDOC_BLOCK == mdoc->last->type) { - if ( ! (RS_JOURNAL & *tj && RS_TITLE & *tj)) - *tj = 0; - return(1); - } else if (MDOC_BODY != mdoc->last->type) + if (MDOC_BODY != mdoc->last->type) return(1); /* @@ -1677,10 +1666,8 @@ post_rs(POST_ARGS) break; if (i < RSORD_MAX) { - if (MDOC__T == rsord[i]) - *tj |= RS_TITLE; - else if (MDOC__J == rsord[i]) - *tj |= RS_JOURNAL; + if (MDOC__J == rsord[i]) + mdoc->last->norm->Rs.child_J = nn; next = nn->next; continue; } -- cgit