[net.bugs.4bsd] bib - disambiguating references

colonel@sunybcs.UUCP (Col. G. L. Sicherman) (11/06/86)

Bib disambiguates only successive references.  Thus if your citation
template differs from your sort template, references may not be dis-
ambiguated properly.  Example:

bibl	%A Abel Abel			.\" bib -c3\ D | ditroff -ms
	%T All about Aardvarks		Much has been written about
	%I Aeolipile Press		aardvarks [. abel aardvarks .].
	%D 1986				Some regard them as a sort
					of behemoth [. abel baker behemoths .];
	%A Abel Abel			others consider them superior to
	%A Baker Baker			cats [. abel cats .].
	%T Beset by Behemoths
	%I Basilisk Press		REFERENCES.
	%D 1986
					[Abel 1986]
	%A Abel Abel				A. Abel, _All about Aardvarks,_
	%T Cats Can't Count		Aeolipile Press, 1986.
	%I Cat-O-Print Co.
	%D 1986				[Abel and Baker 1986]
						A. Abel and B. Baker, _Beset
					by Behemoths,_ Basilisk Press, 1986.

					[Abel 1986]
						A. Abel, _Cats Can't Count,_
					Cat-O-Print Co., 1986.

Here's a quick, ugly fix.  The source file is bibargs.c.
-------------------------
994a995,999
> /*
>  *	Bug fix: if sort template != citation template, equal citation
>  *	  strings may not be adjacent.  Quick kluge is to compare all
>  *	  strings (yuk).		--the Colonel, 5 Nov 1986
>  */
999,1000c1004,1006
<    for (i = 0; i < numrefs-1; i = j) {
<       j = i + 1;
---
>    for (i = 0; i < numrefs-1; i++) {
>       adstr = 'a';
>       for (j = i + 1; j < numrefs; j++)
1002,1009c1008,1009
<          adstr = 'a';
<          for(j = i+1;
< 	     j<numrefs && strcmp(refinfo[i].ri_cite,refinfo[j].ri_cite) == 0;
< 	     j++) {
<             adstr = 'a' + (j-i);
< 	    refinfo[j].ri_disambig[0] = adstr;
<             }
< 	 refinfo[i].ri_disambig[0] = 'a';
---
>          refinfo[i].ri_disambig[0] = 'a';
>          refinfo[j].ri_disambig[0] = ++adstr;
-- 
Col. G. L. Sicherman
UU: ...{rocksvax|decvax}!sunybcs!colonel
CS: colonel@buffalo-cs
BI: colonel@sunybcs, csdsiche@sunyabvc