1
% Hypertex version of the AMSalpha bibliographic style, ver. 0.8, Based on:
3
%%% ====================================================================
4
%%% @BibTeX-style-file{
5
%%% filename = "amsalpha.bst",
7
%%% date = "2000/03/27",
8
%%% time = "13:49:36 EST",
9
%%% checksum = "00166 1404 4124 29978",
10
%%% author = "American Mathematical Society",
11
%%% address = "American Mathematical Society,
12
%%% Technical Support,
13
%%% Electronic Products and Services,
15
%%% Providence, RI 02940,
17
%%% telephone = "401-455-4080 or (in the USA and Canada)
18
%%% 800-321-4AMS (321-4267)",
19
%%% FAX = "401-331-3842",
20
%%% email = "tech-support@ams.org (Internet)",
21
%%% copyright = "Copyright 1995 American Mathematical Society,
22
%%% all rights reserved. Copying of this file is
23
%%% authorized only if either:
24
%%% (1) you make absolutely no changes to your copy,
25
%%% including name; OR
26
%%% (2) if you do make changes, you first rename it
27
%%% to some other name.",
28
%%% codetable = "ISO/ASCII",
29
%%% keywords = "bibtex, bibliography, amslatex, ams-latex",
30
%%% supported = "yes",
31
%%% abstract = "BibTeX bibliography style `amsalpha' for BibTeX
32
%%% versions 0.99a or later and LaTeX version 2e.
33
%%% Produces alphabetic-label bibliography items in
34
%%% a form typical for American Mathematical Society
36
%%% docstring = "The checksum field above contains a CRC-16
37
%%% checksum as the first value, followed by the
38
%%% equivalent of the standard UNIX wc (word
39
%%% count) utility output of lines, words, and
40
%%% characters. This is produced by Robert
41
%%% Solovay's checksum utility.",
43
%%% ====================================================================
45
% Modified by Jacques Distler, 7/2010
47
% Added support for Eprint archives.
49
% url, collaboration, report and SLACcitation fields
53
% The following are equivalent:
55
% eprint = "hep-th/9605023"
57
% eprint = "hep-th/9605023"
60
% \href{http://arxiv.org/abs/hep-th/9605023}{{\tt hep-th/9605023}}
62
% in the bibliographic output at the appropriate point. More generally,
63
% if the archive field is present, we produce a URL of the form
64
% "archive/eprint" as the first argument of the \href. If absent, the base
65
% URL defaults to "http://arxiv.org/abs"
66
% If you are using a hypertex macropackage, like hyperref.sty, this command
67
% will create a link to the eprint at Los Alamos (or wherever).
69
% "New-style" arXiv identifiers are also supported.
71
% archivePrefix = "arXiv",
72
% eprint = "0707.3168",
73
% primaryClass = "hep-th",
77
% \href{http://arxiv.org/abs/0707.3168}{{\tt arXiv:0707.3168 [hep-th]}}
79
% Another (non-arXiv) example:
81
% archive = "http://cogprints.org",
83
% archivePrefix = "Cogprints",
87
% \href{http://cogprints.org/5542}{{\tt Cogprints:5542}}
93
% field is present, then the journal reference becomes a
94
% clickable hyperlink to the online journal version of the paper.
96
% The bibtex output produced by SPIRES, while far from perfect, is pretty
97
% suitable for use with this style. Indeed, this style was designed with
101
% See the file btxbst.doc for extra documentation other than
102
% what is included here. And see btxhak.tex for a description
103
% of the BibTeX language and how to use it.
105
% This defines the types of fields that can occur in a database entry
106
% for this particular bibliography style. Except for `language',
107
% this is the standard list from alpha.bst.
109
%% Types of entries currently allowed in a BibTeX file:
111
%% ARTICLE -- An article from a journal or magazine.
113
%% BOOK -- A book with an explicit publisher.
115
%% BOOKLET -- A work that is printed and bound,
116
%% but without a named publisher or sponsoring institution.
118
%% CONFERENCE -- The same as INPROCEEDINGS,
119
%% included for Scribe compatibility.
121
%% INBOOK -- A part of a book,
122
%% which may be a chapter (or section or whatever) and/or a range of pages.
124
%% INCOLLECTION -- A part of a book having its own title.
126
%% INPROCEEDINGS -- An article in a conference proceedings.
128
%% MANUAL -- Technical documentation.
130
%% MASTERSTHESIS -- A Master's thesis.
132
%% MISC -- Use this type when nothing else fits.
134
%% PHDTHESIS -- A PhD thesis.
136
%% PROCEEDINGS -- The proceedings of a conference.
138
%% TECHREPORT -- A report published by a school or other institution,
139
%% usually numbered within a series.
141
%% UNPUBLISHED -- A document having an author and title, but not formally
180
{ label extra.label sort.label bysame }
182
% Removed after.sentence, after.block---not needed.
184
INTEGERS { output.state before.all mid.sentence after.quote after.sentence
185
after.quoted.block after.block }
187
FUNCTION {init.state.consts}
191
#3 'after.sentence :=
192
#4 'after.quoted.block :=
203
{ duplicate$ ":::: `" swap$ * "'" * top$
207
{"STACK====================================================================="
210
"ENDSTACK=================================================================="
232
FUNCTION {field.or.null}
242
{ "\emph{" swap$ * "}" * }
249
{ "{\tt " swap$ * "}" * }
253
% n.dashify is used to make sure page ranges get the TeX code
254
% (two hyphens) for en-dashes.
260
{ t #1 #1 substring$ "-" =
261
{ t #1 #2 substring$ "--" = not
263
t #2 global.max$ substring$ 't :=
265
{ { t #1 #1 substring$ "-" = }
267
t #2 global.max$ substring$ 't :=
273
{ t #1 #1 substring$ *
274
t #2 global.max$ substring$ 't :=
281
% tie.or.space.connect connects two items with a ~ if the
282
% second item is less than 3 letters long, otherwise it just puts an
285
FUNCTION {tie.or.space.connect}
286
{ duplicate$ text.length$ #3 <
293
FUNCTION {add.space.if.necessary}
300
% either.or.check gives a warning if two mutually exclusive fields
301
% were used in the database.
303
FUNCTION {either.or.check}
306
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
310
% output.nonnull is called by output.
312
FUNCTION {output.nonnull}
313
% remove the top item from the stack because it's in the way.
315
output.state mid.sentence =
316
% If we're in mid-sentence, add a comma to the new top item and write it
318
% Otherwise, if we're at the beginning of a bibitem,
319
{ output.state before.all =
320
% just write out the top item from the stack;
322
% and the last alternative is that we're at the end of the current
323
% bibitem, so we add a period to the top stack item and write it out.
324
{ add.period$ " " * write$ }
326
mid.sentence 'output.state :=
329
% Put the top item back on the stack that we removed earlier.
333
% Output checks to see if the stack top is empty; if not, it
334
% calls output.nonnull to write it out.
343
% Standard warning message for a missing or empty field. For the user
344
% we call any such field `missing' without respect to the distinction
345
% made by BibTeX between missing and empty.
347
FUNCTION {missing.warning}
348
{ "missing " swap$ * " in " * cite$ * warning$ }
350
% Output.check is like output except that it gives a warning on-screen
351
% if the given field in the database entry is empty. t is the field
354
FUNCTION {output.check}
357
{ pop$ t missing.warning }
362
FUNCTION {output.bibitem}
370
% This empty string is the first thing that will be written
371
% the next time write$ is called. Done this way because each
372
% item is saved on the stack until we find out what punctuation
373
% should be added after it. Therefore we need an empty first item.
375
before.all 'output.state :=
378
FUNCTION {output.nonempty.mrnumber}
379
{ duplicate$ missing$
385
{ " \MR{" swap$ * "}" * write$ }
390
{ after.quote 'output.state :=
396
% mrnumber output.nonempty.mrnumber
400
% Removed new.block, new.block.checka, new.block.checkb, new.sentence,
401
% new.sentence.checka, and new.sentence.checkb functions here, since they
402
% don't seem to be needed in the AMS style. Also moved some real
403
% basic functions like `and' and 'or' earlier in the file.
406
{ output.state before.all =
408
{ output.state after.quote =
409
{ after.quoted.block 'output.state := }
410
{ after.block 'output.state := }
416
FUNCTION {new.sentence}
417
{ output.state after.block =
419
{ output.state before.all =
421
{ after.sentence 'output.state := }
427
INTEGERS { nameptr namesleft numnames }
429
% The extra section to write out a language field was added
430
% for AMSPLAIN.BST. Not present in plain.bst.
432
FUNCTION {format.language}
435
{ " (" language * ")" * }
439
% This version of format.names puts names in the format
441
% First von Last, Jr.
443
% (i.e., first name first, no abbreviating to initials).
445
FUNCTION {format.names}
448
s num.names$ 'numnames :=
449
numnames 'namesleft :=
451
{ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
468
nameptr #1 + 'nameptr :=
469
namesleft #1 - 'namesleft :=
474
FUNCTION {format.authors}
479
{ author format.names }
485
FUNCTION {format.editors}
488
{ editor format.names
489
editor num.names$ #1 >
497
FUNCTION {format.nonauthor.editors}
500
{ editor format.names
501
editor num.names$ #1 >
509
FUNCTION {format.archive}
513
{ archivePrefix ":" *}
517
FUNCTION {format.title}
520
{ title "t" change.case$ emphasize }
524
FUNCTION {format.primaryClass}
528
{ " [" primaryClass * "]" *}
532
FUNCTION {format.eprint}
536
{"\href{http://arxiv.org/abs/" eprint * "}" *
537
"{{\tt " * format.archive * eprint *
538
format.primaryClass * "}}" *}
539
{"\href{" archive * "/" * eprint * "}" *
540
"{{\tt " * format.archive * eprint *
541
format.primaryClass * "}}" *}
547
FUNCTION {format.url}
550
{"\url{" url * "}" *}
559
{"\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" *}
565
FUNCTION {format.report}
572
FUNCTION {format.journal.vol.year}
574
{ "" "journal name" missing.warning }
578
{ " \textbf{" * volume * "}" * }
581
{ "year" missing.warning }
582
{ " (" * year * ")" * }
588
% For formatting the issue number for a journal article.
590
FUNCTION {format.number}
597
% For formatting miscellaneous dates
599
FUNCTION {format.date}
603
{ "there's a month but no year in " cite$ * warning$
610
{ month " " * year * }
616
FUNCTION {format.collaboration}
617
{ collaboration empty$
619
{ "{\bf " collaboration * "} " * "Collaboration" * }
623
FUNCTION {format.SLACcitation}
624
{ SLACcitation empty$
626
{ newline$ SLACcitation output "" newline$ }
630
%% The volume, series and number information is sort of tricky.
631
%% This code handles it as follows:
632
%% If the series is present, and the volume, but not the number,
633
%% then we do "\emph{Book title}, Series Name, vol. 000"
634
%% If the series is present, and the number, but not the volume,
635
%% then we do "\emph{Book title}, Series Name, no. 000"
636
%% If the series is present, and both number and volume,
637
%% then we do "\emph{Book title}, vol. XX, Series Name, no. 000"
638
%% Finally, if the series is absent,
639
%% then we do "\emph{Book title}, vol. XX"
640
%% or "\emph{Book title}, no. 000"
641
%% and if both volume and number are present, give a warning message.
643
FUNCTION {format.bookvolume.series.number}
645
{ "" % Push the empty string as a placeholder in case everything else
649
{ pop$ series } % if series is not empty put in stack
653
{ duplicate$ empty$ % if no preceding material,
654
'skip$ % do nothing, otherwise
655
{ ", " * } % add a comma and space to separate.
657
"no." number tie.or.space.connect * % add the number information
661
%% If the volume is NOT EMPTY:
662
{ "vol." volume tie.or.space.connect % vol. XX
666
{ series ", " * swap$ *} % Series Name, vol. XX
670
{ "can't use both volume and number if series info is missing"
672
"in BibTeX entry type `" type$ * "'" * top$
674
{ ", " * series * ", no." * number tie.or.space.connect }
681
} % end of format.bookvolume.series.number
683
%% format.inproc.title.where.editors is used by inproceedings entry types
685
%% No case changing or emphasizing for the title. We want initial
687
%% We add parentheses around the address (place where conference
689
%% Likewise we add parentheses around the editors' names.
691
FUNCTION {format.inproc.title.address.editors}
697
{ add.space.if.necessary "(" * address * ")" * }
701
{ add.space.if.necessary "(" * format.nonauthor.editors * ")" * }
707
%% format.incoll.title.editors is similar to format.inproc... but
708
%% omits the address. For collections that are not proceedings volumes.
710
FUNCTION {format.incoll.title.editors}
716
add.space.if.necessary "(" * format.nonauthor.editors * ")" *
723
FUNCTION {format.edition}
726
{ output.state mid.sentence =
727
{ edition "l" change.case$ " ed." * }
728
{ edition "t" change.case$ " ed." * }
734
INTEGERS { multiresult }
736
FUNCTION {multi.page.check}
745
swap$ duplicate$ "," =
748
{ #1 'multiresult := }
749
{ t #2 global.max$ substring$ 't := }
756
FUNCTION {format.pages}
763
FUNCTION {format.book.pages}
766
{ pages multi.page.check
767
{ "pp.~" pages n.dashify * }
774
FUNCTION {format.chapter.pages}
779
{ type "l" change.case$ " " * }
784
{ ", " * format.book.pages * }
790
FUNCTION {empty.misc.check}
791
{ author empty$ title empty$ howpublished empty$
792
month empty$ year empty$ note empty$
795
{ "all relevant fields are empty in " cite$ * warning$ }
800
FUNCTION {format.thesis.type}
804
type "t" change.case$
809
FUNCTION {format.tr.number}
816
{ number tie.or.space.connect }
820
% The format.crossref functions haven't been paid much attention
821
% at the present time (June 1990) and could probably use some
824
FUNCTION {format.article.crossref}
827
{ "need key or journal for " cite$ * " to crossref " * crossref *
836
" \cite{" * crossref * "}" *
839
FUNCTION {format.crossref.editor}
840
{ editor #1 "{vv~}{ll}" format.name$
841
editor num.names$ duplicate$
846
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
848
{ " and " * editor #2 "{vv~}{ll}" format.name$ * }
856
FUNCTION {format.book.crossref}
858
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
861
{ "vol." volume tie.or.space.connect
866
editor field.or.null author field.or.null =
870
{ "need editor, key, or series for " cite$ * " to crossref " *
880
{ format.crossref.editor * }
882
" \cite{" * crossref * "}" *
885
FUNCTION {format.incoll.inproc.crossref}
887
editor field.or.null author field.or.null =
891
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
895
{ "in \emph{" booktitle * "}" * }
901
{ "in " format.crossref.editor * }
903
" \cite{" * crossref * "}" *
906
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
908
% The main functions for each entry type.
910
% journal, vol and year are formatted together because they are
911
% not separated by commas.
915
format.collaboration output
916
format.authors "author" output.check
917
format.title "title" output.check
921
{ format.journal.vol.year add.doi "journal, volume, and year" output.check
923
format.pages "pages" output.check
927
{format.eprint output}
928
{blank.sep format.report output format.eprint output}
931
{ format.article.crossref output.nonnull
932
format.pages "pages" output.check
943
format.SLACcitation output
949
format.collaboration output
951
{ format.editors "author and editor" output.check }
952
{ format.authors output.nonnull
954
{ "author and editor" editor either.or.check }
959
format.title add.doi "title" output.check
960
format.edition output
962
{ format.bookvolume.series.number output
963
publisher "publisher" output.check
966
{ format.book.crossref output.nonnull
969
format.date "year" output.check
978
format.SLACcitation output
984
format.authors output
985
format.title "title" output.check
996
format.SLACcitation output
1002
format.collaboration output
1004
{ format.editors "author and editor" output.check }
1005
{ format.authors output.nonnull
1007
{ "author and editor" editor either.or.check }
1012
format.title "title" output.check
1013
format.edition output
1015
{ format.bookvolume.series.number output
1016
format.chapter.pages "chapter and pages" output.check
1017
publisher "publisher" output.check
1020
{ format.chapter.pages "chapter and pages" output.check
1021
format.book.crossref output.nonnull
1024
format.date "year" output.check
1027
format.eprint output
1033
format.SLACcitation output
1037
FUNCTION {incollection}
1039
format.collaboration output
1040
format.authors "author" output.check
1041
format.title add.doi "title" output.check
1043
{ format.incoll.title.editors "booktitle" output.check
1044
format.bookvolume.series.number output
1045
publisher "publisher" output.check
1047
format.edition output
1048
format.date "year" output.check
1050
{ format.incoll.inproc.crossref output.nonnull
1053
format.book.pages output
1056
format.eprint output
1062
format.SLACcitation output
1066
FUNCTION {inproceedings}
1068
format.collaboration output
1069
format.authors "author" output.check
1070
format.title add.doi "title" output.check
1072
{ format.inproc.title.address.editors "booktitle" output.check
1073
format.bookvolume.series.number output
1076
format.date "year" output.check
1078
{ format.incoll.inproc.crossref output.nonnull
1081
format.book.pages output
1083
format.eprint output
1090
format.SLACcitation output
1094
FUNCTION {conference} { inproceedings }
1098
format.collaboration output
1100
{ organization empty$
1102
{ organization output.nonnull
1107
{ format.authors output.nonnull }
1109
format.title "title" output.check
1111
{ organization empty$
1116
{ organization output
1120
format.edition output
1123
format.eprint output
1131
FUNCTION {mastersthesis}
1133
format.authors "author" output.check
1134
format.title add.doi "title" output.check
1135
"Master's thesis" format.thesis.type output.nonnull
1136
school "school" output.check
1138
format.date "year" output.check
1139
format.book.pages output
1141
format.eprint output
1151
format.collaboration output
1152
format.authors output
1153
format.title add.doi output
1156
format.book.pages output
1158
format.eprint output
1168
FUNCTION {phdthesis}
1170
format.authors "author" output.check
1171
format.title add.doi "title" output.check
1172
"Ph.D. thesis" format.thesis.type output.nonnull
1173
school "school" output.check
1175
format.date "year" output.check
1176
format.book.pages output
1178
format.eprint output
1184
format.SLACcitation output
1188
FUNCTION {proceedings}
1191
{ organization output }
1192
{ format.editors output.nonnull }
1194
format.title add.doi "title" output.check
1195
format.bookvolume.series.number output
1199
{ organization output }
1202
format.date "year" output.check
1204
{ address output.nonnull
1207
{ organization output }
1210
format.date "year" output.check
1213
format.eprint output
1218
format.SLACcitation output
1223
FUNCTION {techreport}
1225
format.authors "author" output.check
1226
format.title "title" output.check
1227
format.tr.number output.nonnull
1228
institution "institution" output.check
1230
format.date "year" output.check
1231
format.eprint output
1237
FUNCTION {unpublished}
1239
format.authors "author" output.check
1240
format.title "title" output.check
1241
note "note" output.check
1243
format.eprint output
1246
format.SLACcitation output
1250
FUNCTION {default.type} { misc }
1252
MACRO {jan} {"January"}
1254
MACRO {feb} {"February"}
1256
MACRO {mar} {"March"}
1258
MACRO {apr} {"April"}
1262
MACRO {jun} {"June"}
1264
MACRO {jul} {"July"}
1266
MACRO {aug} {"August"}
1268
MACRO {sep} {"September"}
1270
MACRO {oct} {"October"}
1272
MACRO {nov} {"November"}
1274
MACRO {dec} {"December"}
1285
FUNCTION {chop.word}
1288
s #1 len substring$ =
1289
{ s len #1 + global.max$ substring$ }
1294
INTEGERS { et.al.char.used }
1296
FUNCTION {initialize.et.al.char.used}
1297
{ #0 'et.al.char.used :=
1300
EXECUTE {initialize.et.al.char.used}
1302
FUNCTION {format.lab.names}
1304
s num.names$ 'numnames :=
1307
{ #3 'namesleft := }
1308
{ numnames 'namesleft := }
1313
{ nameptr numnames =
1314
{ s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1315
{ "{\etalchar{+}}" *
1316
#1 'et.al.char.used :=
1318
{ s nameptr "{v{}}{l{}}" format.name$ * }
1321
{ s nameptr "{v{}}{l{}}" format.name$ * }
1323
nameptr #1 + 'nameptr :=
1324
namesleft #1 - 'namesleft :=
1328
{ "{\etalchar{+}}" *
1329
#1 'et.al.char.used :=
1334
{ s #1 "{v{}}{l{}}" format.name$
1335
duplicate$ text.length$ #2 <
1336
{ pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
1343
FUNCTION {author.key.label}
1346
{ cite$ #1 #3 substring$ }
1347
{ key #3 text.prefix$ }
1350
{ author format.lab.names }
1354
FUNCTION {author.editor.key.label}
1358
{ cite$ #1 #3 substring$ }
1359
{ key #3 text.prefix$ }
1362
{ editor format.lab.names }
1365
{ author format.lab.names }
1369
FUNCTION {author.key.organization.label}
1372
{ organization empty$
1373
{ cite$ #1 #3 substring$ }
1374
{ "The " #4 organization chop.word #3 text.prefix$ }
1377
{ key #3 text.prefix$ }
1380
{ author format.lab.names }
1384
FUNCTION {editor.key.organization.label}
1387
{ organization empty$
1388
{ cite$ #1 #3 substring$ }
1389
{ "The " #4 organization chop.word #3 text.prefix$ }
1392
{ key #3 text.prefix$ }
1395
{ editor format.lab.names }
1399
FUNCTION {calc.label}
1403
'author.editor.key.label
1404
{ type$ "proceedings" =
1405
'editor.key.organization.label
1407
'author.key.organization.label
1415
year field.or.null purify$ #-1 #2 substring$
1418
year field.or.null purify$ #-1 #4 substring$
1420
sortify 'sort.label :=
1423
FUNCTION {sort.format.names}
1427
s num.names$ 'numnames :=
1428
numnames 'namesleft :=
1434
s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
1435
nameptr numnames = t "others" = and
1439
nameptr #1 + 'nameptr :=
1440
namesleft #1 - 'namesleft :=
1445
FUNCTION {sort.format.title}
1449
"The " #4 t chop.word
1453
#1 global.max$ substring$
1456
FUNCTION {author.sort}
1459
{ "to sort, need author or key in " cite$ * warning$
1465
{ author sort.format.names }
1469
FUNCTION {author.editor.sort}
1473
{ "to sort, need author, editor, or key in " cite$ * warning$
1479
{ editor sort.format.names }
1482
{ author sort.format.names }
1486
FUNCTION {author.organization.sort}
1488
{ organization empty$
1490
{ "to sort, need author, organization, or key in " cite$ * warning$
1496
{ "The " #4 organization chop.word sortify }
1499
{ author sort.format.names }
1503
FUNCTION {editor.organization.sort}
1505
{ organization empty$
1507
{ "to sort, need editor, organization, or key in " cite$ * warning$
1513
{ "The " #4 organization chop.word sortify }
1516
{ editor sort.format.names }
1529
{ type$ "proceedings" =
1530
'editor.organization.sort
1532
'author.organization.sort
1542
year field.or.null sortify
1549
#1 entry.max$ substring$
1558
longest.label last.sort.label next.extra prev.author this.author
1561
INTEGERS { longest.label.width last.extra.num }
1563
FUNCTION {initialize.longest.label}
1564
{ "" 'longest.label :=
1565
#0 int.to.chr$ 'last.sort.label :=
1567
#0 'longest.label.width :=
1568
#0 'last.extra.num :=
1569
"abcxyz" 'prev.author :=
1573
FUNCTION {forward.pass}
1574
{ last.sort.label sort.label =
1575
{ last.extra.num #1 + 'last.extra.num :=
1576
last.extra.num int.to.chr$ 'extra.label :=
1578
{ "a" chr.to.int$ 'last.extra.num :=
1580
sort.label 'last.sort.label :=
1583
author empty$ { editor empty$ { "" } 'editor if$ } 'author if$
1585
this.author prev.author =
1586
{ "\bysame" 'bysame := }
1597
FUNCTION {reverse.pass}
1599
{ "a" 'extra.label := }
1602
label extra.label * 'label :=
1603
label width$ longest.label.width >
1604
{ label 'longest.label :=
1605
label width$ 'longest.label.width :=
1609
extra.label 'next.extra :=
1612
EXECUTE {initialize.longest.label}
1614
ITERATE {forward.pass}
1616
REVERSE {reverse.pass}
1618
FUNCTION {begin.bib}
1620
{ "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
1625
{ preamble$ write$ newline$ }
1627
"\providecommand{\bysame}{\leavevmode\hbox to3em{\hrulefill}\thinspace}"
1629
"\providecommand{\MR}{\relax\ifhmode\unskip\space\fi MR }"
1631
"% \MRhref is called by the amsart/book/proc definition of \MR."
1633
"\providecommand{\MRhref}[2]{%"
1635
" \href{http://www.ams.org/mathscinet-getitem?mr=#1}{#2}"
1639
"\providecommand{\href}[2]{#2}"
1641
"\begin{thebibliography}{" longest.label * "}" *
1647
EXECUTE {init.state.consts}
1649
ITERATE {call.type$}
1653
"\end{thebibliography}" write$ newline$
1658
%% {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
1659
%% 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
1660
%% Digits \0\1\2\3\4\5\6\7\8\9
1661
%% Exclamation \! Double quote \" Hash (number) \#
1662
%% Dollar \$ Percent \% Ampersand \&
1663
%% Acute accent \' Left paren \( Right paren \)
1664
%% Asterisk \* Plus \+ Comma \,
1665
%% Minus \- Point \. Solidus \/
1666
%% Colon \: Semicolon \; Less than \<
1667
%% Equals \= Greater than \> Question mark \?
1668
%% Commercial at \@ Left bracket \[ Backslash \\
1669
%% Right bracket \] Circumflex \^ Underscore \_
1670
%% Grave accent \` Left brace \{ Vertical bar \|
1671
%% Right brace \} Tilde \~}
'\\ No newline at end of file'