⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 refer6.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
# include "refer..c"putref (n, tvec)	char *tvec[];{char *s, *tx;char buf1[LLINE], buf2[50];int nauth 0, i, lastype 0, cch, macro 0, la;int lauth =0, ltitle =0, lother =0;fprintf(fo, ".]-%c", sep);# define dsde (macro? "de" : "ds")# define ifnl (macro? sep : ' ')for (i=0; i<n; i++)	{	s = tvec[i];	if (*s==0) continue;	if (control(s[0]) )		{		if (lastype && macro)			fprintf(fo, "..%c", sep);		if (control(s[1]))			{			cch = s[2];			tx = s+3;			macro=1;			}		else			{			cch = s[1];			tx = s+2;			macro=0;			}		}	else		{		cch = lastype;		tx=s;		}# if D1fprintf(stderr, "smallcaps %s cch %c\n",smallcaps, cch);# endif	if (mindex (smallcaps, cch))		tx = caps(tx, buf1);# if D1fprintf(stderr, " s %o tx %o %s\n",s,tx,tx);# endif	if (!control(s[0])) /* append to previous item */		{		if (lastype!=0)			{			if (macro)				fprintf(fo, "%s%c", tx, sep);			else				fprintf(fo, ".as [%c \" %s%c",lastype,tx,sep);			if (lastype == 'T')				ltitle = (mindex(".;,?", last(tx))!=0);			if (lastype == 'A')				lauth = last(tx) == '.';			}		continue;		}	if (mindex("XYZ[]", cch)) /* skip these */		{		lastype=0;		continue;		}	else	if (cch == 'A')		{		if (nauth < authrev)			tx = revauth(tx, buf2);		if (nauth++ ==0)			if (macro)				fprintf(fo, ".de [%c%c%s%c",cch,sep,tx,sep);			else				fprintf(fo, ".ds [%c%s%c", cch,tx,sep);		else			{			la = (tvec[i+1][1]!='A');			fprintf(fo, ".as [A \"");			if (la == 0 || nauth != 2)				fprintf(fo, ",");			if (la)			fprintf(fo,"%s", 				mindex(smallcaps, 'A')? " \\s-2AND\\s+2" : " and");			fprintf(fo, "%s%c", tx, sep);			}		lauth = last(tx)=='.';		}	else		if (macro)			fprintf(fo, ".de [%c%c%s%c",cch,sep, tx, sep);		else			fprintf(fo, ".ds [%c%s%c",cch,tx, sep);	if (cch=='P')		fprintf(fo, ".nr [P %d%c", mindex(s, '-')!=0, sep);	lastype = cch;	if (cch == 'T')		ltitle = (mindex(".;,?", last(tx)) != 0);	if (cch == 'O')		lother = (mindex(".;,?", last(tx)) != 0);	}if (lastype && macro)	fprintf(fo, "..%c", sep);fprintf(fo, ".nr [T %d%c", ltitle, sep);fprintf(fo, ".nr [A %d%c", lauth, sep);fprintf(fo, ".nr [O %d%c", lother, sep);fprintf (fo, ".][ %s%c", class(n, tvec), '\n');}tabs (sv, line)	char *sv[], *line;{char *p;int n 0;sv[n++] = line;for( p= line; *p; p++)	{	if (*p == '\n')		{		*p=0;		sv[n++] = p+1;		}	}return(n-1);}class (nt, tv)	char *tv[];{if (hastype (nt, tv, 'J'))	return("1 journal-article");if (hastype (nt, tv, 'B'))	return("3 article-in-book");if (hastype (nt, tv, 'R'))	return ("4 tech-report");if (hastype (nt, tv, 'G'))	return ("4 tech-report");if (hastype (nt, tv, 'I'))	return("2 book");if (hastype (nt, tv,'M'))	return ("5 bell-tm");return("0 other");}hastype (nt, tv, c)	char *tv[];{int i;for(i=0; i<nt; i++)	if ( control(tv[i][0]) && tv[i][1]==c )		return(1);return(0);}caps(a, b)	char *a, *b;{char *p;int c, alph, this;p=b;alph = 0;while (c = *a++)	{	this = isalpha(c);	if (this && alph==1)		{		*b++ = '\\';		*b++ = 's';		*b++ = '-';		*b++ = '2';		}	if (!this && alph>1)		{		*b++ = '\\';		*b++ = 's';		*b++ = '+';		*b++ = '2';		}	if (this)		c &= (~040);	*b++ = c;	alph = this ? alph+1 : 0;	}if (alph>1)	{	*b++ = '\\';	*b++ = 's';	*b++ = '+';	*b++ = '2';	}*b=0;return (p);}revauth(s, b)	char *s, *b;{char *init, *name, *jr, *p, *bcop;bcop = b;init=name=s;while (*name)name++;jr=name;while (name>init && *name!= ' ')	name--;if (name[-1] == ',' || name[-1]== '(' )	{	jr = --name;	while (name>init && *name != ' ')		name--;	}p=name;while (p<jr)	*b++ = *p++;*b++ = ',';while (init<name)	*b++ = *init++;if (*jr)jr++;while(*jr)	*b++ = *jr++;*b++ = 0;return(bcop);}last(s)	char *s;{while (*s) s++;return(*--s);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -