Skip to content

Instantly share code, notes, and snippets.

@weibeld
Last active October 29, 2017 11:58
Show Gist options
  • Save weibeld/d0e662f4de558f294e8147457cbf3ba2 to your computer and use it in GitHub Desktop.
Save weibeld/d0e662f4de558f294e8147457cbf3ba2 to your computer and use it in GitHub Desktop.
Custom BibTeX bibliography style with entries sorted in alphabetical order
% Begin of manually added comments
%------------------------------------------------------------------------------%
%
% The main characteristics of this bib style are:
% - Ordering of references in ALPHABETICAL order
% - Author names: initials + surname (e.g. J. F. Smith)
% - Maximum three authors (missing names replaced by et al.)
% - Date as month + year
% - Titles (and punctuation) in double quotes
% - Don't change capitalisation of titles
% - Journal names in italics
% - No ISBN, ISSN, DOI
% - No word "in" for collections and proceedings
%
% ------
%
% To create a .bst file, do:
%
% latex makebst
%
% This asks a catalogue of questions and then creates a .dbj file (e.g. foo.dbj).
% The .dbj file contains the answers to all the questions. It may be manually
% edited.
%
% latex foo.dbj
%
% Creates the .bst file based on the information in the .dbj file.
%
% Daniel Weibel <danielmweibel@gmail.com> 26 May 2016
%------------------------------------------------------------------------------%
% End of manually added comments
%%
%% This is file `my_alphorder.bst',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% merlin.mbs (with options: `nm-init,ed-au,nmlm,x3,m3,mcite,mct-3,mct-x3,tit-qq,atit-u,vnum-nr,volp-com,jwdpg,jwdvol,num-xser,edpar,edby-par,edbyx,in-x,pp,xedn,etal-it,url,url-blk,em-it,nfss,')
%% ----------------------------------------
%% *** ***
%%
%% Copyright 1994-2011 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}[2011/11/18 4.33 (PWD, AO, DPC)]
% For use with BibTeX version 0.99a or later
%-------------------------------------------------------------------
% This bibliography style file is intended for texts in ENGLISH
% This is a numerical citation style, and as such is standard LaTeX.
% It requires no extra package to interface to the main text.
% The form of the \bibitem entries is
% \bibitem{key}...
% Usage of \cite is as follows:
% \cite{key} ==>> [#]
% \cite[chap. 2]{key} ==>> [#, chap. 2]
% where # is a number determined by the ordering in the reference list.
% The order in the reference list is alphabetical by authors.
%---------------------------------------------------------------------
ENTRY
{ address
author
booktitle
chapter
edition
editor
eid
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
url
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 {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}
{
new.block
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {non.stop}
{ duplicate$
"}" * add.period$
#-1 #1 substring$ "." =
}
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$ "" }
{ "\textit{" swap$ * "}" * }
if$
}
FUNCTION {tie.or.space.prefix}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$
}
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}
{ "editors" }
FUNCTION {bbl.editor}
{ "editor" }
FUNCTION {bbl.edby}
{ "edited by" }
FUNCTION {bbl.edition}
{ "edition" }
FUNCTION {bbl.volume}
{ "volume" }
FUNCTION {bbl.of}
{ "of" }
FUNCTION {bbl.number}
{ "number" }
FUNCTION {bbl.nr}
{ "no." }
FUNCTION {bbl.in}
{ "in" }
FUNCTION {bbl.pages}
{ "pp." }
FUNCTION {bbl.page}
{ "p." }
FUNCTION {bbl.chapter}
{ "chapter" }
FUNCTION {bbl.techrep}
{ "Technical Report" }
FUNCTION {bbl.mthesis}
{ "Master's thesis" }
FUNCTION {bbl.phdthesis}
{ "Ph.D. thesis" }
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"}
FUNCTION {bibinfo.check}
{ swap$
duplicate$ missing$
{
pop$ pop$
""
}
{ duplicate$ empty$
{
swap$ pop$
}
{ swap$
pop$
}
if$
}
if$
}
FUNCTION {bibinfo.warn}
{ swap$
duplicate$ missing$
{
swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
""
}
{ duplicate$ empty$
{
swap$ "empty " swap$ * " in " * cite$ * warning$
}
{ swap$
pop$
}
if$
}
if$
}
FUNCTION {format.url}
{
url
duplicate$ empty$
{ pop$ "" }
{ "\urlprefix\url{" swap$ * "}" * }
if$
}
INTEGERS { nameptr namesleft numnames }
STRINGS { bibinfo}
FUNCTION {format.names}
{ 'bibinfo :=
duplicate$ empty$ 'skip$ {
's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{f.~}{vv~}{ll}{, jj}"
format.name$
bibinfo bibinfo.check
't :=
nameptr #1 >
{
nameptr #3
#1 + =
numnames #3
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{
" " * bbl.etal emphasize *
}
{
bbl.and
space.word * t *
}
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
} if$
}
FUNCTION {format.names.ed}
{
format.names
}
FUNCTION {format.authors}
{ author "author" format.names
}
FUNCTION {get.bbl.editor}
{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
FUNCTION {format.editors}
{ editor "editor" format.names duplicate$ empty$ 'skip$
{
" " *
get.bbl.editor
"(" swap$ * ")" *
*
}
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$ * "note" bibinfo.check
}
if$
}
FUNCTION {format.title}
{ title
"title" bibinfo.check
duplicate$ empty$ 'skip$
{
"\enquote{" swap$ *
add.period$ "}" *
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
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 {word.in}
{ "" }
FUNCTION {format.date}
{
month "month" bibinfo.check
duplicate$ empty$
year "year" bibinfo.check duplicate$ empty$
{ swap$ 'skip$
{ "there's a month but no year in " cite$ * warning$ }
if$
*
}
{ swap$ 'skip$
{
swap$
" " * swap$
}
if$
*
}
if$
}
FUNCTION {format.btitle}
{ title "title" bibinfo.check
duplicate$ empty$ 'skip$
{
emphasize
}
if$
}
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.prefix
"volume" bibinfo.check * *
series "series" bibinfo.check
duplicate$ empty$ 'pop$
{ swap$ bbl.of space.word * swap$
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 "number" bibinfo.check }
{ output.state mid.sentence =
{ bbl.number }
{ bbl.number capitalize }
if$
number tie.or.space.prefix "number" bibinfo.check * *
bbl.in space.word *
series "series" bibinfo.check *
}
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.edition}
{ edition duplicate$ empty$ 'skip$
{
output.state mid.sentence =
{ "l" }
{ "t" }
if$ change.case$
"edition" bibinfo.check
" " * bbl.edition *
}
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 duplicate$ empty$ 'skip$
{ duplicate$ multi.page.check
{
bbl.pages swap$
n.dashify
}
{
bbl.page swap$
}
if$
tie.or.space.prefix
"pages" bibinfo.check
* *
}
if$
}
FUNCTION {format.journal.pages}
{ pages duplicate$ empty$ 'pop$
{ swap$ duplicate$ empty$
{ pop$ pop$ format.pages }
{
", " *
swap$
n.dashify
pages multi.page.check
'bbl.pages
'bbl.page
if$
swap$ tie.or.space.prefix
"pages" bibinfo.check
* *
*
}
if$
}
if$
}
FUNCTION {format.journal.eid}
{ eid "eid" bibinfo.check
duplicate$ empty$ 'pop$
{ swap$ duplicate$ empty$ 'skip$
{
", " *
}
if$
swap$ *
}
if$
}
FUNCTION {format.vol.num.pages}
{ volume field.or.null
duplicate$ empty$ 'skip$
{
bbl.volume swap$ tie.or.space.prefix
"volume" bibinfo.check
* *
}
if$
number "number" bibinfo.check duplicate$ empty$ 'skip$
{
swap$ duplicate$ empty$
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
if$
swap$
", " bbl.nr * number tie.or.space.prefix pop$ * swap$ *
}
if$ *
eid empty$
{ format.journal.pages }
{ format.journal.eid }
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ bbl.chapter }
{ type "l" change.case$
"type" bibinfo.check
}
if$
chapter tie.or.space.prefix
"chapter" bibinfo.check
* *
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.booktitle}
{
booktitle "booktitle" bibinfo.check
emphasize
}
FUNCTION {format.in.ed.booktitle}
{ format.booktitle duplicate$ empty$ 'skip$
{
editor "editor" format.names.ed duplicate$ empty$ 'pop$
{
get.bbl.editor
" " * swap$ *
"(" swap$ * ")" *
swap$
" " * swap$
* }
if$
word.in swap$ *
}
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 duplicate$ empty$
'pop$
{ swap$ pop$
"t" change.case$ "type" bibinfo.check
}
if$
}
FUNCTION {format.tr.number}
{ number "number" bibinfo.check
type duplicate$ empty$
{ pop$ bbl.techrep }
'skip$
if$
"type" bibinfo.check
swap$ duplicate$ empty$
{ pop$ "t" change.case$ }
{ tie.or.space.prefix * * }
if$
}
FUNCTION {format.article.crossref}
{
key duplicate$ empty$
{ pop$
journal duplicate$ empty$
{ "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
{ "journal" bibinfo.check emphasize word.in swap$ * }
if$
}
{ word.in swap$ * " " *}
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
"editor" bibinfo.check
editor num.names$ duplicate$
#2 >
{ pop$
"editor" bibinfo.check
" " * bbl.etal
emphasize
*
}
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{
"editor" bibinfo.check
" " * bbl.etal
emphasize
*
}
{
bbl.and space.word
* editor #2 "{vv~}{ll}" format.name$
"editor" bibinfo.check
*
}
if$
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ volume duplicate$ empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
pop$ word.in
}
{ bbl.volume
capitalize
swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
}
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 emphasize * }
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$
{ format.booktitle duplicate$ empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
}
{ word.in swap$ * }
if$
}
{ word.in key * " " *}
if$
}
{ word.in format.crossref.editor * " " *}
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.org.or.pub}
{ 't :=
""
address empty$ t empty$ and
'skip$
{
t empty$
{ address "address" bibinfo.check *
}
{ t *
address empty$
'skip$
{ ", " * address "address" bibinfo.check * }
if$
}
if$
}
if$
}
FUNCTION {format.publisher.address}
{ publisher "publisher" bibinfo.warn format.org.or.pub
}
FUNCTION {format.organization.address}
{ organization "organization" bibinfo.check format.org.or.pub
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{
journal
"journal" bibinfo.check
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
format.url output
new.block
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$
new.block
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
new.block
format.number.series output
new.sentence
format.publisher.address output
}
{
new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
new.block
format.url output
new.block
format.note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
new.block
format.title "title" output.check
new.block
howpublished "howpublished" bibinfo.check output
address "address" bibinfo.check output
format.date output
new.block
format.url output
new.block
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$
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
format.publisher.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
format.url output
new.block
format.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
format.publisher.address output
format.edition output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
new.block
format.url output
new.block
format.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
new.sentence
publisher empty$
{ format.organization.address output }
{ organization "organization" bibinfo.check output
format.publisher.address output
}
if$
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.pages output
}
if$
new.block
format.url output
new.block
format.note output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization "organization" bibinfo.check
duplicate$ empty$ 'pop$
{ output
address "address" bibinfo.check output
}
if$
}
{ format.authors output.nonnull }
if$
new.block
format.btitle "title" output.check
author empty$
{ organization empty$
{
address new.block.checka
address "address" bibinfo.check output
}
'skip$
if$
}
{
organization address new.block.checkb
organization "organization" bibinfo.check output
address "address" bibinfo.check output
}
if$
format.edition output
format.date output
new.block
format.url output
new.block
format.note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
new.block
format.btitle
"title" output.check
new.block
bbl.mthesis format.thesis.type output.nonnull
school "school" bibinfo.warn output
address "address" bibinfo.check output
format.date "year" output.check
new.block
format.url output
new.block
format.note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
title howpublished new.block.checkb
format.title output
howpublished new.block.checka
howpublished "howpublished" bibinfo.check output
format.date output
new.block
format.url output
new.block
format.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
bbl.phdthesis format.thesis.type output.nonnull
school "school" bibinfo.warn output
address "address" bibinfo.check output
format.date "year" output.check
new.block
format.url output
new.block
format.note output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization "organization" bibinfo.check output
}
{ format.editors output.nonnull }
if$
new.block
format.btitle "title" output.check
format.bvolume output
format.number.series output
editor empty$
{ publisher empty$
'skip$
{
new.sentence
format.publisher.address output
}
if$
}
{ publisher empty$
{
new.sentence
format.organization.address output }
{
new.sentence
organization "organization" bibinfo.check output
format.publisher.address output
}
if$
}
if$
format.date "year" output.check
new.block
format.url output
new.block
format.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" bibinfo.warn output
address "address" bibinfo.check output
format.date "year" output.check
new.block
format.url output
new.block
format.note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
format.date output
new.block
format.url output
new.block
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 {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 #3
#1 + =
numnames #3
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
" " *
namesleft #1 = t "others" = and
{ "zzzzz" 't := }
'skip$
if$
t sortify *
}
{ 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$
"\newcommand{\enquote}[1]{``#1''}"
write$ newline$
"\providecommand{\url}[1]{\texttt{#1}}"
write$ newline$
"\providecommand{\urlprefix}{URL }"
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 `my_alphorder.bst'.
%% Driver file to produce my_alphorder.bst from merlin.mbs
%% Generated with makebst, version 4.1 (2003/09/08)
%% Produced on 2016/05/27 at 15:21
%%
\input docstrip
\preamble
----------------------------------------
*** ***
\endpreamble
\postamble
End of customized bst file
\endpostamble
\keepsilent
\askforoverwritefalse
\def\MBopts{\from{merlin.mbs}{%
%EXTERNAL FILES:
%Name of language file: \cfile=.
%No included files.
%INTERNAL LANGUAGE SUPPORT (if no external language file)
%: (def) English
% babel,%: Babel
%--------------------
%STYLE OF CITATIONS:
%: (def) Numerical
% ay,%: Author-year
% alph,%: Alpha style, Jon90 or JWB90
% alph,alf-1,%: Alpha style, Jon90
% alph,alf-f,%: Alpha style, Jones90
% cite,%: Cite key
%--------------------
%HTML OUTPUT (if non author-year citations)
%: (def) Normal LaTeX
% html,%: Hypertext
% html,htlist,%: Hypertext list
% html,htdes,%: Hypertext with keys
%--------------------
%AUTHOR--YEAR SUPPORT SYSTEM (if author-year citations)
% nat,%: Natbib
% %: (def) Older Natbib
% alk,%: Apalike
% har,%: Harvard
% ast,%: Astronomy
% cay,%: Chicago
% nmd,%: Named
% cn,%: Author-date
%--------------------
%HARVARD EXTENSIONS INCLUDED (if Harvard support selected)
% harnm,%: With Harvard extensions
% %: (def) Older Harvard
%--------------------
%LANGUAGE FIELD
%: (def) No language field
% lang,%: Add language field
%--------------------
%ANNOTATIONS:
%: (def) No annotations
% annote,%: Annotations
%--------------------
%PRESENTATIONS:
%: (def) Do not add presentation type
% pres,%: Add presentation, speaker not highlighted
% pres,pres-bf,%: Presentation, speaker bold face
% pres,pres-it,%: Presentaion, speaker italic
% pres,pres-sc,%: Presentaion, speaker in small caps
%--------------------
%ORDERING OF REFERENCES (if non-author/year and non-alph)
%: (def) Alphabetical
% seq-no,%: Citation order
% seq-yr,%: Year ordered
% seq-yrr,%: Reverse year ordered
%--------------------
%ORDERING OF REFERENCES (if author-year citations)
% %: (def) Alphabetical
% seq-lab,%: By label
% seq-labc,%: By label and cite order
% seq-key,%: By label and cite key
% seq-yr,%: Year ordered
% seq-yrr,%: Reverse year ordered
% seq-no,%: Citation order
%--------------------
%ORDER ON VON PART (if not citation order)
%: (def) Sort on von part
% vonx,%: Sort without von part
%--------------------
%IGNORE FIRST NAMES (if author-year citations)
% %: (def) Respect first names
% xintls,%: Sort on surname only
%--------------------
%AUTHOR NAMES:
% ed-au,%: Full, surname last
% nm-revf,%: Full, surname first
nm-init,ed-au,%: Initials + surname
% nm-rev,%: Surname + initials
% nm-rv,%: Surname + dotless initials
% nm-rvvc,%: Surname + comma + spaceless initials
% nm-rvx,%: Surname + pure initials
% nm-rvcx,%: Surname + comma + pure initials
% nm-rvv,%: Surname + spaceless initials
% nm-rev1,%: Only first name reversed, initials
% nm-revv1,%: First name reversed, with full names
%--------------------
%EDITOR NAMES IN COLLECTIONS (if author names reversed)
% ed-rev,%: Editor names reversed
%--------------------
%POSITION OF JUNIOR (if author names reversed)
% jnrlst,%: Junior comes last
% %: (def) Junior between
%--------------------
%JUNIOR PART IN THE CITATION (if author-year citations)
% %: (def) No `junior' part in the citations
% jnrlab,%: `Junior' in citations
%--------------------
%PUNCTUATION BETWEEN AUTHOR NAMES:
%: (def) Author names separated by commas
% aunm-semi,%: Names separated by semi-colon
% aunm-sl,%: Names separated by slash
%--------------------
%ADJACENT REFERENCES WITH REPEATED NAMES:
%: (def) Author/editor names always present
% nmdash,%: Repeated author/editor names replaced by dash
% nmdash,nmd-2,%: Repeated author/editor names replaced by 2 dashes
% nmdash,nmd-3,%: Repeated author/editor names replaced by 3 dashes
%--------------------
%NUMBER OF AUTHORS IN BIBLIOGRAPHY:
% %: (def) All authors
nmlm,%: Limited authors
%--------------------
x3,%: Maximum of 3 authors
m3,%: Minimum of 3 authors
%AUTHORS IN CITATIONS:
% %: (def) One author et al
mcite,%: Some other truncation scheme
%--------------------
%MAX AUTHORS BEFORE ET AL: (if regular cite not selected)
% mct-1,%: One et al
% mct-2,%: One, Two et al
mct-3,%: One, Two, Three et al
% mct-4,%: One, Two, Three, Four et al
% mct-5,%: One, Two, Three, Four, Five et al
% mct-6,%: One, Two, Three, Four, Five, Six et al
%--------------------
%MAX AUTHORS WITHOUT ET AL: (if regular cite not selected)
% mct-x2,%: Two authors without truncating
mct-x3,%: Three authors
% mct-x4,%: Four authors
% mct-x5,%: Five authors
% mct-x6,%: Six authors
%--------------------
%TYPEFACE FOR AUTHORS IN LIST OF REFERENCES:
%: (def) Normal font for author names
% nmft,nmft-sc,%: Small caps authors
% nmft,nmft-it,%: Italic authors
% nmft,nmft-bf,%: Bold authors
% nmft,nmft-def,%: User defined author font
%--------------------
%FONT FOR FIRST NAMES (if non-default font for authors)
% %: (def) First names same font as surnames
% fnm-rm,%: First names in normal font
% fnm-def,%: First names in user defined font
%--------------------
%EDITOR NAMES IN INCOLLECTION ETC:
% %: (def) Editors incollection normal font
% nmfted,%: Editors incollection like authors
%--------------------
%FONT FOR `AND' IN LIST:
% %: (def) `And' in author font
% nmand-rm,%: `And' in normal font
%--------------------
%FONT OF CITATION LABELS IN TEXT (if author-year citations)
% %: (def) Cited authors plain
% lab,lab-it,%: Cited authors italic
% lab,lab-sc,%: Cited authors small caps
% lab,lab-bf,%: Cited authors bold
% lab,lab-def,%: User defined citation font
%--------------------
%FONT FOR `AND' IN CITATIONS (if non-default font for citation lables)
% %: (def) Cited `and' in author font
% and-rm,%: Cited `and' in normal font
%--------------------
%FONT OF EXTRA LABEL (The extra letter on the year)
% %: (def) Extra label plain
% xlab-it,%: Extra label italic
%--------------------
%LABEL WHEN AUTHORS MISSING (if author-year citations)
% keyxyr,%: Year blank when KEY replaces missing author
% %: (def) Year included when KEY replaces missing author
%--------------------
%MISSING DATE (if author-year citations)
% %: (def) Missing date set to ????
% blkyear,%: Missing date left blank
%--------------------
%DATE POSITION:
%: (def) Date at end
% dt-beg,%: Date after authors
% dt-jnl,%: Date part of journal spec.
% dt-end,%: Date at very end
%--------------------
%DATE FORMAT (if non author-year citations)
%: (def) Plain month and year
% yr-par,%: Date in parentheses
% yr-brk,%: Date in brackets
% yr-col,%: Date preceded by colon
% yr-per,%: Date preceded by period
% yr-com,%: Date preceded by comma
% yr-blk,%: Date preceded by space
%--------------------
%SUPPRESS MONTH:
%: (def) Date is month and year
% xmth,%: Date is year only
%--------------------
%REVERSED DATE (if including month)
%: (def) Date as month year
% dtrev,%: Date as year month
%--------------------
%DATE FORMAT (if author-year citations)
% %: (def) Year plain
% yr-par,%: Year in parentheses
% yr-brk,%: Year in brackets
% yr-col,%: Year preceded by colon
% yr-per,%: Year preceded by period
% yr-com,%: Date preceded by comma
% yr-blk,%: Year preceded by space
%--------------------
%INCLUDE MONTHS:
% %: (def) Date is year only
% aymth,%: Include month in date
%--------------------
%REVERSED DATE (if including month)
% %: (def) Date as month year
% dtrev,%: Date as year month
%--------------------
%DATE PUNCTUATION (if date not at end)
% %: (def) Date with standard block punctuation
% yrp-col,%: Colon after date
% yrp-semi,%: Semi-colon after date
% yrp-per,%: Period after date
% yrp-x,%: No punct. after date
%--------------------
%BLANK AFTER DATE:
% %: (def) Space after date
% yrpp-xsp,%: No space after date
%--------------------
%DATE FONT:
%: (def) Date in normal font
% dtbf,%: Date in bold face
%--------------------
%TRUNCATE YEAR (if author-year citations)
% note-yr,%: Year text full
% %: (def) Year truncated
%--------------------
%TITLE OF ARTICLE:
% %: (def) Title plain
% tit-it,%: Title italic
% tit-qq,qt-s,%: Title and punctuation in single quotes
tit-qq,%: Title and punctuation in double quotes
% tit-qq,qt-g,%: Title and punctuation in guillemets
% tit-qq,qt-s,qx,%: Title in single quotes
% tit-qq,qx,%: Title in double quotes
% tit-qq,qt-g,qx,%: Title in guillemets
%--------------------
%COLLECTION/PROCEEDINGS TITLES (if quoted title)
% bt-qq,%: Quote collection and proceedings titles
%: (def) Collection and proceedings titles not in quotes
%--------------------
%CAPITALIZATION OF ARTICLE TITLE:
% %: (def) Sentence style
atit-u,%: Title style
%--------------------
%ARTICLE TITLE PRESENT:
%: (def) Article title present
% jtit-x,%: No article title
%--------------------
%JOURNAL NAMES:
%: (def) Periods in journal names
% jxper,%: Dotless journal names
%--------------------
%JOURNAL NAME FONT:
%: (def) Journal name italics
% jttl-rm,%: Journal name normal
%--------------------
%THESIS TITLE:
%: (def) Thesis titles like books
% thtit-a,%: Thesis title like article
% thtit-x,%: No thesis title
%--------------------
%TECHNICAL REPORT TITLE:
%: (def) Tech. report title like articles
% trtit-b,%: Tech. report title like books
%--------------------
%TECHNICAL REPORT NUMBER:
%: (def) Tech. report and number plain
% trnum-it,%: Tech. report and number italic
%--------------------
%JOURNAL VOLUME:
%: (def) Volume plain
% vol-it,%: Volume italic
% vol-bf,%: Volume bold
% vol-2bf,%: Volume and number bold
%--------------------
%JOURNAL VOL AND NUMBER:
% %: (def) Journal vol(num)
% vnum-sp,%: Journal vol (num)
% vnum-cm,%: Journal vol, num
vnum-nr,%: Journal vol, no. num
% vnum-h,%: Journal vol, \# number
% vnum-b,%: Journal vol number
% vnum-x,%: Journal vol, without number
%--------------------
%VOLUME PUNCTUATION:
% %: (def) Volume with colon
% volp-sp,%: Volume with colon and space
% volp-semi,%: Volume with semi-colon
volp-com,%: Volume with comma
% volp-blk,%: Volume with blank
%--------------------
%YEAR IN JOURNAL SPECIFICATION:
%: (def) Journal year like others
% jdt-v,%: Journal vol(year)
% jdt-vs,%: Journal vol (year)
% jdt-p,%: Year with pages
% jdt-pc,%: Year, comma, pages
%--------------------
%PAGE NUMBERS:
%: (def) Start and stop page numbers
% jpg-1,%: Only start page number
%--------------------
%LARGE PAGE NUMBERS:
%: (def) No separators for large page numbers
% pgsep-c,%: Comma inserted over 9999
% pgsep-s,%: Thin space inserted over 9999
% pgsep-p,%: Period inserted over 9999
%--------------------
%WORD `PAGE' IN ARTICLES:
% %: (def) Article pages numbers only
jwdpg,%: Include `page' in articles
%--------------------
%POSITION OF PAGES:
%: (def) Pages given mid text
% pp-last,%: Pages at end
%--------------------
%WORD `VOLUME' IN ARTICLES:
% %: (def) Article volume as number only
jwdvol,%: Include `volume' in articles
%--------------------
%NUMBER AND SERIES FOR COLLECTIONS:
num-xser,%: Allows number without series
% %: (def) Standard BibTeX
%--------------------
%POSITION OF NUMBER AND SERIES:
%: (def) After chapter and pages
% numser,%: Just before publisher
%--------------------
%VOLUME AND SERIES FOR BOOKS/COLLECTIONS:
%: (def) Vol. 23 of Series
% ser-vol,%: Series, vol. 23
%--------------------
%POSITION OF VOLUME AND SERIES FOR INCOLLECTIONS:
%: (def) Series and volume after the editors
% ser-ed,%: Series and volume after booktitle
%--------------------
%JOURNAL NAME PUNCTUATION:
%: (def) Comma after journal
% jnm-x,%: Space after journal
%--------------------
%BOOK TITLE:
%: (def) Book title italic
% btit-rm,bt-rm,%: Book title plain
%--------------------
%PAGES IN BOOKS:
%: (def) Pages in book plain
% bkpg-par,%: Pages in book in parentheses
% bkpg-x,%: Pages in book bare
%--------------------
%TOTAL PAGES OF A BOOK:
%: (def) Total book pages not printed
% pg-bk,%: For book: 345 pages
% pg-bk,pg-pre,%: Total book pages before publisher
%--------------------
%PUBLISHER ADDRESS:
%: (def) Publisher, address
% add-pub,%: Address: Publisher
%--------------------
%PUBLISHER IN PARENTHESES:
%: (def) Publisher as normal block
% pub-par,%: Publisher in parentheses
% pub-date,%: Publisher and date in parentheses
% pub-date,pub-xc,%: Publisher and date in parentheses, no comma
% pub-date,pub-xpar,%: Publisher and date without parentheses
% pub-date,pub-xpar,pub-xc,%: Publisher and date, no parentheses, no comma
%--------------------
%PUBLISHER POSITION:
%: (def) Publisher after chapter, pages
% pre-pub,%: Publisher before chapter, pages
% pre-edn,%: Publisher after edition
%--------------------
%ISBN NUMBER:
% isbn,%: Include ISBN
%: (def) No ISBN
%--------------------
%ISSN NUMBER:
% issn,%: Include ISSN
%: (def) No ISSN
%--------------------
%DOI NUMBER:
% doi,%: Include DOI
% url-doi,%: Format DOI as URL //dx.doi.org/doi
% agu-doi,doi,%: Insert DOI AGU style
%: (def) No DOI
%--------------------
%`EDITOR' AFTER NAMES (EDITED BOOKS WITHOUT AUTHORS):
% %: (def) Word `editor' after name
edpar,%: `Name (editor),'
% edpar,bkedcap,%: `Name (Editor),'
% edparc,%: `Name, (editor)'
% edparc,bkedcap,%: `Name, (Editor)'
% edparxc,%: `Name (editor)'
% edparxc,bkedcap,%: `Name (Editor)'
%--------------------
%EDITOR IN COLLECTIONS:
% %: (def) Same as for edited book
% edby,%: In booktitle, edited by ..
% edby-par,%: In booktitle (edited by ..)
% edby-parc,%: In booktitle, (edited by ..)
% edby,edbyx,%: In booktitle, editor ..
% edby,edbyw,%: In booktitle, (editor) ..
edby-par,edbyx,%: In booktitle (editor..)
% edby-parc,edbyx,%: In booktitle, (editor..)
% edby,edbyy,%: In booktitle, .., editor
% edby-par,edbyy,%: In booktitle (.., editor)
%--------------------
%CAPITALIZE `EDITOR' OR `EDITED BY' (if editor capitalizable)
%: (def) `(editor,..)' or `(edited by..)'
% edcap,%: `(Editor,..)' or `(Edited by..)'
%--------------------
%PUNCTUATION BETWEEN SECTIONS (BLOCKS):
%: (def) \newblock after blocks
% blk-com,%: Comma between blocks
% blk-com,com-semi,%: Semi-colon between blocks
% blk-com,com-blank,%: Blanks between blocks
% blk-tit,%: Period after titles of articles, books, etc
% blk-tit,tit-col,%: Colon after titles of articles, books, etc
% blk-tita,%: Period after titles of articles
% blk-tita,tit-col,%: Colon after titles of articles
%--------------------
%PUNCTUATION BEFORE NOTES (if not using \newblock)
% %: (def) Notes have regular punctuation
% blknt,%: Notes preceded by period
%--------------------
%PUNCTUATION AFTER AUTHORS:
%: (def) Author block normal
% au-col,%: Author block with colon
%--------------------
%PUNCTUATION AFTER `IN':
% %: (def) Space after `in'
% in-col,%: Colon after `in'
% in-it,%: Italic `in'
% in-col,in-it,%: Italic `in' and colon
in-x,%: No word `in'
%--------------------
%`IN' WITH JOURNAL NAMES (if using 'in' with collections)
% %: (def) No `in' before journal name
% injnl,%: Add `in' before journal name
%--------------------
%FINAL PUNCTUATION:
%: (def) Period at very end
% fin-bare,%: No period at end
%--------------------
%ABBREVIATE WORD `PAGES' (if not using external language file)
% %: (def) `Page(s)'
pp,%: `Page' abbreviated
% ppx,%: `Page' omitted
%--------------------
%ABBREVIATE WORD `EDITORS':
%: (def) `Editor(s)'
% ed,%: `Editor' abbreviated
%--------------------
%OTHER ABBREVIATIONS:
%: (def) No abbreviations
% abr,%: Abbreviations
%--------------------
%ABBREVIATION FOR `EDITION' (if abbreviating words)
% %: (def) `Edition' abbreviated as `edn'
% ednx,%: `Edition' abbreviated as `ed'
%--------------------
%MONTHS WITH DOTS:
% %: (def) Months with dots
% mth-bare,%: Months without dots
%--------------------
%EDITION NUMBERS:
xedn,%: Editions as in database
% %: (def) Write out editions
% ord,%: Numerical editions
%--------------------
%Reading external language file \cfile=
%STORED JOURNAL NAMES:
%: (def) Full journal names
% jabr,%: Abbreviated journal names
% jabr,jaa,%: Abbreviated with astronomy shorthands
%--------------------
%AMPERSAND:
%: (def) Use word `and'
% amper,%: Use ampersand
% varand,%: Use \BIBand
%--------------------
%COMMA BEFORE `AND':
%: (def) Comma before `and'
% and-xcom,%: No comma before `and'
% and-com,%: Comma even with 2 authors
%--------------------
%COMMA BEFORE `AND' EVEN FOR COLLECTION EDITORS (if using comma before `and' with authors)
% and-com-ed,%: Comma with 2 editors
% %: (def) Two editors without comma
%--------------------
%NO `AND' IN REFERENCE LIST:
%: (def) With `and'
% xand,%: No `and'
%--------------------
%COMMA BEFORE `ET AL':
%: (def) Comma before `et al'
% etal-xc,%: No comma before `et al'
%--------------------
%FONT OF `ET AL':
% %: (def) Plain et al
etal-it,%: Italic et al
% etal-rm,%: Roman et al
%--------------------
%ADDITIONAL REVTeX DATA FIELDS:
%: (def) No additional fields
% revdata,eprint,url,url-blk,%: Include REVTeX data fields
%--------------------
%E-PRINT DATA FIELD: (without REVTeX fields)
%: (def) Do not include eprint field
% eprint,%: Include eprint and archive fields
%--------------------
%URL ADDRESS: (without REVTeX fields)
% %: (def) No URL
url,url-blk,%: Include URL
% url,url-nt,%: URL as note
% url,url-nl,%: URL on new line
%--------------------
%REFERENCE COMPONENT TAGS:
%: (def) No reference component tags
% bibinfo,%: Reference component tags
%--------------------
%EMPHASIS: (affects all so-called italics)
% %: (def) Use emphasis
em-it,%: Use true italics
% em-x,%: No italics
% em-ul,%: Underlining
%--------------------
%COMPATIBILITY WITH PLAIN TEX:
nfss,%: Use LaTeX commands
% plntx,%: Use only Plain TeX
%--------------------
}}
\generate{\file{my_alphorder.bst}{\MBopts}}
\endbatchfile
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment