diff options
Diffstat (limited to 'biblio/bibtex/utils/refer-tools/refer.bst')
-rw-r--r-- | biblio/bibtex/utils/refer-tools/refer.bst | 387 |
1 files changed, 387 insertions, 0 deletions
diff --git a/biblio/bibtex/utils/refer-tools/refer.bst b/biblio/bibtex/utils/refer-tools/refer.bst new file mode 100644 index 0000000000..8b7fe4b634 --- /dev/null +++ b/biblio/bibtex/utils/refer-tools/refer.bst @@ -0,0 +1,387 @@ +%From @mitvma.mit.edu:cjmchale@cs.tcd.ie Mon Jul 2 19:48:31 1990 +%Return-Path: <@mitvma.mit.edu:cjmchale@cs.tcd.ie> +%Received: from mitvma.mit.edu by life.ai.mit.edu (4.1/AI-4.10) id AA07748; Mon, 2 Jul 90 19:48:24 EDT +%Received: from MITVMA.MIT.EDU by mitvma.mit.edu (IBM VM SMTP R1.2.1MX) with BSMTP id 4555; Mon, 02 Jul 90 19:47:32 EDT +%Received: from IRLEARN.UCD.IE by MITVMA.MIT.EDU (Mailer R2.05) with BSMTP id +% 0199; Mon, 02 Jul 90 19:47:23 EDT +%Received: from ccvax.ucd.ie by IRLEARN.UCD.IE (Mailer R2.03B) with BSMTP id +% 2688; Mon, 02 Jul 90 14:45:10 GMT +%Received: from cs.tcd.ie by ccvax.ucd.ie; Mon, 2 Jul 90 14:38 GMT +%Received: from csaran.cs.tcd.ie by cs.tcd.ie; Mon, 2 Jul 90 14:42 GMT +%Date: Mon, 2 Jul 90 14:39:44 BST +%From: cjmchale%cs.tcd.ie@mitvma.mit.edu +%Subject: Re: BibTex <-> Tib/Refer converter wanted +%Sender: cjmchale%cs.tcd.ie@mitvma.mit.edu +%To: tmb@wheaties.ai.mit.edu +%Newsgroups: comp.text.tex,comp.text +%In-Reply-To: <9290@life.ai.mit.edu> +%Organization: DSG, Dept. of Comp.Sc., Trinity College, Dublin, Ireland. +%Message-Id: <9007021439.aa02454@csaran.cs.tcd.ie> +%Status: R +% +%In article <9290@life.ai.mit.edu> you write: +%>I am looking for a converter to convert BibTex bibliography files +%>to Tib/Refer files and vice versa. Even if you have just a +%>shell script that isn't completely general, that would be fine. +%> +%> Thanks, Thomas. +%> +%>PS: thanks to everyone who responded to my question about refer-style +%>bibliography processors. The answer was to get Tib from ENEEVAX.UMD.EDU. +% +%You may not be aware of this but BibTeX is actually a (special +%purpose) programming language! The source code file for a BibTeX +%program is the bibliography style file (".bst"). BibTeX reads in the +%bibtex entries and the code in the ".bst" file munges them about and +%usually writes LaTeX code out. However, if you learn how to program +%BibTeX (as the local guru for its manual---it's only about 10 or 20 +%pages long) then you could write your own custom ".bst" files that +%will do exactly what you want them to. In particular, instead of +%writing out LaTeX style code it could write out "Hello World" or even +%generate a file that looks quite like a refer style file. +% +%It would be difficult to get such a ".bst" file to convert TeX +%commands (which might be imbedded in the bib entries) to refer +%commands but the actual changing of "author=..." to %A ... is trivial +%(for the most part; there are a few mismatches between the fields that +%BibTeX and refer use). +% +%Anyway, I've written such a ".bst" file and a UNIX "sh" shell script +%to automate the process. I've included them below. +% +%------------------- Start of file "refer.bst" --------------------- +% +% 8/4/'90 +% Hacked together by Ciaran McHale (cjmchale@cs.tcd.ie) to translate +% BibTeX bibliographies into refer format +% Based on a bib style file by Kannan Varadhan +% + + +ENTRY + { % entry fields + abstract % non standard + address + annote % non standard + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + keywords % non standard + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} % no integer entry variables + { label extra.label sort.label } % label entry variables + + +STRINGS { s t a.name } + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {handle.names} +{ 't := % type e.g. "A" for authors, "E" for editors + 's := % the string containing the names + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 'a.name := + + a.name "others" = + 'skip$ % don't print out "%A others" + { "%" t * " " * a.name * write$ newline$ } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + + + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + + + + + + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + + + + + +STRINGS { is.digit.tmp } + +FUNCTION {is.digit} + +{ + 'is.digit.tmp := + is.digit.tmp "0" = + is.digit.tmp "1" = or + is.digit.tmp "2" = or + is.digit.tmp "3" = or + is.digit.tmp "4" = or + is.digit.tmp "5" = or + is.digit.tmp "6" = or + is.digit.tmp "7" = or + is.digit.tmp "8" = or + is.digit.tmp "9" = or +} + +FUNCTION {handle.maybe.empty} +{ + 't := + duplicate$ + empty$ + 'pop$ + { "%" t * " " * swap$ * write$ newline$ } + if$ +} + +FUNCTION {translate} +{ + newline$ % get a blank line between each entry + + title "T" handle.maybe.empty + booktitle "B" handle.maybe.empty + + % there may be multiple authors so handle it differently + author empty$ + { " empty author in " cite$ * warning$ } + { author "A" handle.names } + if$ + editor "E" handle.maybe.empty + journal "J" handle.maybe.empty + keywords "K" handle.maybe.empty + cite$ "L" handle.maybe.empty + volume "V" handle.maybe.empty + abstract "X" handle.maybe.empty + + % The date, if present may be just the year or both the month and year + % or might even be just the month + month empty$ year empty$ and + 'skip$ % no date of publication so nothing to do + { + month empty$ % I'm using the if statement because I'm not + { "" } % sure that--- month " " year * --- would work. + { month " " * } % (The manual doesn't mention anything about + if$ % this so I'm playing safe) + year empty$ + { "" } + { year } + if$ + * + "D" handle.maybe.empty + } + if$ + pages "P" handle.maybe.empty + note "O" handle.maybe.empty + number "N" handle.maybe.empty + series "S" handle.maybe.empty + annote "Y" handle.maybe.empty + address "C" handle.maybe.empty + +} + + +FUNCTION {article} { translate } +FUNCTION {book} { translate } +FUNCTION {booklet} { translate } +FUNCTION {inbook} { translate } +FUNCTION {incollection} { translate } +FUNCTION {inproceedings} { translate } +FUNCTION {manual} { translate } +FUNCTION {mastersthesis} { translate } +FUNCTION {misc} { translate } +FUNCTION {phdthesis} { translate } +FUNCTION {proceedings} { translate } +FUNCTION {techreport} { translate } +FUNCTION {unpublished} { translate } +FUNCTION {default.type} { translate } + + +READ + +ITERATE {call.type$} +------------------- End of file "refer.bst" --------------------- + +------------------- Start of file "bib2refer" --------------------- +#! /bin/sh +# Written by Ciaran McHale (cjmchale@cs.tcd.ie) 8/4/'90 + +FN=`basename $0` + +case $# in +0) echo "Usage: $FN <filename> [<filename>*]" ; exit 1 ;; +esac + +# +# This shell script uses bibtex and a custom made bibliography style file +# to translate BibTeX bibliographies into refer format. It is based on +# another shell script written by Eamonn McManus, Alan Judge and Ciaran McHale. +# +STYLE=refer # BibTeX-to-refer style file + +FILE=tmp +RESULT=${FN}.out +BIBFILE=${FILE}.bib + +# clean up if interrupted +trap 'rm ${FILE}.bbl ${FILE}.aux ${FILE}.blg ; exit 1' 1 2 3 15 + +> ${FILE}.bbl # truncate the files +> ${FILE}.aux +> ${FILE}.blg + +# +#Hand craft the .aux file +# +BIBRECD="" +for i +do + file="`echo $i | sed 's/.bib//'`" + BIBRECD="${BIBRECD},${file}" +done +BIBRECD="`echo $BIBRECD | sed 's/^,//'`" # remove 1st " " + +echo "\bibstyle{$STYLE}" >> ${FILE}.aux +echo "\bibdata{$BIBRECD}" >> ${FILE}.aux + +# Read all the files (command line arguments) and use them to write +# the necessary info into the .aux file. +for i +do + file="`echo $i | sed 's/.bib//'`" + bibfile=${file}.bib + echo FILE $bibfile has `egrep '^@' $bibfile | wc -l` records + # create the .aux file with \citation commands in it + sed -n 's/^@.*[{(][ ]*\(.*\)/\\citation {\1}/p' $bibfile | + sed 's/[, ]//g' >>${FILE}.aux + +done + +bibtex $FILE +cp ${FILE}.bbl ${RESULT} + +echo; echo ${FN}: output in ${RESULT}; echo + +# Cleanup... +rm ${FILE}.bbl ${FILE}.aux ${FILE}.blg + +exit 0 +------------------- End of file "bib2refer" --------------------- + + +This was written as a quick hack and I haven't tested it thoroughly so +if you see any problems then be prepared to get out the BibTeX +programming manual and change a line or two (hopefully that won't be +necessary). + + +Ciaran. +-- +Ciaran McHale +Department of Computer Science, Trinity College, Dublin 2, Ireland. +Telephone: +353-1-772941 ext 1538 FAX: +353-1-772204 Telex: 93782 TCD EI +email: cjmchale@cs.tcd.ie or cjmchale%cs.tcd.ie@cunyvm.cuny.edu + My opinions and bad language do not represent Trinity + |