Re: [patch] fix natbib conversion
Tyler Smith <[email protected]> Mon, 30 Jul 2007 03:49:11 +0000 (UTC)
| Newsgroups | gmane.comp.tex.latex.latex2rtf.devel |
|---|---|
| Organization | Sedgeboy Inc. |
| Message-ID | <[email protected]> |
On 2007-01-04, Juergen Spitzmueller <[email protected]> wrote: > --nextPart2658145.gmgorcnYXc > Content-Type: text/plain; charset=utf-8 > Content-Transfer-Encoding: quoted-printable > > Hi, > > I've fixed some issues with natbib conversion in latex2rtf-1.9.16a: > > - \bibpunct parsing was broken (as soon as you chose the optional argumen= > t, > everything was messed up). > > - the optional argument of \bibpunct was not read in correctly > > - the parsing of natbibs (unusual) optional arguments was wrong > > - the positioning of the first and second argument (which depends on the > actual cite command as well as from whether there are multiple keys) > differed from the dvi output. > > The output (including first and second argument and bibpunct) is now exac= > tly > the same as in the dvi. > > Please find attached a diff against 1.9.16a. > > Regards, > J=C3=BCrgen Hi Jurgen, I applied your patch to 1.9.16a, and then merged that into the current version (svn revision 570). I only did a very cursory test of the patch, but it does now appear to work as it should. Thanks, Tyler > --nextPart2658145.gmgorcnYXc > Content-Type: text/x-diff; name="xref.diff" > Content-Disposition: attachment; filename="xref.diff" > Content-Transfer-Encoding: quoted-printable > > --- xref.c 2007-01-04 19:14:32.000000000 +0100 > +++ latex2rtf-1.9.16a/xref.c 2007-01-04 19:20:20.000000000 +0100 > @@ -645,7 +645,7 @@ > return 0; > } >=20 > -static void ConvertNatbib(char *s, int code, char *pre, char *post, int = > first) > +static void ConvertNatbib(char *s, int code, char *pre, char *post, int = > first, int last) > { > char *n, *year, *abbv, *full, *v; > int author_repeated, year_repeated; > @@ -723,12 +723,13 @@ > fprintRTF(" "); > ConvertString(g_bibpunct_open); > =09 > - ConvertString(year); > if (pre) { > - ConvertString(g_bibpunct_postnote_sep); > ConvertString(pre); > + fprintRTF(" "); > } > - if (post) { > + > + ConvertString(year); > + if (last && post && !isEmptyName(post)) { > ConvertString(g_bibpunct_postnote_sep); > ConvertString(post); > } > @@ -755,20 +756,15 @@ > } >=20 > fprintRTF(" "); > - =09 > - if (pre && post) { > + > + if (pre) { > ConvertString(pre); > fprintRTF(" "); > } > - > + =09 > ConvertString(year); >=20 > - if (pre && !post) { > - fprintRTF(", "); > - ConvertString(pre); > - } > - > - if (post) { > + if (last && post && !isEmptyName(post)) { > ConvertString(g_bibpunct_postnote_sep); > ConvertString(post); > } > @@ -785,10 +781,10 @@ > fprintRTF(" "); > } >=20 > - if (pre && post && first) { > - ConvertString(pre); > - fprintRTF(" "); > - } > + if (pre && g_current_cite_item =3D=3D 1) { > + ConvertString(pre); > + fprintRTF(" "); > + } >=20 > if (!author_repeated) { /* suppress repeated names */ > ConvertString(v); > @@ -800,12 +796,7 @@ > =09 > ConvertString(year); >=20 > - if (pre && !post) { > - fprintRTF(", "); > - ConvertString(pre); > - } > - > - if (post && *post !=3D '\0') { > + if (last && post && !isEmptyName(post)) { > ConvertString(g_bibpunct_postnote_sep); > ConvertString(post); > } > @@ -828,11 +819,9 @@ > if (strncmp(year, g_last_year_cited, 4) =3D=3D 0) /* over = > simplistic test * ... */ > year_repeated =3D TRUE; >=20 > - if (pre && post!=3DNULL && g_current_cite_item =3D=3D 1) { > - if (*pre) { > - ConvertString(pre); > + if (pre && g_current_cite_item =3D=3D 1) { > + ConvertString(pre); > fprintRTF(" "); > - } > } > if (!first && !author_repeated) { > ConvertString(g_bibpunct_cite_sep); > @@ -860,15 +849,9 @@ > } > } >=20 > - if (pre && post=3D=3DNULL) { > - ConvertString(g_bibpunct_postnote_sep); > - ConvertString(pre); > - fprintRTF(" "); > - } > - if (post && *post !=3D '\0') { > + if (last && post && !isEmptyName(post)) { > ConvertString(g_bibpunct_postnote_sep); > ConvertString(post); > - fprintRTF(" "); > } > break; >=20 > @@ -885,7 +868,13 @@ > if (CITE_AUTHOR_STAR =3D=3D code) > if (!isEmptyName(full)) > v =3D full; > + > ConvertString(v); > + > + if (last && post && !isEmptyName(post)) { > + ConvertString(g_bibpunct_postnote_sep); > + ConvertString(post); > + } > break; >=20 > case CITE_YEAR: > @@ -895,21 +884,15 @@ > fprintRTF(" "); > } >=20 > - if (CITE_YEAR !=3D code && pre && !isEmptyName(post) && g_cu= > rrent_cite_item =3D=3D 1) { > + if (CITE_YEAR !=3D code && pre && g_current_cite_item =3D=3D= > 1) { > ConvertString(pre); > fprintRTF(" "); > } > ConvertString(year); >=20 > - if (pre && isEmptyName(post)) { > - ConvertString(g_bibpunct_postnote_sep); > - ConvertString(pre); > - fprintRTF(" "); > - } > - if (post && *post !=3D '\0') { > + if (last && post && !isEmptyName(post)) { > ConvertString(g_bibpunct_postnote_sep); > ConvertString(post); > - fprintRTF(" "); > } > break; > } > @@ -1001,7 +984,8 @@ > if (s) { > if (g_bibpunct_postnote_sep) > free(g_bibpunct_postnote_sep); > - g_bibpunct_postnote_sep=3DgetBraceParam(); > + g_bibpunct_postnote_sep =3D strdup(s); > + free(s); > } > =09 > free(g_bibpunct_open); > @@ -1285,6 +1269,7 @@ > char *option =3D NULL; > char *pretext =3D NULL; > int first_key =3D TRUE; > + int last_key =3D FALSE; >=20 > /* Setup punctuation and read options before citation */ > g_current_cite_paren =3D TRUE; > @@ -1298,6 +1283,10 @@ > =09 > pretext =3D getBracketParam(); > option =3D getBracketParam(); > + if (!option) { > + option =3D pretext; > + pretext =3D '\0'; > + } > if (code !=3D CITE_P && code !=3D CITE_P_STAR && code !=3D CITE_YEAR_P) > g_current_cite_paren =3D FALSE; > =20 > @@ -1362,7 +1351,7 @@ > diagnostics(3, "natbib key=3D[%s] <%s> ", key, s); > if (s) { > g_current_cite_seen =3D citation_used(key); > - ConvertNatbib(s, code, pretext, option, first_key); > + ConvertNatbib(s, code, pretext, option, first_key, last_key); > } else { > if (!first_key) { > ConvertString(g_bibpunct_cite_sep); > @@ -1376,6 +1365,7 @@ > =20 > key =3D next_keys; > next_keys =3D popCommaName(key); > + last_key =3D !next_keys; > } >=20 > if (g_current_cite_paren) > > --nextPart2658145.gmgorcnYXc > Content-Type: text/plain; charset="us-ascii" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Content-Disposition: inline > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > --nextPart2658145.gmgorcnYXc > Content-Type: text/plain; charset="us-ascii" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Content-Disposition: inline > > _______________________________________________ > Latex2rtf-developers mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/latex2rtf-developers > > --nextPart2658145.gmgorcnYXc-- > > > ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/