From: Sam Moore Date: Tue, 22 Oct 2013 03:50:18 +0000 (+0800) Subject: Create Report Template X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;ds=sidebyside;h=abac25d8f7359256802b6887af8b058b106453b2;p=matches%2FMCTX3420.git Create Report Template --- diff --git a/reports/final/.gitignore b/reports/final/.gitignore new file mode 100644 index 0000000..7ce0e8d --- /dev/null +++ b/reports/final/.gitignore @@ -0,0 +1,8 @@ +*.out +*.dvi +*.aux +*.log +*.toc +*.bbl +*.blg +*~ diff --git a/reports/final/Makefile b/reports/final/Makefile new file mode 100644 index 0000000..ea4c15e --- /dev/null +++ b/reports/final/Makefile @@ -0,0 +1,19 @@ +#Makefile for thesis + +all : + make clean + make report.pdf + +report.pdf : report.tex + rm -f *.aux *.bbl *.log *.toc *.lof *.blg *.lot + + pdflatex --shell-escape report + bibtex report + pdflatex --shell-escape report + pdflatex --shell-escape report + + rm -f *.bbl *.log *.toc *.lof *.blg *.lot + + +clean : + rm -f report.pdf diff --git a/reports/final/README.md b/reports/final/README.md new file mode 100644 index 0000000..1ecfa28 --- /dev/null +++ b/reports/final/README.md @@ -0,0 +1 @@ +This is the final report for the MCTX3420 Software Team diff --git a/reports/final/references/refs.bib b/reports/final/references/refs.bib new file mode 100644 index 0000000..d058a8a --- /dev/null +++ b/reports/final/references/refs.bib @@ -0,0 +1,8 @@ +@misc{uwaRef, + author = "Example Reference, + year = 2013, + month = Aug, + title = "Harvard Citation Style", + howpublished = "\url{http://guides.is.uwa.edu.au/harvard}", + note = "UWA Reference guide" +} diff --git a/reports/final/report.pdf b/reports/final/report.pdf new file mode 100644 index 0000000..002ae80 Binary files /dev/null and b/reports/final/report.pdf differ diff --git a/reports/final/report.tex b/reports/final/report.tex new file mode 100644 index 0000000..e1dfa2d --- /dev/null +++ b/reports/final/report.tex @@ -0,0 +1,94 @@ +\documentclass[a4paper,12pt,titlepage]{report} +\linespread{1.3} +\usepackage{setspace} +\onehalfspacing + \parskip 10pt % sets spacing between paragraphs + %\renewcommand{\baselinestretch}{1.5} % Uncomment for 1.5 spacing between lines + %\parindent 0pt % sets leading space for paragraphs + + +%\usepackage{natbib} +\usepackage{makeidx} +\usepackage{graphicx} +\usepackage{caption} +%\usepackage{subfigure} +\usepackage{rotating} +%\usepackage{lscape} % Needed for landscaping when printing +\usepackage{pdflscape} % Needed for landscaping - in pdf viewer +\usepackage{verbatim} +\usepackage{amsmath, amsthm,amssymb} +\usepackage{mathrsfs} +\usepackage{hyperref} + +\usepackage{epstopdf} +\usepackage{float} +\usepackage[compact]{titlesec} +\titlespacing{\chapter}{0pt}{0pt}{0pt} +\titleformat{\chapter} +{\normalfont\LARGE\bfseries}{\thechapter.}{1em}{} + +%\usepackage{endfloat} +%\nomarkersintext + \topmargin -1.5cm % read Lamport p.163 + \oddsidemargin -0.04cm % read Lamport p.163 + \evensidemargin -0.04cm % same as oddsidemargin but for left-hand pages + \textwidth 16.59cm + \textheight 23.94cm + %\pagestyle{empty} % Uncomment if don't want page numbers + \parskip 6.2pt % sets spacing between paragraphs + \renewcommand{\baselinestretch}{1.5} % Uncomment for 1.5 spacing between lines + \parindent 0pt % sets leading space for paragraphs + +\usepackage{fancyheadings} +\pagestyle{fancy} +\addtolength{\headheight}{2.5pt} +\renewcommand{\chaptermark}[1]{\markboth{\thechapter~~#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection~~#1}{}} +\ifthenelse{\boolean{@twoside}} +{ + \rhead[\bfseries \rightmark]{\bfseries \thepage} + \lhead[\bfseries \leftmark]{\bfseries \thepage} + \addtolength{\headwidth}{\marginparsep} + \addtolength{\headwidth}{\marginparwidth} +}{ + \lhead{\bfseries \leftmark} + \rhead{\bfseries \thepage} +} +\cfoot{} + +%--------------------------------------------------------- +%--------------------------------------------------------- +\begin{document} + +\include{titlepage/Titlepage} % This is who you are + +\pagenumbering{roman} +\newpage +%--------------------------------------------------------- +% Do the table of Contents and lists of figures and tables +%--------------------------------------------------------- +\tableofcontents +\markboth{}{} +\newpage + +\pagenumbering{arabic} +%--------------------------------------------------------- +%--------------------------------------------------------- +%Include the chapters! + +%\include{chapters/Demonstration} + +%\newpage +%--------------------------------------------------------- +\renewcommand{\bibname}{References} +\bibliography{references/refs} +%\bibliographystyle{apalike} +\addcontentsline{toc}{part}{References} +%--------------------------------------------------------- + +% Appendices + +%--------------------------------------------------------- + +\end{document} + diff --git a/reports/final/styles/agu.bst b/reports/final/styles/agu.bst new file mode 100644 index 0000000..58c1cf9 --- /dev/null +++ b/reports/final/styles/agu.bst @@ -0,0 +1,1714 @@ +%% +%% This is file `agu.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `head,ay,nat,seq-key,nm-rev1,nmlm,x9,m1,lab,lab-it,keyxyr,blkyear,note-yr,thtit-a,trnum-it,vol-it,vnum-x,volp-com,pgsep-c,num-xser,pre-edn,edpar,bkedcap,edby,blk-com,pp,ed,abr,ednx,xedn,jabr,and-com,em-it,{}') +%% physjour.mbs (with options: `ay,nat,seq-key,nm-rev1,nmlm,x9,m1,lab,lab-it,keyxyr,blkyear,note-yr,thtit-a,trnum-it,vol-it,vnum-x,volp-com,pgsep-c,num-xser,pre-edn,edpar,bkedcap,edby,blk-com,pp,ed,abr,ednx,xedn,jabr,and-com,em-it,{}') +%% geojour.mbs (with options: `ay,nat,seq-key,nm-rev1,nmlm,x9,m1,lab,lab-it,keyxyr,blkyear,note-yr,thtit-a,trnum-it,vol-it,vnum-x,volp-com,pgsep-c,num-xser,pre-edn,edpar,bkedcap,edby,blk-com,pp,ed,abr,ednx,xedn,jabr,and-com,em-it,{}') +%% merlin.mbs (with options: `tail,ay,nat,seq-key,nm-rev1,nmlm,x9,m1,lab,lab-it,keyxyr,blkyear,note-yr,thtit-a,trnum-it,vol-it,vnum-x,volp-com,pgsep-c,num-xser,pre-edn,edpar,bkedcap,edby,blk-com,pp,ed,abr,ednx,xedn,jabr,and-com,em-it,{}') +%% ---------------------------------------- +%% *** For journals of the American Geophysical Union *** +%% *** NOTE: this version limits number of authors in ref list to +%% *** maximum of 9; if more there, only First et al are listed +%% *** Use agufull.bst instead for complete list +%% *** +%% *** Version 2.1d from 1999/05/20 +%% *** Book editors done right as P. James (Ed.), +%% *** Missing italics with some authors fixed +%% *** +%% *** Version 2.1c from 1999/02/11 +%% *** This version does not crash older BibTeX installations with +%% *** more than 3000 wiz-functions +%% *** +%% *** Version 2.1b from 1997/11/18 +%% *** (page numbers over 9999 are broken with commas, as 12,345) +%% *** +%% *** Version 2.1a from 1997/05/26 +%% *** (contains improvements from copy editor comments, +%% *** notes added with first word lowercase (bug in 2.1 fixed) +%% *** and journal `number' never output +%% *** abbreviation for grl corrected) +%% *** +%% +%% Copyright 1994-1999 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[1999/05/20 3.89 (PWD)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is an author-year citation style bibliography. As such, it is + % non-standard LaTeX, and requires a special package file to function properly. + % Such a package is natbib.sty by Patrick W. Daly + % The form of the \bibitem entries is + % \bibitem[Jones et al.(1990)]{key}... + % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + % The essential feature is that the label (the part in brackets) consists + % of the author names, as they should appear in the citation, with the year + % in parentheses following. There must be no space before the opening + % parenthesis! + % With natbib v5.3, a full list of authors may also follow the year. + % In natbib.sty, it is possible to define the type of enclosures that is + % really wanted (brackets or parentheses), but in either case, there must + % be parentheses in the label. + % The \cite command functions as follows: + % \citet{key} ==>> Jones et al. (1990) + % \citet*{key} ==>> Jones, Baker, and Smith (1990) + % \citep{key} ==>> (Jones et al., 1990) + % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32) + % \citeauthor{key} ==>> Jones et al. + % \citeauthor*{key} ==>> Jones, Baker, and Smith + % \citeyear{key} ==>> 1990 + %--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label extra.label sort.label short.list } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + skip$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\it " swap$ * "\/}" * } + if$ +} + + +FUNCTION {cite.name.font} +{ emphasize } + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "ed." } + +FUNCTION {bbl.volume} +{ "vol." } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp." } + +FUNCTION {bbl.page} +{ "p." } + +FUNCTION {bbl.chapter} +{ "chap." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + + %------------------------------------------------------------------- + % Begin module: + % \ProvidesFile{physjour.mbs}[1999/02/24 2.0d (PWD)] +MACRO {aa}{"Astron. \& Astrophys."} +MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."} +MACRO {aph} {"Acta Phys."} +MACRO {advp} {"Adv. Phys."} +MACRO {ajp} {"Amer. J. Phys."} +MACRO {ajm} {"Amer. J. Math."} +MACRO {amsci} {"Amer. Sci."} +MACRO {anofd} {"Ann. Fluid Dyn."} +MACRO {am} {"Ann. Math."} +MACRO {ap} {"Ann. Phys. (NY)"} +MACRO {adp} {"Ann. Phys. (Leipzig)"} +MACRO {ao} {"Appl. Opt."} +MACRO {apl} {"Appl. Phys. Lett."} +MACRO {app} {"Astroparticle Phys."} +MACRO {apj} {"Astrophys. J."} +MACRO {apjsup} {"Astrophys. J. Suppl. Ser."} +MACRO {baps} {"Bull. Amer. Phys. Soc."} +MACRO {cmp} {"Comm. Math. Phys."} +MACRO {cpam} {"Commun. Pure Appl. Math."} +MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"} +MACRO {cpc} {"Comp. Phys. Comm."} +MACRO {cqg} {"Class. Quant. Grav."} +MACRO {cra} {"C. R. Acad. Sci. A"} +MACRO {fed} {"Fusion Eng. \& Design"} +MACRO {ft} {"Fusion Tech."} +MACRO {grg} {"Gen. Relativ. Gravit."} +MACRO {ieeens} {"IEEE Trans. Nucl. Sci."} +MACRO {ieeeps} {"IEEE Trans. Plasma Sci."} +MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"} +MACRO {ip} {"Infrared Phys."} +MACRO {irp} {"Infrared Phys."} +MACRO {jap} {"J. Appl. Phys."} +MACRO {jasa} {"J. Acoust. Soc. America"} +MACRO {jcp} {"J. Comp. Phys."} +MACRO {jetp} {"Sov. Phys.--JETP"} +MACRO {jfe} {"J. Fusion Energy"} +MACRO {jfm} {"J. Fluid Mech."} +MACRO {jmp} {"J. Math. Phys."} +MACRO {jne} {"J. Nucl. Energy"} +MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."} +MACRO {jnm} {"J. Nucl. Mat."} +MACRO {jpc} {"J. Phys. Chem."} +MACRO {jpp} {"J. Plasma Phys."} +MACRO {jpsj} {"J. Phys. Soc. Japan"} +MACRO {jsi} {"J. Sci. Instrum."} +MACRO {jvst} {"J. Vac. Sci. \& Tech."} +MACRO {nat} {"Nature"} +MACRO {nature} {"Nature"} +MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"} +MACRO {nf} {"Nucl. Fusion"} +MACRO {nim} {"Nucl. Inst. \& Meth."} +MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."} +MACRO {np} {"Nucl. Phys."} +MACRO {npb} {"Nucl. Phys. B"} +MACRO {nt/f} {"Nucl. Tech./Fusion"} +MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"} +MACRO {inc} {"Nuovo Cimento"} +MACRO {nc} {"Nuovo Cimento"} +MACRO {pf} {"Phys. Fluids"} +MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."} +MACRO {pfb} {"Phys. Fluids B: Plasma Phys."} +MACRO {pl} {"Phys. Lett."} +MACRO {pla} {"Phys. Lett. A"} +MACRO {plb} {"Phys. Lett. B"} +MACRO {prep} {"Phys. Rep."} +MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"} +MACRO {pp} {"Phys. Plasmas"} +MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"} +MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"} +MACRO {prl} {"Phys. Rev. Lett."} +MACRO {pr} {"Phys. Rev."} +MACRO {physrev} {"Phys. Rev."} +MACRO {pra} {"Phys. Rev. A"} +MACRO {prb} {"Phys. Rev. B"} +MACRO {prc} {"Phys. Rev. C"} +MACRO {prd} {"Phys. Rev. D"} +MACRO {pre} {"Phys. Rev. E"} +MACRO {ps} {"Phys. Scripta"} +MACRO {procrsl} {"Proc. Roy. Soc. London"} +MACRO {rmp} {"Rev. Mod. Phys."} +MACRO {rsi} {"Rev. Sci. Inst."} +MACRO {science} {"Science"} +MACRO {sciam} {"Sci. Am."} +MACRO {sam} {"Stud. Appl. Math."} +MACRO {sjpp} {"Sov. J. Plasma Phys."} +MACRO {spd} {"Sov. Phys.--Doklady"} +MACRO {sptp} {"Sov. Phys.--Tech. Phys."} +MACRO {spu} {"Sov. Phys.--Uspeki"} + % End module: physjour.mbs + %------------------------------------------------------------------- + % Begin module: + % \ProvidesFile{geojour.mbs}[1999/02/24 2.0e (PWD)] +MACRO {aisr} {"Adv. Space Res."} +MACRO {ag} {"Ann. Geophys."} +MACRO {anigeo} {"Ann. Geofis."} +MACRO {angl} {"Ann. Glaciol."} +MACRO {andmet} {"Ann. d. Meteor."} +MACRO {andgeo} {"Ann. d. Geophys."} +MACRO {andphy} {"Ann. d. Phys."} +MACRO {afmgb} {"Arch. Meteor. Geophys. Bioklimatol."} +MACRO {atph} {"Atm\'osphera"} +MACRO {aao} {"Atmos.-Ocean"} +MACRO {ass}{"Astrophys. Space Sci."} +MACRO {atenv} {"Atmos. Environ."} +MACRO {aujag} {"Aust. J. Agric. Res."} +MACRO {aumet} {"Aust. Meteor. Mag."} +MACRO {blmet} {"Bound.-Layer Meteor."} +MACRO {bams} {"Bull. Amer. Meteor. Soc."} +MACRO {cch} {"Clim. Change"} +MACRO {cdyn} {"Climate Dyn."} +MACRO {cbul} {"Climatol. Bull."} +MACRO {cap} {"Contrib. Atmos. Phys."} +MACRO {dsr} {"Deep-Sea Res."} +MACRO {dhz} {"Dtsch. Hydrogr. Z."} +MACRO {dao} {"Dyn. Atmos. Oceans"} +MACRO {eco} {"Ecology"} +MACRO {empl}{"Earth, Moon and Planets"} +MACRO {envres} {"Environ. Res."} +MACRO {envst} {"Environ. Sci. Technol."} +MACRO {ecms} {"Estuarine Coastal Mar. Sci."} +MACRO {expa}{"Exper. Astron."} +MACRO {geoint} {"Geofis. Int."} +MACRO {geopub} {"Geofys. Publ."} +MACRO {geogeo} {"Geol. Geofiz."} +MACRO {gafd} {"Geophys. Astrophys. Fluid Dyn."} +MACRO {gfd} {"Geophys. Fluid Dyn."} +MACRO {geomag} {"Geophys. Mag."} +MACRO {georl} {"Geophys. Res. Lett."} +MACRO {grl} {"Geophys. Res. Lett."} +MACRO {ga} {"Geophysica"} +MACRO {gs} {"Geophysics"} +MACRO {ieeetap} {"IEEE Trans. Antennas Propag."} +MACRO {ijawp} {"Int. J. Air Water Pollut."} +MACRO {ijc} {"Int. J. Climatol."} +MACRO {ijrs} {"Int. J. Remote Sensing"} +MACRO {jam} {"J. Appl. Meteor."} +MACRO {jaot} {"J. Atmos. Ocean. Technol."} +MACRO {jatp} {"J. Atmos. Terr. Phys."} +MACRO {jce} {"J. Climate"} +MACRO {jcam} {"J. Climate Appl. Meteor."} +MACRO {jcm} {"J. Climate Meteor."} +MACRO {jcy} {"J. Climatol."} +MACRO {jgr} {"J. Geophys. Res."} +MACRO {jga} {"J. Glaciol."} +MACRO {jh} {"J. Hydrol."} +MACRO {jmr} {"J. Mar. Res."} +MACRO {jmrj} {"J. Meteor. Res. Japan"} +MACRO {jm} {"J. Meteor."} +MACRO {jpo} {"J. Phys. Oceanogr."} +MACRO {jra} {"J. Rech. Atmos."} +MACRO {jaes} {"J. Aeronaut. Sci."} +MACRO {japca} {"J. Air Pollut. Control Assoc."} +MACRO {jas} {"J. Atmos. Sci."} +MACRO {jmts} {"J. Mar. Technol. Soc."} +MACRO {jmsj} {"J. Meteor. Soc. Japan"} +MACRO {josj} {"J. Oceanogr. Soc. Japan"} +MACRO {jwm} {"J. Wea. Mod."} +MACRO {lao} {"Limnol. Oceanogr."} +MACRO {mwl} {"Mar. Wea. Log"} +MACRO {mau} {"Mausam"} +MACRO {meteor} {"``Meteor'' Forschungsergeb."} +MACRO {map} {"Met. Atmos. Phys."} +MACRO {metmag} {"Meteor. Mag."} +MACRO {metmon} {"Meteor. Monogr."} +MACRO {metrun} {"Meteor. Rundsch."} +MACRO {metzeit} {"Meteor. Z."} +MACRO {metgid} {"Meteor. Gidrol."} +MACRO {mwr} {"Mon. Wea. Rev."} +MACRO {nwd} {"Natl. Wea. Dig."} +MACRO {nzjmfr} {"N. Z. J. Mar. Freshwater Res."} +MACRO {npg} {"Nonlin. Proc. Geophys."} +MACRO {om} {"Oceanogr. Meteor."} +MACRO {ocac} {"Oceanol. Acta"} +MACRO {oceanus} {"Oceanus"} +MACRO {paleoc} {"Paleoceanography"} +MACRO {pce} {"Physics and Chemistry of the Earth"} +MACRO {pmg} {"Pap. Meteor. Geophys."} +MACRO {ppom} {"Pap. Phys. Oceanogr. Meteor."} +MACRO {physzeit} {"Phys. Z."} +MACRO {pps} {"Planet. Space Sci."} +MACRO {pss} {"Planet. Space Sci."} +MACRO {pag} {"Pure Appl. Geophys."} +MACRO {qjrms} {"Quart. J. Roy. Meteor. Soc."} +MACRO {quatres} {"Quat. Res."} +MACRO {rsci} {"Radio Sci."} +MACRO {rse} {"Remote Sens. Environ."} +MACRO {rgeo} {"Rev. Geophys."} +MACRO {rgsp} {"Rev. Geophys. Space Phys."} +MACRO {rdgeo} {"Rev. Geofis."} +MACRO {revmeta} {"Rev. Meteor."} +MACRO {sgp}{"Surveys in Geophys."} +MACRO {sp} {"Solar Phys."} +MACRO {ssr} {"Space Sci. Rev."} +MACRO {tellus} {"Tellus"} +MACRO {tac} {"Theor. Appl. Climatol."} +MACRO {tagu} {"Trans. Am. Geophys. Union (EOS)"} +MACRO {wrr} {"Water Resour. Res."} +MACRO {weather} {"Weather"} +MACRO {wafc} {"Wea. Forecasting"} +MACRO {ww} {"Weatherwise"} +MACRO {wmob} {"WMO Bull."} +MACRO {zeitmet} {"Z. Meteor."} + % End module: geojour.mbs +%% Copyright 1994-1999 Patrick W Daly +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Softw. Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Programming"} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Gr."} + +MACRO {toms} {"ACM Trans. Math. Softw."} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} + +MACRO {tcs} {"Theoretical Comput. Sci."} + + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ } + { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ } + if$ + 't := + nameptr #1 > + { + nameptr #1 + #1 + = + numnames #9 + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ + namesleft #1 > + { ", " * t * } + { + "," * + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.names.ed} +{ 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f.~}{vv~}{ll}{, jj}" + format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + + " " * bbl.etal * + } + { bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + " (" * + editor num.names$ #1 > + 'bbl.editors + 'bbl.editor + if$ + capitalize + * ")" * + } + if$ +} + +FUNCTION {format.in.editors} +{ editor empty$ + { "" } + { editor format.names.ed + } + if$ +} + +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ + } + if$ +} + +FUNCTION {format.full.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ + 't := + nameptr #1 > + { + nameptr #1 + #1 + = + numnames #9 + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + cite.name.font + } + { + numnames #2 > + { "," * } + 'skip$ + if$ + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + t "others" = + 'skip$ + { cite.name.font } + if$ +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[{" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "}]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {if.digit} +{ duplicate$ "0" = + swap$ duplicate$ "1" = + swap$ duplicate$ "2" = + swap$ duplicate$ "3" = + swap$ duplicate$ "4" = + swap$ duplicate$ "5" = + swap$ duplicate$ "6" = + swap$ duplicate$ "7" = + swap$ duplicate$ "8" = + swap$ "9" = or or or or or or or or or +} +FUNCTION {n.separate} +{ 't := + "" + #0 'numnames := + { t empty$ not } + { t #-1 #1 substring$ if.digit + { numnames #1 + 'numnames := } + { #0 'numnames := } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames #5 = + { duplicate$ #1 #2 substring$ swap$ + #3 global.max$ substring$ + "," swap$ * * + } + 'skip$ + if$ + } + while$ +} +FUNCTION {n.dashify} +{ + n.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in + " " * } + +FUNCTION {format.date} +{ year duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ + extra.label * +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.connect + series empty$ + 'skip$ + { bbl.of space.word * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { number } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.connect + bbl.in space.word * series * + } + if$ + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " " * bbl.edition * } + { edition "t" change.case$ " " * bbl.edition * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { bbl.pages pages n.dashify tie.or.space.connect } + { bbl.page pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { + ", " * + pages n.dashify * + } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + emphasize + format.journal.pages +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { bbl.chapter } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { word.in booktitle emphasize * } + { word.in booktitle emphasize * + ", " * + bbl.edby + * " " * + format.in.editors * + } + if$ + } + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bbl.techrep } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + word.in + } + { bbl.volume volume tie.or.space.connect + bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} + +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address empty$ + 'skip$ + { address * } + if$ + } + { t * + address empty$ + 'skip$ + { ", " * address * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.publisher.address} +{ publisher empty$ + { "empty publisher in " cite$ * warning$ + "" + } + { publisher } + if$ + format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization empty$ + { "" } + { organization } + if$ + format.org.or.pub +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + crossref missing$ + { journal + emphasize + "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.number.series output + format.edition output + format.publisher.address output + } + { + format.book.crossref output.nonnull + } + if$ + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output + format.title "title" output.check + howpublished output + address output + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.chapter.pages "chapter and pages" output.check + format.number.series output + format.edition output + format.publisher.address output + } + { + format.chapter.pages "chapter and pages" output.check + format.book.crossref output.nonnull + } + if$ + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.edition output + format.chapter.pages output + format.publisher.address output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + publisher empty$ + { format.organization.address output } + { organization output + format.publisher.address output + } + if$ + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + format.note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output + format.btitle "title" output.check + organization output + address output + format.edition output + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + bbl.mthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output + format.title output + howpublished output + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + bbl.phdthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output + format.btitle "title" output.check + format.bvolume output + format.number.series output + publisher empty$ + { format.organization.address output } + { organization output + format.publisher.address output + } + if$ + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + format.tr.number emphasize output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + format.date "year" output.check + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.names} +{ 's := + "" 't := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal * + cite.name.font + "others" 't := + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal * + cite.name.font + "others" 't := + } + { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ + t "others" = + 'skip$ + { cite.name.font } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + nameptr #1 + #1 + = + numnames #9 + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { numnames #2 > nameptr #2 = and + { "zz" * year field.or.null * " " * } + 'skip$ + if$ + t sortify * + } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label + * + " " + * + cite$ + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { last.label next.extra } + +INTEGERS { last.extra.num number.label } + +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +EXECUTE {initialize.extra.label.stuff} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + cite$ + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" + write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `agu.bst'. diff --git a/reports/final/styles/amsalpha.bst b/reports/final/styles/amsalpha.bst new file mode 100644 index 0000000..8448e21 --- /dev/null +++ b/reports/final/styles/amsalpha.bst @@ -0,0 +1,1382 @@ +%%% ==================================================================== +%%% @BibTeX-style-file{ +%%% author = "American Mathematical Society", +%%% version = "1.2beta", +%%% date = "13-Oct-1994", +%%% time = "15:31:22 EDT", +%%% filename = "amsalpha.bst", +%%% copyright = "Copyright (C) 1994 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "16562 1382 4093 29485", +%%% email = "tech-support@math.ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "bibtex, bibliography, amslatex, ams-latex", +%%% supported = "yes", +%%% abstract = "BibTeX bibliography style amsalpha for BibTeX +%%% versions 0.99a or later and LaTeX version 2e. +%%% Produces alphabetic-label bibliography items in +%%% a form typical for American Mathematical Society +%%% publications.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== + +% See the file btxbst.doc for extra documentation other than +% what is included here. And see btxhak.tex for a description +% of the BibTeX language and how to use it. + +% This defines the types of fields that can occur in a database entry +% for this particular bibliography style. Except for `language', +% this is the standard list from alpha.bst. + +%% Types of entries currently allowed in a BibTeX file: +%% +%% ARTICLE -- An article from a journal or magazine. +%% +%% BOOK -- A book with an explicit publisher. +%% +%% BOOKLET -- A work that is printed and bound, +%% but without a named publisher or sponsoring institution. +%% +%% CONFERENCE -- The same as INPROCEEDINGS, +%% included for Scribe compatibility. +%% +%% INBOOK -- A part of a book, +%% which may be a chapter (or section or whatever) and/or a range of pages. +%% +%% INCOLLECTION -- A part of a book having its own title. +%% +%% INPROCEEDINGS -- An article in a conference proceedings. +%% +%% MANUAL -- Technical documentation. +%% +%% MASTERSTHESIS -- A Master's thesis. +%% +%% MISC -- Use this type when nothing else fits. +%% +%% PHDTHESIS -- A PhD thesis. +%% +%% PROCEEDINGS -- The proceedings of a conference. +%% +%% TECHREPORT -- A report published by a school or other institution, +%% usually numbered within a series. +%% +%% UNPUBLISHED -- A document having an author and title, but not formally +%% published. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label extra.label sort.label } + +% Removed after.sentence, after.block---not needed. + +INTEGERS { output.state before.all mid.sentence } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := +} + +% Scratch variables: + +STRINGS { s t } + +% Utility functions + +FUNCTION {shows} +{ duplicate$ ":::: `" swap$ * "'" * top$ +} + +FUNCTION {showstack} +{"STACK=====================================================================" +top$ +stack$ +"ENDSTACK==================================================================" +top$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +% n.dashify is used to make sure page ranges get the TeX code +% (two hyphens) for en-dashes. + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +% tie.or.space.connect connects two items with a ~ if the +% second item is less than 3 letters long, otherwise it just puts an +% ordinary space. + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {add.space.if.necessary} +{ duplicate$ "" = + 'skip$ + { " " * } + if$ +} + +% either.or.check gives a warning if two mutually exclusive fields +% were used in the database. + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +% output.nonnull is called by output. + +FUNCTION {output.nonnull} +% remove the top item from the stack because it's in the way. +{ 's := + output.state mid.sentence = +% If we're in mid-sentence, add a comma to the new top item and write it + { ", " * write$ } +% Otherwise, if we're at the beginning of a bibitem, + { output.state before.all = +% just write out the top item from the stack; + 'write$ +% and the last alternative is that we're at the end of the current +% bibitem, so we add a period to the top stack item and write it out. + { add.period$ " " * write$ } + if$ + mid.sentence 'output.state := + } + if$ +% Put the top item back on the stack that we removed earlier. + s +} + +% Output checks to see if the stack top is empty; if not, it +% calls output.nonnull to write it out. + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +% Standard warning message for a missing or empty field. For the user +% we call any such field `missing' without respect to the distinction +% made by BibTeX between missing and empty. + +FUNCTION {missing.warning} +{ "missing " swap$ * " in " * cite$ * warning$ } + +% Output.check is like output except that it gives a warning on-screen +% if the given field in the database entry is empty. t is the field +% name. + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ t missing.warning } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label write$ + "]{" write$ + cite$ write$ + "}" write$ + newline$ +% This empty string is the first thing that will be written +% the next time write$ is called. Done this way because each +% item is saved on the stack until we find out what punctuation +% should be added after it. Therefore we need an empty first item. + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +% Removed new.block, new.block.checka, new.block.checkb, new.sentence, +% new.sentence.checka, and new.sentence.checkb functions here, since they +% don't seem to be needed in the AMS style. Also moved some real +% basic functions like `and' and 'or' earlier in the file. + +INTEGERS { nameptr namesleft numnames } + +% The extra section to write out a language field was added +% for AMSPLAIN.BST. Not present in plain.bst. + +FUNCTION {format.language} +{ language empty$ + { "" } + { " (" language * ")" * } + if$ +} + +% This version of format.names puts names in the format +% +% First von Last, Jr. +% +% (i.e., first name first, no abbreviating to initials). + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { extra.label "\bysame" = + {"\bysame"} + { author format.names } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { " (eds.)" * } + { " (ed.)" * } + if$ + } + if$ +} + +FUNCTION {format.nonauthor.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", eds." * } + { ", ed." * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ emphasize } + if$ +} + +FUNCTION {format.journal.vol.year} +{ journal empty$ + { "" "journal name" missing.warning } + { journal + volume empty$ + 'skip$ + { " \textbf{" * volume * "}" * } + if$ + year empty$ + { "year" missing.warning } + { " (" * year * ")" * } + if$ + } + if$ +} + +% For formatting the issue number for a journal article. + +FUNCTION {format.number} +{ number empty$ + { "" } + { "no.~" number * } + if$ +} + +% For formatting miscellaneous dates + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +%% The volume, series and number information is sort of tricky. +%% This code handles it as follows: +%% If the series is present, and the volume, but not the number, +%% then we do "\emph{Book title}, Series Name, vol. 000" +%% If the series is present, and the number, but not the volume, +%% then we do "\emph{Book title}, Series Name, no. 000" +%% If the series is present, and both number and volume, +%% then we do "\emph{Book title}, vol. XX, Series Name, no. 000" +%% Finally, if the series is absent, +%% then we do "\emph{Book title}, vol. XX" +%% or "\emph{Book title}, no. 000" +%% and if both volume and number are present, give a warning message. + +FUNCTION {format.bookvolume.series.number} +{ volume empty$ + { "" % Push the empty string as a placeholder in case everything else + % is empty too. + series empty$ + 'skip$ + { pop$ series } % if series is not empty put in stack + if$ + number empty$ + 'skip$ + { duplicate$ empty$ % if no preceding material, + 'skip$ % do nothing, otherwise + { ", " * } % add a comma and space to separate. + if$ + "no." number tie.or.space.connect * % add the number information + } + if$ + } +%% If the volume is NOT EMPTY: + { "vol." volume tie.or.space.connect % vol. XX + number empty$ + { series empty$ + 'skip$ + { series ", " * swap$ *} % Series Name, vol. XX + if$ + } + { series empty$ + { "can't use both volume and number if series info is missing" + warning$ + "in BibTeX entry type `" type$ * "'" * top$ + } + { ", " * series * ", no." * number tie.or.space.connect } + if$ + } + if$ + } + if$ + +} % end of format.bookvolume.series.number + +%% format.inproc.title.where.editors is used by inproceedings entry types + +FUNCTION {format.inproc.title.address.editors} +{ booktitle empty$ + { "" } +%% No case changing or emphasizing for the title. We want initial +%% caps, roman. + { booktitle } + if$ +%% We add parentheses around the address (place where conference +%% was held). + address empty$ + 'skip$ + { add.space.if.necessary "(" * address * ")" * } + if$ +%% Likewise we add parentheses around the editors' names. + editor empty$ + 'skip$ + { add.space.if.necessary "(" * format.nonauthor.editors * ")" * } + if$ +} + +%% format.incoll.title.editors is similar to format.inproc... but +%% omits the address. For collections that are not proceedings volumes. + +FUNCTION {format.incoll.title.editors} +{ booktitle empty$ + { "" } +%% No case changing or emphasizing for the title. We want initial +%% caps, roman. + { booktitle } + if$ +%% We add parentheses around the editors' names. + editor empty$ + 'skip$ + { add.space.if.necessary "(" * format.nonauthor.editors * ")" * } + if$ +} + +% Desired output for format.number.series: +% +% Lecture Notes in Math., no.~1224 + +FUNCTION {format.number.series} +{ series empty$ + { number empty$ + { "" } + { "there's a number but no series in " cite$ * warning$ } + if$ + } + { series + number empty$ + 'skip$ + { ", no.~" * number * } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " ed." * } + { edition "t" change.case$ " ed." * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages n.dashify } + if$ +} + +FUNCTION {format.book.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pp.~" pages n.dashify * } + { "p.~" pages * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "ch.~" } + { type "l" change.case$ " " * } + if$ + chapter * + pages empty$ + 'skip$ + { ", " * format.book.pages * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Tech. Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +% The format.crossref functions haven't been paid much attention +% at the present time (June 1990) and could probably use some +% work. MJD + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In " journal * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Vol." volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In \emph{" booktitle * "}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The main functions for each entry type. + +% journal, vol and year are formatted together because they are +% not separated by commas. + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.journal.vol.year "journal, volume, and year" output.check + format.number output + format.pages "pages" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.language * + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.title "title" output.check + format.edition output + crossref missing$ + { format.bookvolume.series.number output + publisher "publisher" output.check + address output + } + { format.book.crossref output.nonnull + } + if$ + format.date "year" output.check + format.language * + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + format.title "title" output.check + howpublished output + address output + format.date output + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + title "title" output.check + crossref missing$ + { format.bookvolume.series.number output + format.chapter.pages "chapter and pages" output.check + format.number.series output + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + format.book.pages output + format.language * + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.inproc.title.address.editors "booktitle" output.check + format.bookvolume.series.number output + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + note output + format.book.pages output + format.language * + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.inproc.title.address.editors "booktitle" output.check + format.bookvolume.series.number output + organization output + publisher output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + note output + format.book.pages output + format.language * + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + format.title "title" output.check + author empty$ + { organization empty$ + { address output } + 'skip$ + if$ + } + { organization output + address output + } + if$ + format.edition output + format.date output + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + format.title output + howpublished output + format.date output + note output + format.book.pages output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + "Ph.D. thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + note output + format.book.pages output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + format.title "title" output.check + format.bookvolume.series.number output + address empty$ + { editor empty$ + 'skip$ + { organization output } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + format.date "year" output.check + } + if$ + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +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"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +INTEGERS { et.al.char.used } + +FUNCTION {initialize.et.al.char.used} +{ #0 'et.al.char.used := +} + +EXECUTE {initialize.et.al.char.used} + +FUNCTION {format.lab.names} +{ 's := + s num.names$ 'numnames := + numnames #1 > + { numnames #4 > + { #3 'namesleft := } + { numnames 'namesleft := } + if$ + #1 'nameptr := + "" + { namesleft #0 > } + { nameptr numnames = + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } + { s nameptr "{v{}}{l{}}" format.name$ * } + if$ + } + { s nameptr "{v{}}{l{}}" format.name$ * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #4 > + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } + 'skip$ + if$ + } + { s #1 "{v{}}{l{}}" format.name$ + duplicate$ text.length$ #2 < + { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } + 'skip$ + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.organization.label + { type$ "manual" = + 'author.key.organization.label + 'author.key.label + if$ + } + if$ + } + if$ + duplicate$ + year field.or.null purify$ #-1 #2 substring$ + * + 'label := + year field.or.null purify$ #-1 #4 substring$ + * + sortify 'sort.label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ calc.label + sort.label + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + * + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label last.sort.label next.extra } + +INTEGERS { longest.label.width last.extra.num } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.sort.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := +} + +FUNCTION {forward.pass} +{ last.sort.label sort.label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + sort.label 'last.sort.label := + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + label extra.label * 'label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ + extra.label 'next.extra := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {begin.bib} +{ et.al.char.used + { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } + 'skip$ + if$ + preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\providecommand{\bysame}{\leavevmode\hbox to3em{\hrulefill}\thinspace}" + write$ newline$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} diff --git a/reports/final/styles/amsplain.bst b/reports/final/styles/amsplain.bst new file mode 100644 index 0000000..f49b3d4 --- /dev/null +++ b/reports/final/styles/amsplain.bst @@ -0,0 +1,1242 @@ +%%% ==================================================================== +%%% @BibTeX-style-file{ +%%% author = "American Mathematical Society", +%%% version = "1.2beta", +%%% date = "13-Oct-1994", +%%% time = "15:30:52 EDT", +%%% filename = "amsplain.bst", +%%% copyright = "Copyright (C) 1994 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "24224 1242 3737 26872", +%%% email = "tech-support@math.ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "bibtex, bibliography, amslatex, ams-latex", +%%% supported = "yes", +%%% abstract = "BibTeX bibliography style `amsplain' for BibTeX +%%% versions 0.99a or later and LaTeX version 2e. +%%% Produces alphabetic-label bibliography items in +%%% a form typical for American Mathematical Society +%%% publications.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== + +% See the file btxbst.doc for extra documentation other than +% what is included here. And see btxhak.tex for a description +% of the BibTeX language and how to use it. + +% This defines the types of fields that can occur in a database entry +% for this particular bibliography style. Except for `language', +% this is the standard list from plain.bst. + +%% Types of entries currently allowed in a BibTeX file: +%% +%% ARTICLE -- An article from a journal or magazine. +%% +%% BOOK -- A book with an explicit publisher. +%% +%% BOOKLET -- A work that is printed and bound, +%% but without a named publisher or sponsoring institution. +%% +%% CONFERENCE -- The same as INPROCEEDINGS, +%% included for Scribe compatibility. +%% +%% INBOOK -- A part of a book, +%% which may be a chapter (or section or whatever) and/or a range of pages. +%% +%% INCOLLECTION -- A part of a book having its own title. +%% +%% INPROCEEDINGS -- An article in a conference proceedings. +%% +%% MANUAL -- Technical documentation. +%% +%% MASTERSTHESIS -- A Master's thesis. +%% +%% MISC -- Use this type when nothing else fits. +%% +%% PHDTHESIS -- A PhD thesis. +%% +%% PROCEEDINGS -- The proceedings of a conference. +%% +%% TECHREPORT -- A report published by a school or other institution, +%% usually numbered within a series. +%% +%% UNPUBLISHED -- A document having an author and title, but not formally +%% published. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label extra.label } + +% Removed after.sentence, after.block---not needed. + +INTEGERS { output.state before.all mid.sentence } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := +} + +% Scratch variables: + +STRINGS { s t } + +% Utility functions + +FUNCTION {shows} +{ duplicate$ ":::: `" swap$ * "'" * top$ +} + +FUNCTION {showstack} +{"STACK=====================================================================" +top$ +stack$ +"ENDSTACK==================================================================" +top$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +% n.dashify is used to make sure page ranges get the TeX code +% (two hyphens) for en-dashes. + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +% tie.or.space.connect connects two items with a ~ if the +% second item is less than 3 letters long, otherwise it just puts an +% ordinary space. + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {add.space.if.necessary} +{ duplicate$ "" = + 'skip$ + { " " * } + if$ +} + +% either.or.check gives a warning if two mutually exclusive fields +% were used in the database. + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +% output.nonnull is called by output. + +FUNCTION {output.nonnull} +% remove the top item from the stack because it's in the way. +{ 's := + output.state mid.sentence = +% If we're in mid-sentence, add a comma to the new top item and write it + { ", " * write$ } +% Otherwise, if we're at the beginning of a bibitem, + { output.state before.all = +% just write out the top item from the stack; + 'write$ +% and the last alternative is that we're at the end of the current +% bibitem, so we add a period to the top stack item and write it out. + { add.period$ " " * write$ } + if$ + mid.sentence 'output.state := + } + if$ +% Put the top item back on the stack that we removed earlier. + s +} + +% Output checks to see if the stack top is empty; if not, it +% calls output.nonnull to write it out. + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +% Standard warning message for a missing or empty field. For the user +% we call any such field `missing' without respect to the distinction +% made by BibTeX between missing and empty. + +FUNCTION {missing.warning} +{ "missing " swap$ * " in " * cite$ * warning$ } + +% Output.check is like output except that it gives a warning on-screen +% if the given field in the database entry is empty. t is the field +% name. + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ t missing.warning } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ +% This empty string is the first thing that will be written +% the next time write$ is called. Done this way because each +% item is saved on the stack until we find out what punctuation +% should be added after it. Therefore we need an empty first item. + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +% Removed new.block, new.block.checka, new.block.checkb, new.sentence, +% new.sentence.checka, and new.sentence.checkb functions here, since they +% don't seem to be needed in the AMS style. Also moved some real +% basic functions like `and' and 'or' earlier in the file. + +INTEGERS { nameptr namesleft numnames } + +% The extra section to write out a language field was added +% for AMSPLAIN.BST. Not present in plain.bst. + +FUNCTION {format.language} +{ language empty$ + { "" } + { " (" language * ")" * } + if$ +} + +% This version of format.names puts names in the format +% +% First von Last, Jr. +% +% (i.e., first name first, no abbreviating to initials). + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { extra.label "\bysame" = + {"\bysame"} + { author format.names } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { " (eds.)" * } + { " (ed.)" * } + if$ + } + if$ +} + +FUNCTION {format.nonauthor.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", eds." * } + { ", ed." * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ emphasize } + if$ +} + +FUNCTION {format.journal.vol.year} +{ journal empty$ + { "journal name" missing.warning ""} + { journal } + if$ + volume empty$ + 'skip$ + { " \textbf{" * volume * "}" * } + if$ + year empty$ + { "year" missing.warning } + { " (" * year * ")" * } + if$ +} + +% For formatting the issue number for a journal article. + +FUNCTION {format.number} +{ number empty$ + { "" } + { "no.~" number * } + if$ +} + +% For formatting miscellaneous dates + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +%% The volume, series and number information is sort of tricky. +%% This code handles it as follows: +%% If the series is present, and the volume, but not the number, +%% then we do "\emph{Book title}, Series Name, vol. 000" +%% If the series is present, and the number, but not the volume, +%% then we do "\emph{Book title}, Series Name, no. 000" +%% If the series is present, and both number and volume, +%% then we do "\emph{Book title}, vol. XX, Series Name, no. 000" +%% Finally, if the series is absent, +%% then we do "\emph{Book title}, vol. XX" +%% or "\emph{Book title}, no. 000" +%% and if both volume and number are present, give a warning message. + +FUNCTION {format.bookvolume.series.number} +{ volume empty$ + { "" % Push the empty string as a placeholder in case everything else + % is empty too. + series empty$ + 'skip$ + { pop$ series } % if series is not empty put in stack + if$ + number empty$ + 'skip$ + { duplicate$ empty$ % if no preceding material, + 'skip$ % do nothing, otherwise + { ", " * } % add a comma and space to separate. + if$ + "no." number tie.or.space.connect * % add the number information + } + if$ + } +%% If the volume is NOT EMPTY: + { "vol." volume tie.or.space.connect % vol. XX + number empty$ + { series empty$ + 'skip$ + { series ", " * swap$ *} % Series Name, vol. XX + if$ + } + { series empty$ + { "can't use both volume and number if series info is missing" + warning$ + "in BibTeX entry type `" type$ * "'" * top$ + } + { ", " * series * ", no." * number tie.or.space.connect } + if$ + } + if$ + } + if$ + +} % end of format.bookvolume.series.number + +%% format.inproc.title.where.editors is used by inproceedings entry types + +FUNCTION {format.inproc.title.address.editors} +{ booktitle empty$ + { "" } +%% No case changing or emphasizing for the title. We want initial +%% caps, roman. + { booktitle } + if$ +%% We add parentheses around the address (place where conference +%% was held). + address empty$ + 'skip$ + { add.space.if.necessary "(" * address * ")" * } + if$ +%% Likewise we add parentheses around the editors' names. + editor empty$ + 'skip$ + { add.space.if.necessary "(" * format.nonauthor.editors * ")" * } + if$ +} + +%% format.incoll.title.editors is similar to format.inproc... but +%% omits the address. For collections that are not proceedings volumes. + +FUNCTION {format.incoll.title.editors} +{ booktitle empty$ + { "" } +%% No case changing or emphasizing for the title. We want initial +%% caps, roman. + { booktitle } + if$ +%% We add parentheses around the editors' names. + editor empty$ + 'skip$ + { add.space.if.necessary "(" * format.nonauthor.editors * ")" * } + if$ +} + +% Desired output for format.number.series: +% +% Lecture Notes in Math., no.~1224 + +FUNCTION {format.number.series} +{ series empty$ + { number empty$ + { "" } + { "there's a number but no series in " cite$ * warning$ } + if$ + } + { series + number empty$ + 'skip$ + { ", no.~" * number * } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " ed." * } + { edition "t" change.case$ " ed." * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages n.dashify } + if$ +} + +FUNCTION {format.book.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pp.~" pages n.dashify * } + { "p.~" pages * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "ch.~" } + { type "l" change.case$ " " * } + if$ + chapter * + pages empty$ + 'skip$ + { ", " * format.book.pages * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Tech. Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +% The format.crossref functions haven't been paid much attention +% at the present time (June 1990) and could probably use some +% work. MJD + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In " journal * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Vol." volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In \emph{" booktitle * "}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The main functions for each entry type. + +% journal, vol and year are formatted together because they are +% not separated by commas. + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.journal.vol.year output + format.number output + format.pages "pages" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.language * + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.title "title" output.check + format.edition output + crossref missing$ + { format.bookvolume.series.number output + publisher "publisher" output.check + address output + } + { format.book.crossref output.nonnull + } + if$ + format.date "year" output.check + format.language * + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + format.title "title" output.check + howpublished output + address output + format.date output + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + title "title" output.check + crossref missing$ + { format.bookvolume.series.number output + format.chapter.pages "chapter and pages" output.check + format.number.series output + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + format.book.pages output + format.language * + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.incoll.title.editors "booktitle" output.check + format.bookvolume.series.number output + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + note output + format.book.pages output + format.language * + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.inproc.title.address.editors "booktitle" output.check + format.bookvolume.series.number output + organization output + publisher output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + note output + format.book.pages output + format.language * + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + format.title "title" output.check + author empty$ + { organization empty$ + { address output } + 'skip$ + if$ + } + { organization output + address output + } + if$ + format.edition output + format.date output + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + format.title output + howpublished output + format.date output + note output + format.book.pages output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + "Ph.D. thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + note output + format.book.pages output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + format.title "title" output.check + format.bookvolume.series.number output + address empty$ + { editor empty$ + 'skip$ + { organization output } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + format.date "year" output.check + } + if$ + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +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"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label prev.author this.author } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := + "abcxyz" 'prev.author := + "" 'this.author := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ + author empty$ + { editor empty$ + { "" } + 'editor + if$ + } + 'author + if$ + 'this.author := + this.author prev.author = + { "\bysame" 'extra.label := } + { "" 'extra.label := + this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\providecommand{\bysame}{\leavevmode\hbox to3em{\hrulefill}\thinspace}" + write$ newline$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} diff --git a/reports/final/styles/bibtex-c.html b/reports/final/styles/bibtex-c.html new file mode 100644 index 0000000..dd3306b --- /dev/null +++ b/reports/final/styles/bibtex-c.html @@ -0,0 +1,144 @@ + + .bst files + +Bibliography style files define the style of a bibliography source list. + +One specifies a /bibliography style/ in one's /LaTeX/ document with a line + + \bibliographystyle{/style/} + +where /style/ is the name of a .bst file (like one of those listed in +the tables below) ... /but *without* the/ .bst /extension,/ e.g. the way +to specify the author's favourite bibliography style is by + + \bibliographystyle{uwa} + +The standard bibliography styles are plain, unsrt, abbrv and alpha. +A locally produced bibliography style is: uwa. It is most like abbrv. + + + .bst files on our system + +The most important .bst files on our system are tabulated below + +.bst file Style description +abbrv.bst <../bibtex/bst/base/abbrv.bst> Like plain.bst, except that +entries are more compact because first names, month names and journal +names are abbreviated +alpha.bst <../bibtex/bst/base/alpha.bst> Like plain.bst, except that +entry labels like `Knu66', formed from the author's name and the year of +publication, are used. +plain.bst <../bibtex/bst/base/plain.bst> This style is formatted more +or less as suggested by Mary-Claire van Leunen in /A Handbook for +Scholars / (Alfred A. Knopf, New York, 1979). Entries are sorted +alphabetically and are labelled with numbers. +unsrt.bst <../bibtex/bst/base/unsrt.bst> Like plain.bst, except that +entries appear in the order of their first citation. +uwa.bst <../bibtexuwa/bst/uwa.bst> Like abbrv.bst, but sets off +adjacent fields more, by using different fonts or punctuation. +editiontype field added. Also uses \bysame (a horizontal line) in place +of the author when subsequent references are by the same author(s). Now +also has a url field. See the header of uwa.bst +<../bibtexuwa/bst/uwa.bst> for a fuller description. +uwab.bst <../bibtexuwa/bst/uwab.bst> Same as uwa.bst, but does not use +\bysame. + + + Other .bst files on our system + +.bst file Style description +abbrvnat.bst <../bibtex/bst/natbib/abbrvnat.bst> Like plainnat.bst, +except that entries are more compact because first names, month names +and journal names are abbreviated. Used with the *natbib* /LaTeX/ package. +abstract.bst <../bibtex/bst/misc/abstract.bst> Like alpha.bst, except +with abstract field. +acm.bst <../bibtex/bst/base/acm.bst> Like abbrv.bst, except names come +out /Last, initials/, and in small caps. Some dates are parenthesised. +For Assoc. for Computing Machinery. +agsm.bst <../bibtex/bst/misc/agsm.bst> Like alpha.bst. Used with the +*harvard* package. For Australian Government publications. +apalike.bst <../bibtex/bst/base/apalike.bst> Like alpha.bst. Used with +the *apalike* package. Variant of apa (American Psychology Assoc.) style. +amsalpha.bst <../bibtex/bst/ams/amsalpha.bst> Like alpha.bst, except +more an /AmS-TeX/ style. +authordate1.bst <../bibtex/bst/authordate/authordate1.bst> Citations +are of form: (Author, Year). In bibliography there is neither a number +label (as for the plain style) nor an alpha label (as for the alpha +style). Author's names are typeset in roman. Uppercase letters in +article, journal and book titles are left as given in the .bib file. +Used in conjunction with the *authordate1-4* /LaTeX/ package. +authordate2.bst <../bibtex/bst/authordate/authordate2.bst> Like +authordate1.bst, but with /downstyle/ titles, i.e. titles are lowercase +except for the first letter, any letter following a colon, and letters +protected by { and }. Used in conjunction with the *authordate1-4* +/LaTeX/ package. +authordate3.bst <../bibtex/bst/authordate/authordate3.bst> Like +authordate1.bst, but with author's names in small capitals. Used in +conjunction with the *authordate1-4* /LaTeX/ package. +authordate4.bst <../bibtex/bst/authordate/authordate4.bst> Like +authordate3.bst, but with /downstyle/ titles, i.e. titles are lowercase +except for the first letter, any letter following a colon, and letters +protected by { and }. Used in conjunction with the *authordate1-4* +/LaTeX/ package. +amsplain.bst <../bibtex/bst/ams/amsplain.bst> Like plain.bst, except +more an /AmS-TeX/ style. +chicago.bst <../bibtex/bst/chicago/chicago.bst> Like alpha.bst. Used +with the *chicago* package. Variant of newapa (American Psychology +Assoc.) style. +chicagoa.bst <../bibtex/bst/chicago/chicagoa.bst> Like alpha.bst. Used +with the *chicago* package. Variant of newapa (American Psychology +Assoc.) style, that has annotation field. +dcu.bst <../bibtex/bst/misc/dcu.bst> Like alpha.bst. Used with the +*harvard* package. By Design Computing Unit (Sydney University). +ieeetr.bst <../bibtex/bst/base/ieeetr.bst> Like plain.bst, with IEEE +abbreviations. Article titles are in quotes, commas separate all fields +except after booktitles and before notes. +gerabbrv.bst <../bibtex/bst/germbib/gerabbrv.bst> Like gerplain.bst, +except that entries are more compact because first names, month names +and journal names are abbreviated. Used with the *bibgerm* package. +geralpha.bst <../bibtex/bst/germbib/geralpha.bst> Like gerplain.bst, +except that entry labels like `Knu66', formed from the author's name and +the year of publication, are used. Used with the *bibgerm* package. +gerapali.bst <../bibtex/bst/germbib/gerapali.bst> Like geralpha.bst. +Variant of apa (American Psychology Assoc.) style. Used with the +*bibgerm* package. +gerplain.bst <../bibtex/bst/germbib/gerplain.bst> A German version of +plain.bst. Used with the *bibgerm* package. +gerunsrt.bst <../bibtex/bst/germbib/gerunsrt.bst> Like gerplain.bst, +except that entries appear in the order of their first citation. Used +with the *bibgerm* package. +is-abbrv.bst <../bibtex/bst/is-base/is-abbrv.bst> Like abbrv.bst, +except ISSN and ISBN fields added. +is-alpha.bst <../bibtex/bst/is-base/is-alpha.bst> Like alpha.bst, +except ISSN and ISBN fields added. +is-plain.bst <../bibtex/bst/is-base/is-plain.bst> Like plain.bst, +except ISSN and ISBN fields added. +is-unsrt.bst <../bibtex/bst/is-base/is-unsrt.bst> Like unsrt.bst, +except ISSN and ISBN fields added. +jaumsb.bst <../bibtex/bst/aums/jaumsb.bst> A style most like abbrev.bst +used for typesetting bibliographies for the *jaumsb* class (Journal of +the Australian Mathematics Society - Series B). +kluwer.bst <../bibtex/bst/misc/kluwer.bst> Like alpha.bst. Used with +the *harvard* package. Kluwer Academic Publishers style. +line.bst <../bibtex/bst/aums/line.bst> A style most like abbrev.bst +used for typesetting bibliographies for the *jaumsa* class (Journal of +the Australian Mathematics Society - Series A). +ltugbib.bst <../bibtex/bst/misc/ltugbib.bst> Unkeyed and with initials +following author names, but otherwise like abbrev.bst. Used with the +*ltugboat* class. +named.bst <../bibtex/bst/misc/named.bst> Similar to alpha.bst, except +labels are of form [Author, Year]. Author's names are typeset in roman. +Uppercase letters in article, journal and book titles are left as given +in the .bib file. Used in conjunction with the *named* /LaTeX/ package. +plainnat.bst <../bibtex/bst/natbib/plainnat.bst> Like plain.bst, except +that citations appear in [Author, Year] form. Used with the *natbib* +/LaTeX/ package. +siam.bst <../bibtex/bst/misc/siam.bst> Like abbrv.bst, except names are +in small caps, titles are in italics and commas separate all fields +except notes. Style of Society of Industrial and Applied Maths. +unsrtnat.bst <../bibtex/bst/natbib/unsrtnat.bst> Like plainnat.bst, +except that entries appear in the order of their first citation. Used +with the *natbib* /LaTeX/ package. + +HTML 3.2 Checked! + diff --git a/reports/final/styles/h-physrev.bst b/reports/final/styles/h-physrev.bst new file mode 100644 index 0000000..0d200a0 --- /dev/null +++ b/reports/final/styles/h-physrev.bst @@ -0,0 +1,949 @@ +ENTRY +{ address +eprint +author +booktitle +chapter +collaboration +edition +editor +howpublished +institution +journal +key +month +note +number +organization +pages +publisher +school +series +title +type +volume +year +} +{} +{ label } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := +#1 'mid.sentence := +#2 'after.sentence := +#3 'after.block := +} +STRINGS { s t } +FUNCTION {output.nonnull} +{ 's := +output.state mid.sentence = +{ ", " * write$ } +{ output.state after.block = +{ "," * write$ +newline$ +"\newblock " write$ +} +{ output.state before.all = +'write$ +{ add.period$ " " * write$ } +if$ +} +if$ +mid.sentence 'output.state := +} +if$ +s +} +FUNCTION {output} +{ duplicate$ empty$ +'pop$ +'output.nonnull +if$ +} +FUNCTION {output.check} +{ 't := +duplicate$ empty$ +{ pop$ "empty " t * " in " * cite$ * warning$ } +'output.nonnull +if$ +} +FUNCTION {output.bibitem} +{ newline$ +"\bibitem{" write$ +cite$ write$ +"}" write$ +newline$ +"" +before.all 'output.state := +} +FUNCTION {fin.entry} +{ add.period$ +write$ +newline$ +} +FUNCTION {new.block} +{ output.state before.all = +'skip$ +{ after.block 'output.state := } +if$ +} +FUNCTION {new.sentence} +{ skip$ +} +FUNCTION {not} +{ { #0 } +{ #1 } +if$ +} +FUNCTION {and} +{ 'skip$ +{ pop$ #0 } +if$ +} +FUNCTION {or} +{ { pop$ #1 } +'skip$ +if$ +} +FUNCTION {new.block.checka} +{ empty$ +'skip$ +'new.block +if$ +} +FUNCTION {new.block.checkb} +{ empty$ +swap$ empty$ +and +'skip$ +'new.block +if$ +} +FUNCTION {new.sentence.checka} +{ empty$ +'skip$ +'new.sentence +if$ +} +FUNCTION {new.sentence.checkb} +{ empty$ +swap$ empty$ +and +'skip$ +'new.sentence +if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ +{ pop$ "" } +'skip$ +if$ +} +FUNCTION {emphasize} +{ duplicate$ empty$ +{ pop$ "" } +{ "{\em " swap$ * "}" * } +if$ +} +FUNCTION {embolden} +{ duplicate$ empty$ +{ pop$ "" } +{ "{\bf " swap$ * "}" * } +if$ +} +FUNCTION {paren} +{ duplicate$ empty$ +{ pop$ "" } +{ "(" swap$ * ")" * } +if$ +} +INTEGERS { nameptr namesleft numnames } +INTEGERS { etal } +FUNCTION {format.names} +{ 's := +#1 'nameptr := +s num.names$ 'numnames := +numnames #5 > +s numnames "{ll}" format.name$ "others" = numnames #1 > and +or 'etal := +etal +{ #1 #1 + 'namesleft := } +{ numnames 'namesleft := } +if$ +{ namesleft #0 > } +{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := +nameptr #1 > +{ namesleft #1 > +{ ", " * t * } +{ nameptr #2 > +{ "," * } +'skip$ +if$ +t "others" = +etal or +{ " {\em et~al.}" * } +{ " and " * t * } +if$ +} +if$ +} +'t +if$ +nameptr #1 + 'nameptr := +namesleft #1 - 'namesleft := +} +while$ +} +FUNCTION {format.authors} +{ author empty$ +{ "" } +{ author format.names } +if$ +} +FUNCTION {format.editors} +{ editor empty$ +{ "" } +{ editor format.names +editor num.names$ #1 > +{ ", editors" * } +{ ", editor" * } +if$ +} +if$ +} +FUNCTION {format.edited} +{ editor empty$ +{ "" } +{ "edited by " editor format.names * } +if$ +} +FUNCTION {format.title} +{ title empty$ +{ "" } +{ title "t" change.case$ } +if$ +} +FUNCTION {n.dashify} +{ 't := +"" +{ t empty$ not } +{ t #1 #1 substring$ "-" = +{ t #1 #2 substring$ "--" = not +{ "--" * +t #2 global.max$ substring$ 't := +} +{ { t #1 #1 substring$ "-" = } +{ "-" * +t #2 global.max$ substring$ 't := +} +while$ +} +if$ +} +{ t #1 #1 substring$ * +t #2 global.max$ substring$ 't := +} +if$ +} +while$ +} +FUNCTION {first.page} +{ 't := +"" +{ t empty$ not t #1 #1 substring$ "-" = not and } +{ t #1 #1 substring$ * +t #2 global.max$ substring$ 't := +} +while$ +} +FUNCTION {format.date} +{ year empty$ +{ "" } +'year +if$ +} +FUNCTION {format.btitle} +{ title emphasize +} +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < +{ "~" } +{ " " } +if$ +swap$ * * +} +FUNCTION {either.or.check} +{ empty$ +'pop$ +{ "can't use both " swap$ * " fields in " * cite$ * warning$ } +if$ +} +FUNCTION {format.bvolume} +{ volume empty$ +{ "" } +{ series empty$ +'skip$ +{ ", " series * } +if$ +" Vol." volume tie.or.space.connect * +"volume and number" number either.or.check +} +if$ +} +FUNCTION {format.number.series} +{ volume empty$ +{ number empty$ +{ series field.or.null } +{ series empty$ +{ "there's a number but no series in " cite$ * warning$ } +{ ", " series * } +if$ +" No. " number tie.or.space.connect * +} +if$ +} +{ "" } +if$ +} +FUNCTION {format.edition} +{ edition empty$ +{ "" } +{ output.state mid.sentence = +{ ", " edition "l" change.case$ * } +{ ", " edition "t" change.case$ * } +if$ +" ed." * +} +if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := +#0 'multiresult := +{ multiresult not +t empty$ not +and +} +{ t #1 #1 substring$ +duplicate$ "-" = +swap$ duplicate$ "," = +swap$ "+" = +or or +{ #1 'multiresult := } +{ t #2 global.max$ substring$ 't := } +if$ +} +while$ +multiresult +} +FUNCTION {format.pages} +{ pages empty$ +{ "" } +{ pages multi.page.check +{ "pp." pages n.dashify tie.or.space.connect } +{ "p." pages tie.or.space.connect } +if$ +} +if$ +} +FUNCTION {format.pages.a} +{ pages empty$ +{ "" } +{ "p." pages first.page tie.or.space.connect } +if$ +} +FUNCTION {format.vol.num.pages} +{ volume field.or.null embolden +" " swap$ * * +pages empty$ +'skip$ +{ duplicate$ empty$ +{ pop$ format.pages.a } +{ ", " * pages first.page * } +if$ +} +if$ +} +FUNCTION {format.chapter.pages} +{ chapter empty$ +'format.pages +{ type empty$ +{ "chap." } +{ type "l" change.case$ } +if$ +chapter tie.or.space.connect +pages empty$ +'skip$ +{ ", " * format.pages * } +if$ +} +if$ +} +FUNCTION {format.pub.addr.date} +{ publisher empty$ +{ "" "empty publisher in " cite$ * warning$ } +{ publisher +address empty$ +'skip$ +{ ", " * address * } +if$ +} +if$ +year empty$ +{ "empty year in " cite$ * warning$ } +{ ", " * year * } +if$ +paren " " swap$ * +} +FUNCTION {format.book.entry} +{ format.btitle +format.bvolume * +format.number.series * +format.edition * +format.pub.addr.date * +} +FUNCTION {format.inbook.entry} +{ format.book.entry +", " * +format.chapter.pages * +} +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ +{ "" } +{ editor empty$ +{ "in " booktitle emphasize * } +{ "in " booktitle emphasize * ", " * format.edited * } +if$ +} +if$ +} +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ +month empty$ year empty$ note empty$ +and and and and and +{ "all relevant fields are empty in " cite$ * warning$ } +'skip$ +if$ +} +FUNCTION {format.thesis.type} +{ type empty$ +'skip$ +{ pop$ +type "t" change.case$ +} +if$ +} +FUNCTION {format.inst.tr.num.date} +{ institution empty$ +{ "" "empty institution in " cite$ * warning$ } +{ institution } +if$ +" Report No." * +number empty$ +{ "" } +{ number tie.or.space.connect } +if$ +year empty$ +{ "empty year in " cite$ * warning$ } +{ ", " * year * " (unpublished)" * } +if$ +} +FUNCTION {format.article.crossref} +{ key empty$ +{ journal empty$ +{ "need key or journal for " cite$ * " to crossref " * crossref * +warning$ +"" +} +{ "In " journal * } +if$ +} +{ "In " key * } +if$ +" \cite{" * crossref * "}" * +} +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ +editor num.names$ duplicate$ +#2 > +{ pop$ " {\em et~al.}" * } +{ #2 < +'skip$ +{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = +{ " {\em et~al.}" * } +{ " and " * editor #2 "{vv~}{ll}" format.name$ * } +if$ +} +if$ +} +if$ +} +FUNCTION {format.book.crossref} +{ volume empty$ +{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$ +"In " +} +{ "Volume" volume tie.or.space.connect +" of " * +} +if$ +editor empty$ +editor field.or.null author field.or.null = +or +{ key empty$ +{ series empty$ +{ "need editor, key, or series for " cite$ * " to crossref " * +crossref * warning$ +"" * +} +{ "{\em " * series * "\/}" * } +if$ +} +{ key * } +if$ +} +{ format.crossref.editor * } +if$ +" \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ +editor field.or.null author field.or.null = +or +{ key empty$ +{ booktitle empty$ +{ "need editor, key, or booktitle for " cite$ * " to crossref " * +crossref * warning$ +"" +} +{ "In {\em " booktitle * "\/}" * } +if$ +} +{ "In " key * } +if$ +} +{ "In " format.crossref.editor * } +if$ +" \cite{" * crossref * "}" * +} +FUNCTION {article} +{ output.bibitem +collaboration output +format.authors "author" output.check +new.block +crossref missing$ +{ journal field.or.null +format.vol.num.pages +format.date empty$ +'skip$ +{ duplicate$ empty$ +{ pop$ format.date paren } +{ " " * format.date paren * } +if$ +} +if$ +output +} +{ format.article.crossref output.nonnull +format.pages output +} +if$ +eprint output +new.block +note output +fin.entry +} +FUNCTION {book} +{ output.bibitem +collaboration output +author empty$ +{ format.editors "author and editor" output.check } +{ format.authors output.nonnull +crossref missing$ +{ "author and editor" editor either.or.check } +'skip$ +if$ +} +if$ +new.block +crossref missing$ +{ format.book.entry output } +{ new.block +format.book.crossref output.nonnull +} +if$ +eprint output +new.block +note output +fin.entry +} +FUNCTION {booklet} +{ output.bibitem +collaboration output +format.authors output +new.block +format.title "title" output.check +howpublished address new.block.checkb +howpublished output +address output +format.date output +eprint output +new.block +note output +fin.entry +} +FUNCTION {inbook} +{ output.bibitem +collaboration output +author empty$ +{ format.editors "author and editor" output.check } +{ format.authors output.nonnull +crossref missing$ +{ "author and editor" editor either.or.check } +'skip$ +if$ +} +if$ +new.block +crossref missing$ +{ format.inbook.entry output } +{ format.chapter.pages "chapter and pages" output.check +new.block +format.book.crossref output.nonnull +} +if$ +eprint output +new.block +note output +fin.entry +} +FUNCTION {incollection} +{ output.bibitem +collaboration output +format.authors "author" output.check +new.block +format.title "title" output.check +new.block +crossref missing$ +{ format.in.ed.booktitle "booktitle" output.check +format.bvolume output +format.number.series output +format.chapter.pages output +new.sentence +publisher "publisher" output.check +address output +format.edition output +format.date "year" output.check +} +{ format.incoll.inproc.crossref output.nonnull +format.chapter.pages output +} +if$ +eprint output +new.block +note output +fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem +collaboration output +format.authors "author" output.check +new.block +format.title "title" output.check +new.block +crossref missing$ +{ format.in.ed.booktitle "booktitle" output.check +format.bvolume output +format.number.series output +format.pages output +address empty$ +{ organization publisher new.sentence.checkb +organization output +publisher output +format.date "year" output.check +} +{ address output.nonnull +format.date "year" output.check +new.sentence +organization output +publisher output +} +if$ +} +{ format.incoll.inproc.crossref output.nonnull +format.pages output +} +if$ +eprint output +new.block +note output +fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem +collaboration output +author empty$ +{ organization empty$ +'skip$ +{ organization output.nonnull +address output +} +if$ +} +{ format.authors output.nonnull } +if$ +new.block +format.btitle "title" output.check +author empty$ +{ organization empty$ +{ address new.block.checka +address output +} +'skip$ +if$ +} +{ organization address new.block.checkb +organization output +address output +} +if$ +format.edition output +format.date output +eprint output +new.block +note output +fin.entry +} +FUNCTION {mastersthesis} +{ output.bibitem +format.authors "author" output.check +new.block +format.title "title" output.check +new.block +"Master's thesis" format.thesis.type output.nonnull +school "school" output.check +address output +format.date "year" output.check +eprint output +new.block +note output +fin.entry +} +FUNCTION {misc} +{ output.bibitem +collaboration output +format.authors output +title howpublished new.block.checkb +format.title output +howpublished new.block.checka +howpublished output +format.date output +eprint output +new.block +note output +fin.entry +empty.misc.check +} +FUNCTION {phdthesis} +{ output.bibitem +format.authors "author" output.check +new.block +format.btitle "title" output.check +new.block +"PhD thesis" format.thesis.type output.nonnull +school "school" output.check +address output +format.date "year" output.check +eprint output +new.block +note output +fin.entry +} +FUNCTION {proceedings} +{ output.bibitem +collaboration output +editor empty$ +{ organization output } +{ format.editors output.nonnull } +if$ +new.block +format.btitle "title" output.check +format.bvolume output +format.number.series output +address empty$ +{ editor empty$ +{ publisher new.sentence.checka } +{ organization publisher new.sentence.checkb +organization output +} +if$ +publisher output +format.date "year" output.check +} +{ address output.nonnull +format.date "year" output.check +new.sentence +editor empty$ +'skip$ +{ organization output } +if$ +publisher output +} +if$ +eprint output +new.block +note output +fin.entry +} +FUNCTION {techreport} +{ output.bibitem +collaboration output +format.authors "author" output.check +new.block +format.inst.tr.num.date output.nonnull +eprint output +new.block +note output +fin.entry +} +FUNCTION {unpublished} +{ output.bibitem +collaboration output +format.authors "author" output.check +new.block +format.title "title" output.check +new.block +note "note" output.check +format.date output +fin.entry +} +FUNCTION {default.type} { misc } +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"June"} +MACRO {jul} {"July"} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sept."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} +MACRO {acmcs} {"ACM Comput. Surv."} +MACRO {acta} {"Acta Inf."} +MACRO {cacm} {"Commun. ACM"} +MACRO {ibmjrd} {"IBM J. Res. Dev."} +MACRO {ibmsj} {"IBM Syst.~J."} +MACRO {ieeese} {"IEEE Trans. Softw. Eng."} +MACRO {ieeetc} {"IEEE Trans. Comput."} +MACRO {ieeetcad} +{"IEEE Trans. Comput.-Aided Design Integrated Circuits"} +MACRO {ipl} {"Inf. Process. Lett."} +MACRO {jacm} {"J.~ACM"} +MACRO {jcss} {"J.~Comput. Syst. Sci."} +MACRO {scp} {"Sci. Comput. Programming"} +MACRO {sicomp} {"SIAM J. Comput."} +MACRO {tocs} {"ACM Trans. Comput. Syst."} +MACRO {tods} {"ACM Trans. Database Syst."} +MACRO {tog} {"ACM Trans. Gr."} +MACRO {toms} {"ACM Trans. Math. Softw."} +MACRO {toois} {"ACM Trans. Office Inf. Syst."} +MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} +MACRO {tcs} {"Theoretical Comput. Sci."} +MACRO {advp} {"Adv. Phys."} +MACRO {ajp} {"Am. J. Phys."} +MACRO {ao} {"Appl. Opt."} +MACRO {apj} {"Astrophys. J."} +MACRO {apl} {"Appl. Phys. Lett."} +MACRO {arnps} {"Ann. Rev. Nucl. Sci."} +MACRO {arns} {"Ann. Rev. Nucl. Part. Sci."} +MACRO {baps} {"Bull. Am. Phys. Soc."} +MACRO {cpc} {"Computer Phys. Comm."} +MACRO {cppcf} {"Comments Plasma Phys. Controlled Fusion"} +MACRO {fed} {"Fusion Eng. Design"} +MACRO {ft} {"Fusion Tech."} +MACRO {ieeens} {"IEEE Trans. Nucl. Sci."} +MACRO {ieeeps} {"IEEE Trans. Plasma Sci."} +MACRO {ijimw} {"Int. J. Infrared Millimeter Waves"} +MACRO {ip} {"Infrared Phys."} +MACRO {jap} {"J. Appl. Phys."} +MACRO {jcp} {"J. Comput. Phys."} +MACRO {jetp} {"Sov. Phys.-JETP"} +MACRO {jfe} {"J. Fusion Energy"} +MACRO {jfm} {"J. Fluid Mech."} +MACRO {jgr} {"J. Geophys. Res."} +MACRO {jmp} {"J. Math. Phys."} +MACRO {jne} {"J. Nucl. Energy"} +MACRO {jnm} {"J. Nucl. Mater."} +MACRO {josa} {"J. Opt. Soc. Am."} +MACRO {jpg} {"J. Phys.~G: Nucl. and Part. Phys."} +MACRO {jphys} {"J. Phys"} +MACRO {jpp} {"J. Plasma Phys."} +MACRO {jpsj} {"J. Phys. Soc. Jpn"} +MACRO {jvst} {"J. Vac. Sci. Technol."} +MACRO {modphyslettA} {"Mod. Phys. Lett. A"} +MACRO {nedf} {"Nucl. Eng. Design/Fusion"} +MACRO {nf} {"Nucl. Fusion"} +MACRO {nim} {"Nucl. Instrum. Methods"} +MACRO {np} {"Nucl. Phys."} +MACRO {npb} {"Nucl. Phys.~B"} +MACRO {npbps} {"Nucl. Phys. B (Proc. Suppl.)"} +MACRO {nt/f} {"Nucl. Tech./Fusion"} +MACRO {pf} {"Phys. Fluids"} +MACRO {pl} {"Phys. Lett."} +MACRO {plb} {"Phys. Lett.~B"} +MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"} +MACRO {pp} {"Plasma Phys."} +MACRO {physrep} {"Phys. Rep."} +MACRO {physrev} {"Phys. Rev."} +MACRO {pr} {"Phys. Rev."} +MACRO {prd} {"Phys. Rev.~D"} +MACRO {prl} {"Phys. Rev. Lett."} +MACRO {procroysoc} {"Proc. Roy. Soc"} +MACRO {ps} {"Physica Scripta"} +MACRO {rmp} {"Rev. Mod. Phys."} +MACRO {rsi} {"Rev. Sci. Instrum."} +MACRO {sjnp} {"Sov. J. Nucl. Phys."} +MACRO {sjpp} {"Sov. J. Plasma Phys."} +MACRO {spd} {"Sov. Phys.-Dokl."} +MACRO {sptp} {"Sov. Phys.-Tech. Phys."} +MACRO {spu} {"Sov. Phys.-Usp."} +MACRO {zp} {"Z. Phys."} +MACRO {zpc} {"Z. Phys.~C"} +READ +STRINGS { longest.label } +INTEGERS { number.label longest.label.width } +FUNCTION {initialize.longest.label} +{ "" 'longest.label := +#1 'number.label := +#0 'longest.label.width := +} +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := +number.label #1 + 'number.label := +label width$ longest.label.width > +{ label 'longest.label := +label width$ 'longest.label.width := +} +'skip$ +if$ +} +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} +FUNCTION {begin.bib} +{ preamble$ empty$ +'skip$ +{ preamble$ write$ newline$ } +if$ +"\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ +"\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} diff --git a/reports/final/styles/hep.bst b/reports/final/styles/hep.bst new file mode 100644 index 0000000..82669c4 --- /dev/null +++ b/reports/final/styles/hep.bst @@ -0,0 +1,1417 @@ +% BibTeX-Style for physical bibliographies +% Mixture of report.bst and alpha.bst +% +% Defines the fields various, collaboration, eprint and report. +% If eprint is set a \href special is created in the .bbl file +% which causes xdvi to generate a link to +% "http://arXiv.org/abs/eprint" where eprint is the hep number of +% the document. You have to \usepackage{hyperref} in your LaTeX source. +% The collaboration field is added to the author field in brackets and +% the collaboration name is used as the citation (be careful with too +% long collaboration names). +% Various is used for comments, report for non-hep reports. +% +% Burkhard Klaus +% On bugs, further improvements and suggestions contact +% klausb@physik.fu-berlin.de +% klausb@ifh.de + +ENTRY + { address + author + booktitle + chapter + collaboration + edition + editor + eprint + howpublished + institution + journal + key + meeting + month + note + number + organization + pages + publisher + report + school + series + title + type + various + volume + year + } + {} + { label extra.label sort.label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { "," * write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label write$ + "]{" write$ + cite$ write$ + "}" write$ + newline$ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% uncomment this for printing +%%% labels in the bibliography +%%% +% "(\texttt{" write$ +% cite$ write$ +% "})\\" write$ +% newline$ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ skip$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\textsl{ " swap$ * "}" * } + if$ +} + +FUNCTION {embolden} +{ duplicate$ empty$ + { pop$ "" } + { "\textbf{ " swap$ * "}" * } + if$ +} + +FUNCTION {paren} +{ duplicate$ empty$ + { pop$ "" } + { "(" swap$ * ")" * } + if$ +} + +FUNCTION {format.collaboration} +{ collaboration empty$ + { "" } + { collaboration num.names$ #1 > + {" (" collaboration * " Collaborations)" * } + {" (" collaboration * " Collaboration)" * } + if$ + } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "" * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + format.collaboration * +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + + +FUNCTION {format.meeting} +{ meeting empty$ + { "" } + 'meeting + if$ +} + +FUNCTION {format.various} +{ various empty$ + { "" } + 'various + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.edited} +{ editor empty$ + { "" } + { "edited by " editor format.names * } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + 'title + if$ +} + +FUNCTION {format.eprint} +{ title empty$ + { "" } + 'eprint + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + + +FUNCTION {ttreport} +{ duplicate$ empty$ + { pop$ "" } + { "\texttt{ " swap$ * "}" * } + if$ +} + +FUNCTION {format.ttreport} +{ report ttreport +} + +FUNCTION {tteprint} +{ duplicate$ empty$ + { pop$ "" } + { duplicate$ "\href{http://arXiv.org/abs/" swap$ * +"}{\texttt{" * swap$ * "}}" * } + if$ +} + +FUNCTION {format.tteprint} +{ eprint tteprint +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null embolden + " " swap$ * * + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ", " * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "in " booktitle emphasize * } + { "in " booktitle emphasize * ", " * format.edited * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In " journal * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + new.block + crossref missing$ + { journal field.or.null + format.vol.num.pages + format.date empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.date paren } + { " " * format.date paren * } + if$ + } + if$ + output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.tteprint output + new.block + format.ttreport output + new.block + format.meeting output + new.block + format.various output + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +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 Comput. Surv."} +MACRO {acta} {"Acta Inf."} +MACRO {cacm} {"Commun. ACM"} +MACRO {ibmjrd} {"IBM J. Res. Dev."} +MACRO {ibmsj} {"IBM Syst.~J."} +MACRO {ieeese} {"IEEE Trans. Softw. Eng."} +MACRO {ieeetc} {"IEEE Trans. Comput."} +MACRO {ieeetcad} + {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} +MACRO {ipl} {"Inf. Process. Lett."} +MACRO {jacm} {"J.~ACM"} +MACRO {jcss} {"J.~Comput. Syst. Sci."} +MACRO {scp} {"Sci. Comput. Programming"} +MACRO {sicomp} {"SIAM J. Comput."} +MACRO {tocs} {"ACM Trans. Comput. Syst."} +MACRO {tods} {"ACM Trans. Database Syst."} +MACRO {tog} {"ACM Trans. Gr."} +MACRO {toms} {"ACM Trans. Math. Softw."} +MACRO {toois} {"ACM Trans. Office Inf. Syst."} +MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} +MACRO {tcs} {"Theoretical Comput. Sci."} + +MACRO {advp} {"Adv. Phys."} +MACRO {ajp} {"Am. J. Phys."} +MACRO {ao} {"Appl. Opt."} +MACRO {apl} {"Appl. Phys. Lett."} +MACRO {apj} {"Astrophys. J."} +MACRO {baps} {"Bull. Am. Phys. Soc."} +MACRO {cpc} {"Computer Phys. Comm."} +MACRO {cppcf} {"Comments Plasma Phys. Controlled Fusion"} +MACRO {fed} {"Fusion Eng. Design"} +MACRO {ft} {"Fusion Tech."} +MACRO {ieeens} {"IEEE Trans. Nucl. Sci."} +MACRO {ieeeps} {"IEEE Trans. Plasma Sci."} +MACRO {ijimw} {"Int. J. Infrared Millimeter Waves"} +MACRO {ip} {"Infrared Phys."} +MACRO {jap} {"J. Appl. Phys."} +MACRO {jcm} {"J. Chem. Phys."} +MACRO {jcp} {"J. Comput. Phys."} +MACRO {jetp} {"Sov. Phys.-JETP"} +MACRO {jfe} {"J. Fusion Energy"} +MACRO {jfm} {"J. Fluid Mech."} +MACRO {jgr} {"J. Geophys. Res."} +MACRO {jmp} {"J. Math. Phys."} +MACRO {jne} {"J. Nucl. Energy"} +MACRO {jnec} {"J. Nucl. Energy, Part C"} +MACRO {jnm} {"J. Nucl. Mater."} +MACRO {josa} {"J. Opt. Soc. Am."} +MACRO {jpp} {"J. Plasma Phys."} +MACRO {jpsj} {"J. Phys. Soc. Jpn"} +MACRO {jvst} {"J. Vac. Sci. Technol."} +MACRO {nedf} {"Nucl. Eng. Design/Fusion"} +MACRO {nf} {"Nucl. Fusion"} +MACRO {npb} {"Nucl. Phys. \textbf{B}"} +MACRO {nim} {"Nucl. Instrum. Methods"} +MACRO {nimpr} {"Nucl. Instrum. Methods Phys. Research"} +MACRO {nt/f} {"Nucl. Tech./Fusion"} +MACRO {pf} {"Phys. Fluids"} +MACRO {pfa} {"Phys. Fluids \textbf{A}"} +MACRO {pfb} {"Phys. Fluids \textbf{B}"} +MACRO {pl} {"Phys. Lett."} +MACRO {pla} {"Phys. Lett. \textbf{A}"} +MACRO {plb} {"Phys. Lett. \textbf{B}"} +MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"} +MACRO {pp} {"Plasma Phys."} +MACRO {ppcf} {"Plasma Phys. Controlled Fusion"} +MACRO {prep} {"Phys. Rep."} +MACRO {prl} {"Phys. Rev. Lett."} +MACRO {pr} {"Phys. Rev."} +MACRO {pra} {"Phys. Rev. \textbf{A}"} +MACRO {prb} {"Phys. Rev. \textbf{B}"} +MACRO {prc} {"Phys. Rev. \textbf{C}"} +MACRO {prd} {"Phys. Rev. \textbf{D}"} +MACRO {ps} {"Physica Scripta"} +MACRO {rmp} {"Rev. Mod. Phys."} +MACRO {rsi} {"Rev. Sci. Instrum."} +MACRO {sjpp} {"Sov. J. Plasma Phys."} +MACRO {spd} {"Sov. Phys.-Dokl."} +MACRO {sptp} {"Sov. Phys.-Tech. Phys."} +MACRO {spu} {"Sov. Phys.-Usp."} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +INTEGERS { et.al.char.used } + +FUNCTION {initialize.et.al.char.used} +{ #0 'et.al.char.used := +} + +EXECUTE {initialize.et.al.char.used} + +FUNCTION {format.lab.names} +{ 's := + s num.names$ 'numnames := + numnames #1 > + { numnames #4 > + { #3 'namesleft := } + { numnames 'namesleft := } + if$ + #1 'nameptr := + "" + { namesleft #0 > } + { nameptr numnames = + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } + { s nameptr "{v{}}{l{}}" format.name$ * } + if$ + } + { s nameptr "{v{}}{l{}}" format.name$ * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #4 > + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } + 'skip$ + if$ + } + { collaboration empty$ + {s #1 "{v{}}{l{}}" format.name$} + {s #1 "{ll}" format.name$} + if$ + duplicate$ text.length$ #2 < + { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } + 'skip$ + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { collaboration empty$ + {author format.lab.names } + {collaboration format.lab.names } + if$ + } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.organization.label + { type$ "manual" = + 'author.key.organization.label + 'author.key.label + if$ + } + if$ + } + if$ + duplicate$ + year field.or.null purify$ #-1 #2 substring$ + * + 'label := + year field.or.null purify$ #-1 #4 substring$ + * + sortify 'sort.label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ calc.label + sort.label + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + * + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label last.sort.label next.extra } + +INTEGERS { longest.label.width last.extra.num } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.sort.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := +} + +FUNCTION {forward.pass} +{ last.sort.label sort.label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + sort.label 'last.sort.label := + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + label extra.label * 'label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ + extra.label 'next.extra := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + + +FUNCTION {begin.bib} +{ et.al.char.used + { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } + 'skip$ + if$ + preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/reports/final/styles/hplain.bst b/reports/final/styles/hplain.bst new file mode 100644 index 0000000..cd51dc5 --- /dev/null +++ b/reports/final/styles/hplain.bst @@ -0,0 +1,1121 @@ +% hplain: adds eprint field (www-admin@xxx.lanl.gov) +% an extension of: +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + eprint + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprint } + if$ +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + format.eprint output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + format.eprint output + fin.entry +} + +FUNCTION {default.type} { misc } + +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"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/reports/final/styles/line.bst b/reports/final/styles/line.bst new file mode 100644 index 0000000..10a3c96 --- /dev/null +++ b/reports/final/styles/line.bst @@ -0,0 +1,1265 @@ +%jaumsa.bst with line rather than repeated author +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {no.comma} +{ before.all 'output.state := +} + +FUNCTION {comma} +{ mid.sentence 'output.state := +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {bold} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { %numnames #2 > +% { "," * } +% 'skip$ +% if$ + t "others" = + { "\ et~al." emphasize * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +STRINGS { last.authors } + +FUNCTION {init.last.authors} +{ "" 'last.authors := +} + +FUNCTION {format.authors} +{ author empty$ + { "" 'last.authors := + "" + } + { author last.authors = + { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" } + { author format.names } + if$ + author 'last.authors := + } + if$ +} + + +%FUNCTION {format.authors} +%{ author empty$ +% { "" } +% { author format.names } +% if$ +%} + +%change +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor num.names$ #1 > + { " (eds. " editor format.names * ")" * } + { " (ed. " editor format.names * ")" * } + if$ + } + if$ +} + +%mine +FUNCTION {format.lead.editors} +{ editor empty$ + { "" } + { editor num.names$ #1 > + { editor format.names " (eds.)" * } + { editor format.names " (ed.)" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "`" title "t" change.case$ * "'" * } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.series.volume} +{ series empty$ + "volume and number" number either.or.check + { volume empty$ + { "" } + { "there's a volume but no series in " cite$ * warning$ } + if$ + } + { series + volume empty$ + { " " * } + { " " * volume bold *} + if$ + } + if$ +} + +FUNCTION {format.series.volumeornumber} +{ series empty$ + "volume and number" number either.or.check + { volume empty$ + { number empty$ + { "" } + { "there's a number but no series in " cite$ * warning$ } + if$ + } + { "there's a volume but no series in " cite$ * warning$ } + if$ + } + { series emphasize + volume empty$ + { number empty$ + { " " * } + { " " * "No. " * number * } + if$ + } +% { " " * volume *} + { " " * volume bold *} + if$ + } + if$ +} + + +%% note that this is a very ugly hack +FUNCTION {format.romanseries.volumeornumber} +{ series empty$ + "volume and number" number either.or.check + { volume empty$ + { number empty$ + { "" } + { "there's a number but no series in " cite$ * warning$ } + if$ + } + { "there's a volume but no series in " cite$ * warning$ } + if$ + } + { series + volume empty$ + { number empty$ + { " " * } + { " " * "No. " * number * } + if$ + } +% { " " * volume *} + { " " * volume bold *} + if$ + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in: " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { pages n.dashify } + { pages } + if$ + } + if$ +} + + +FUNCTION {format.in.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { " pp.\ " pages n.dashify *} + { " pp.\ " pages *} + if$ + } + if$ +} + + +FUNCTION {format.journal.num.vol.date} +{ journal empty$ + { "there's no journal in " cite$ * warning$ } + { journal emphasize " " * } + if$ + volume empty$ + { "there's no volume in " cite$ * warning$ } + { number empty$ + { volume bold * " " * } + { "(" * number * ") " * volume bold * %* + } + if$ + } + if$ + year empty$ + { "empty year in " cite$ * warning$ } + { " (" * format.date * ")" * } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.in.pages + { type empty$ + { " chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.in.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.booktitle.ed} +{ booktitle empty$ + { "" } + { editor empty$ + { " in: " booktitle emphasize * } + { " in: " booktitle emphasize * " " * format.editors * } + if$ + } + if$ +} + +FUNCTION {format.publisher.address.date} +{ publisher empty$ + { address empty$ + { " (" } + { "there's an address but no publisher in " cite$ * warning$} + if$ + } + {address empty$ + { " (" publisher * ", " * } + { " (" publisher * ", " * address * ", " * } + if$ + } + if$ + year empty$ + { "empty year in " cite$ * warning$ } + { format.date * ")" *} + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ * + } + if$ +} + +FUNCTION {format.school.address.date} +{ school empty$ + { "empty school in " cite$ * warning$ } + { school ", " * } + if$ + address empty$ + 'skip$ + { address * ", " * } + if$ + year empty$ + { "empty year in " cite$ * warning$ } + { format.date * ")" *} + if$ +} + +FUNCTION {format.instit.address.date} +{ institution empty$ + { "empty institution in " cite$ * warning$ } + { "(" institution * ", " * } + if$ + address empty$ + 'skip$ + { address * ", " * } + if$ + year empty$ + { "empty year in " cite$ * warning$ } + { format.date * ")" *} + if$ +} + +FUNCTION {format.organ.address.date} +{ organization empty$ + { "empty organization in " cite$ * warning$ } + { "(" organization * ", " * } + if$ + address empty$ + 'skip$ + { address * ", " * } + if$ + year empty$ + { "empty year in " cite$ * warning$ } + { format.date * ")" *} + if$ +} + + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.journal.num.vol.date output + format.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + note empty$ + 'skip$ +% { "" * } + { no.comma + " " * note output + } + if$ + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.lead.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.number.series output + format.edition output + note output + no.comma + format.publisher.address.date "publisher" output.check + } + { new.block + format.book.crossref output.nonnull + } + if$ + new.block + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.lead.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { chapter output + no.comma + note output + format.romanseries.volumeornumber output + format.edition output + no.comma + format.publisher.address.date "publisher" output.check + no.comma + format.in.pages output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.in.booktitle.ed "booktitle" output.check + format.series.volumeornumber output + format.edition output + no.comma + format.publisher.address.date "publisher" output.check + no.comma + format.chapter.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.in.booktitle.ed "booktitle" output.check + format.bvolume output + format.number.series output + organization output + no.comma + format.publisher.address.date output + note output + no.comma + format.in.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + format.btitle "title" output.check + format.edition output + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { format.organ.address.date output + } + if$ + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + no.comma + " (Master's Thesis" format.thesis.type output.nonnull + format.school.address.date output + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + comma + format.title output + note emphasize output + howpublished output + format.date output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + no.comma + " (Ph.D. Thesis" format.thesis.type output.nonnull + format.school.address.date output + note output + fin.entry +} + +FUNCTION {dissertation} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + no.comma + " (Dissertation" format.thesis.type output.nonnull + format.school.address.date output + note output + fin.entry +} + +FUNCTION {honoursthesis} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + no.comma + " (Honours Thesis" format.thesis.type output.nonnull + format.school.address.date output + note output + fin.entry +} + +FUNCTION {lecture} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + no.comma + " (Lecture notes" format.thesis.type output.nonnull + format.school.address.date output + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + format.btitle "title" output.check + format.bvolume output + format.number.series output + organization output + note output + format.publisher.address.date output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + format.tr.number output.nonnull + format.instit.address.date "year" output.check + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +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"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/reports/final/styles/plain.bst b/reports/final/styles/plain.bst new file mode 100644 index 0000000..83286c1 --- /dev/null +++ b/reports/final/styles/plain.bst @@ -0,0 +1,1097 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +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"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/reports/final/styles/uwa.bst b/reports/final/styles/uwa.bst new file mode 100644 index 0000000..ea27dea --- /dev/null +++ b/reports/final/styles/uwa.bst @@ -0,0 +1,1474 @@ +%%% ==================================================================== +%%% @BibTeX-style-file{ +%%% filename = "uwa.bst", +%%% version = "1.1", +%%% date = "1998/07/15", +%%% time = "14:37:33 EST", +%%% checksum = "38973 1474 4577 33560" +%%% author = "Greg Gamble", +%%% address = "Centre for Discrete Mathematics & Computing, +%%% Department of Computer Science +%%% & Electrical Engineering, +%%% The University of Queensland, +%%% Queensland 4072, +%%% Australia", +%%% telephone = "+61 7 336 51195", +%%% FAX = "+61 7 336 51999", +%%% copyright = "Copyright (C) 1998 Greg Gamble, +%%% all rights reserved. Copying of this file is +%%% authorised only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% email = "gregg@csee.uq.edu.au (Internet)", +%%% keywords = "bibtex, bibliography, latex,", +%%% supported = "yes", +%%% abstract = "BibTeX bibliography style `uwa' for BibTeX +%%% versions 0.99a or later and LaTeX version 2e, +%%% a significantly modified version of the American +%%% Mathematical Society's `amsplain', incorporating +%%% many features of `abbrv'. Versions 1.0 and 1.0a +%%% of the style were written (and modified) while +%%% the author was at the University of Western +%%% Australia - hence the style name `uwa'. Note, +%%% that the style `uwab' provides an identical +%%% style except that it does not use \bysame +%%% (a horizontal line in place of the author(s) +%%% of a bibitem, indicating the author(s) are the +%%% same as the previous bibitem). +%%% Briefly the style produces bibitems that are +%%% either one or two (if there is both a note and +%%% other information) sentences. Functions are provided +%%% to emphasize, embolden, slantify and parenthesize. +%%% The general philosophy is titles (including +%%% booktitles and series) are either set in quotes +%%% (article type titles) or emphasized; prepositions +%%% like `in' are included to provide breaks between +%%% fields of similar typeface and set either in upshape +%%% or slanted to set it off from adjacent text; +%%% * volume is set in bold unless it would clash +%%% with a cross-reference (where the style is: +%%% `vol. ... of ...'); +%%% * number is treated as if it is a volume unless +%%% both exist (in which case it is set as: +%%% `,no. ...' following the volume); +%%% * organization, address, edition, year are set +%%% together separated by commas in parentheses; +%%% and in many places, e.g. before a left +%%% parenthesis and before volume, the comma that +%%% is set by most styles is suppressed (the function +%%% no.comma is used in most places this has been done +%%% - a comma can be inserted, if this is desired, +%%% usually by simply removing the `no.comma' +%%% - please ... if you modify the style in this +%%% or any other way, heed the copyright warning +%%% by changing the name of the file); +%%% * name(s) and month(s) are set as in the `abbrv' style. +%%% Peculiar to the style is the use of \bysame in place +%%% of the authors names for succeeding bibitems by the +%%% same authors. If this feature is not desirable (i.e. +%%% explicit author lists for all papers is required), +%%% use the `uwab' style instead. +%%% The `ize' endings for many function names have been +%%% retained ... it would be too confusing to change such +%%% American spelling to English (even though, personally +%%% I prefer the English usage: `ise'). +%%% Changes: +%%% - Version 1.0 [1996/02/26]: first release of `uwa.bst' +%%% - Version 1.0a [1996/05/24]: added field: +%%% * editiontype, so that technical documentation +%%% could use the MANUAL type and have `Version No.' +%%% instead of `No. ed.' +%%% - Version 1.1 [1998/07/15]: added fields: +%%% * url. It is typeset before the note field (if +%%% there is one) using LaTeX's \verb with | delimiters +%%% (by default). For the rare situation, where a | +%%% actually appears in the URL, the delimiter may be +%%% changed by setting the field verbdelim; +%%% * verbdelim (see description for url field). +%%% Examples of usage (including some that demonstrate +%%% `editiontype', `url' and `verbdelim') are provided in +%%% `uwaxampl.bib'", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== + +% See the file btxbst.doc for extra documentation other than +% what is included here. And see btxhak.tex for a description +% of the BibTeX language and how to use it. + +% This defines the types of fields that can occur in a database entry +% for this particular bibliography style. Except for `language', +% this is the standard list from plain.bst. + +%% Types of entries currently allowed in a BibTeX file: +%% +%% ARTICLE -- An article from a journal or magazine. +%% +%% BOOK -- A book with an explicit publisher. +%% +%% BOOKLET -- A work that is printed and bound, +%% but without a named publisher or sponsoring institution. +%% +%% CONFERENCE -- The same as INPROCEEDINGS, +%% included for Scribe compatibility. +%% +%% INBOOK -- A part of a book, +%% which may be a chapter (or section or whatever) and/or a range of pages. +%% +%% INCOLLECTION -- A part of a book having its own title. +%% +%% INPROCEEDINGS -- An article in a conference proceedings. +%% +%% MANUAL -- Technical documentation. +%% +%% MASTERSTHESIS -- A Master's thesis. +%% +%% MISC -- Use this type when nothing else fits. +%% +%% PHDTHESIS -- A PhD thesis. +%% +%% PROCEEDINGS -- The proceedings of a conference. +%% +%% TECHREPORT -- A report published by a school or other institution, +%% usually numbered within a series. +%% +%% UNPUBLISHED -- A document having an author and title, but not formally +%% published. + +ENTRY + { address + author + booktitle + chapter + edition + editiontype + editor + howpublished + institution + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + url + verbdelim + volume + year + } + {} + { label extra.label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block + mid.sentence.nocomma + } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'mid.sentence.nocomma := +} + +% Scratch variables: + +STRINGS { s t } + +% Utility functions + +FUNCTION {shows} +{ duplicate$ ":::: `" swap$ * "'" * top$ +} + +FUNCTION {showstack} +{"STACK=====================================================================" +top$ +stack$ +"ENDSTACK==================================================================" +top$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +% Standard warning message for a missing or empty field. For the user +% we call any such field `missing' without respect to the distinction +% made by BibTeX between missing and empty. + +FUNCTION {missing.warning} +{ "missing " swap$ * " in " * cite$ * warning$ } + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {field.or.null.check} +{ 't := + duplicate$ empty$ + { pop$ "" t missing.warning } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {embolden} +{ duplicate$ empty$ + { pop$ "" } + { "\textbf{" swap$ * "}" * } + if$ +} + +FUNCTION {slantify} +{ duplicate$ empty$ + { pop$ "" } + { "\textsl{" swap$ * "}" * } + if$ +} + +FUNCTION {parenthesize} +{ duplicate$ empty$ + { pop$ "" } + { "(" swap$ * ")" * } + if$ +} + +% n.dashify is used to make sure page ranges get the TeX code +% (two hyphens) for en-dashes. + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +% tie.or.space.connect connects two items with a ~ if the +% second item is less than 3 letters long, otherwise it just puts an +% ordinary space. + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {add.space.if.necessary} +{ duplicate$ "" = + 'skip$ + { " " * } + if$ +} + +% either.or.check gives a warning if two mutually exclusive fields +% were used in the database. + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +% output.nonnull is called by output. + +FUNCTION {output.nonnull} +% remove the top item from the stack because it's in the way. +{ 's := + output.state mid.sentence.nocomma = +% If we're in mid-sentence, but no comma is required append a space to the new +% top item and write it ... and then restore the normal mid-sentence state + { " " * write$ + mid.sentence 'output.state := + } + { output.state mid.sentence = +% If we're in mid-sentence, add a comma to the new top item and write it + { ", " * write$ } + { output.state after.block = +% If we are finishing a block add a period and take this opportunity to +% start a new line and thus avoid extra long lines in the .bbl file + { add.period$ write$ + newline$ + "\newblock " write$ + } +% Otherwise, if we're at the beginning of a bibitem, + { output.state before.all = +% just write out the top item from the stack; + 'write$ +% and the last alternative is that we're at the end of the current +% bibitem, so we add a period to the top stack item and write it out. + { add.period$ " " * write$ } + if$ + mid.sentence 'output.state := + } + if$ + } + if$ + } + if$ +% Put the top item back on the stack that we removed earlier. + s +} + +% Output checks to see if the stack top is empty; if not, it +% calls output.nonnull to write it out. + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +% Output.check is like output except that it gives a warning on-screen +% if the given field in the database entry is empty. t is the field +% name. + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ t missing.warning } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ +% This empty string is the first thing that will be written +% the next time write$ is called. Done this way because each +% item is saved on the stack until we find out what punctuation +% should be added after it. Therefore we need an empty first item. + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +% The three append functions are like the corresponding output +% functions ... +% append.nonnull concatenates the top 2 elements on the stack +% putting the string append.conjuction in between if both are +% non-empty ... the result is left on top of the stack + +STRINGS { append.conjunction } + +FUNCTION {append.nonnull} +% remove the top item from the stack because it's in the way. +{ 's := + duplicate$ empty$ + { pop$ s } + { append.conjunction * s * } + if$ +} + +% append does exactly what append.nonnull was described to do ... +% if the top element is non-empty it calls append.nonnull to +% concatenate the top 2 stack elements ... otherwise it just +% throws away the top element. + +FUNCTION {append} +{ duplicate$ empty$ + 'pop$ + 'append.nonnull + if$ +} + +% append.check is like append except that it gives a warning on-screen +% if the given field in the database entry is empty. t is the field +% name ... analogous to output.check. + +FUNCTION {append.check} +{ 't := + duplicate$ empty$ + { pop$ t missing.warning } + 'append.nonnull + if$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {no.comma} +{ duplicate$ empty$ + 'skip$ + { output.state before.all = + 'skip$ + { mid.sentence.nocomma 'output.state := } + if$ + } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +% The extra section to write out a language field was added +% for AMSPLAIN.BST. Not present in plain.bst. + +FUNCTION {format.language} +{ language no.comma parenthesize +} + +FUNCTION {format.note} +{ note empty$ + { "" } + { note new.block } + if$ +} + +% The url field is formatted in a similar fashion to the note field +% but appears before it. We use LaTeX's \verb with | delimiters +% by default, i.e. \verb|| is how it appears in the output. +% For the rare situations where a | appears in the URL, the user +% can set the verbdelim field to a different character. + +FUNCTION {format.url} +{ url empty$ + { "" } + { verbdelim empty$ + { "\verb|" url * "|" * new.block } + { "\verb" verbdelim * url * verbdelim * new.block } + if$ + } + if$ +} + +% This version of format.names puts names in the format +% +% Initials von Last, Jr. + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { extra.label "\bysame" = + {"\bysame"} + { author format.names } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { " (eds.)" * } + { " (ed.)" * } + if$ + } + if$ +} + +FUNCTION {format.nonauthor.editors} +{ editor empty$ + { "" } + { editor num.names$ #1 > + { "Eds." slantify } + { "Ed." slantify } + if$ + editor format.names tie.or.space.connect + } + if$ +} + +% This is the only place we set anything in quotes ... so we don't +% provide a special function like: emphasize, embolden, slantify +% and parenthesize + +FUNCTION {format.atitle} +{ title empty$ + { "" } + { " `" title "t" change.case$ * "'" * } + if$ +} + +FUNCTION {format.btitle} +{ title empty$ + { "" } + { title "t" change.case$ emphasize } + if$ +} + +% format.title ... treat as an article if pages are empty +% or as if whole book otherwise + +FUNCTION {format.title} +{ pages empty$ + 'format.btitle + 'format.atitle + if$ +} + +% For formatting the volume number for a journal or book of a series + +FUNCTION {format.journal.vol.year} +{ " " 'append.conjunction := + "" + journal emphasize "journal name" append.check + volume embolden append + year parenthesize "year" append.check +} + +% For formatting the issue number for a journal article. + +FUNCTION {format.number} +{ number empty$ + { "" } + { "no.~" number * } + if$ +} + +FUNCTION {format.series} +{ series emphasize +} + +FUNCTION {format.series.volume.number} +{ format.series + " " 'append.conjunction := + volume embolden + duplicate$ empty$ + { pop$ number embolden append } + { append.nonnull + number empty$ + 'skip$ + { ", no.~" * number * + series empty$ + { "doesn't make sense to use both volume and number if series info is missing" + warning$ + "in BibTeX entry type `" type$ * "'" * top$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.in.series.volume.number} +{ series empty$ + { "" } + { "in " } + if$ + format.series.volume.number * +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { editiontype empty$ + { output.state mid.sentence = + { edition "l" change.case$ " ed." * } + { edition "t" change.case$ " ed." * } + if$ + } + { editiontype " " * edition * } + if$ + } + if$ +} + +% For formatting miscellaneous dates ... builds the date on top of the stack + +FUNCTION {format.date} +{ month empty$ + { year field.or.null } + { month + year empty$ + { "there's a month but no year in " cite$ * warning$ } + { " " * year * } + if$ + } + if$ +} + +FUNCTION {format.edition.date} +{ ", " 'append.conjunction := + "" + format.edition append + format.date "year" append.check + parenthesize +} + +FUNCTION {format.howpublished.address.date} +{ ", " 'append.conjunction := + "" + howpublished append + address append + format.date append + parenthesize +} + +FUNCTION {format.publisher.address.edition.date} +{ ", " 'append.conjunction := + "" + publisher "publisher" append.check + address append + format.edition append + format.date "year" append.check + parenthesize +} + +FUNCTION {format.org.publisher.address.date} +{ ", " 'append.conjunction := + "" + organization append + publisher append + address append + format.date "year" append.check + parenthesize +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "vol.~" volume * + series empty$ + 'skip$ + { " of " * format.series * } + if$ + "volume and number" number either.or.check + } + if$ +} + +% format.booktitle formats the booktitle field of types incollection +% and inproceedings + +FUNCTION {format.booktitle} +{ booktitle empty$ + { "" } + { title empty$ + { "" } + { "in " } + if$ + booktitle emphasize * + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages n.dashify } + if$ +} + +FUNCTION {format.book.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pp.~" pages n.dashify * } + { "p.~" pages * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.book.pages + { type empty$ + { "ch.~" } + { type "l" change.case$ " " * } + if$ + chapter * + pages empty$ + 'skip$ + { ", " * format.book.pages * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.techrep.type.number} +{ type empty$ + { "Tech. Report" } + 'type + if$ + emphasize + " " 'append.conjunction := + number embolden append +} + +% Now we have a number of format.crossref functions + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "in" journal emphasize tie.or.space.connect } + if$ + } + { "in" key tie.or.space.connect } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "in " + } + { "vol.~" volume * " of " * } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { format.series * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "in " booktitle emphasize * } + if$ + } + { "in" slantify key tie.or.space.connect } + if$ + } + { "in" slantify format.crossref.editor tie.or.space.connect } + if$ + " \cite{" * crossref * "}" * +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The main functions for each entry type. + +% journal, vol and year are formatted together because they are +% not separated by commas. + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.atitle "title" output.check + crossref missing$ + { format.journal.vol.year output + format.number output + format.pages "pages" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { format.in.series.volume.number output + format.publisher.address.edition.date no.comma output + } + { format.book.crossref output.nonnull + format.edition.date no.comma output + } + if$ + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + format.btitle "title" output.check + format.howpublished.address.date no.comma output + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { format.in.series.volume.number output + format.chapter.pages "chapter and pages" output.check + format.publisher.address.edition.date no.comma output + } + { format.book.crossref output.nonnull + format.chapter.pages "chapter and pages" output.check + format.edition.date no.comma output + } + if$ + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.booktitle "booktitle" output.check + format.nonauthor.editors output + format.in.series.volume.number output + format.chapter.pages "chapter and pages" output.check + format.publisher.address.edition.date no.comma output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages "chapter and pages" output.check + format.edition.date no.comma output + } + if$ + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + format.title "title" output.check + crossref missing$ + { format.booktitle "booktitle" output.check + format.nonauthor.editors output + format.series.volume.number output + format.org.publisher.address.date no.comma output + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages output + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull } + if$ + } + { format.authors output.nonnull } + if$ + format.btitle "title" output.check + ", " 'append.conjunction := + "" + author empty$ + { organization append } + 'skip$ + if$ + address append + format.edition append + format.date "year" append.check + parenthesize no.comma output + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + ", " 'append.conjunction := + "" + "Master's thesis" format.thesis.type append.nonnull + school "school" append.check + address append + format.date "year" append.check + parenthesize no.comma output + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + format.btitle output + format.howpublished.address.date no.comma output + format.pages output + format.language output + format.url output + format.note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + ", " 'append.conjunction := + "" + "Ph.D. thesis" format.thesis.type append.nonnull + school "school" append.check + address append + format.date "year" append.check + parenthesize no.comma output + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + format.btitle "title" output.check + format.in.series.volume.number output + ", " 'append.conjunction := + "" + editor empty$ + { organization append } + 'skip$ + if$ + publisher append + format.date "year" append.check + parenthesize no.comma output + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + format.atitle "title" output.check + format.techrep.type.number output.nonnull + ", " 'append.conjunction := + "" + institution "institution" append.check + address append + format.date "year" append.check + parenthesize no.comma output + format.language output + format.url output + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + format.btitle "title" output.check + format.date parenthesize no.comma output + format.language output + format.url output + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et~al." * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label prev.author this.author } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := + "abcxyz" 'prev.author := + "" 'this.author := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ + author empty$ + { editor empty$ + { "" } + 'editor + if$ + } + 'author + if$ + 'this.author := + this.author prev.author = + { "\bysame" 'extra.label := } + { "" 'extra.label := + this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\providecommand{\bysame}{\leavevmode\hbox to3em{\hrulefill}\thinspace}" + write$ newline$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} diff --git a/reports/final/titlepage/Titlepage.tex b/reports/final/titlepage/Titlepage.tex new file mode 100644 index 0000000..2eae791 --- /dev/null +++ b/reports/final/titlepage/Titlepage.tex @@ -0,0 +1,6 @@ +\begin{titlepage} +\title{MCTX3420} +\author{} +\date{} +\maketitle +\end{titlepage}