Move a tag
[latex2e.git] / latex2e-20160201 / required / babel / testfiles / tlb3145.lvt
blobed372ddd6539e1fd0f68d2395fea821ea4a45e61
1 \iffalse
2 >Number:         3145
3 >Synopsis:       ``nobreakspace -" inserted instead of ~ in \citet
4 >Arrival-Date:   Thu Jan  6 16:05:28 2000
5 >Originator:     m.heldoorn@lumc.nl  ( Marcel Heldoorn )
6 >Release:        LaTeX2e <1999/06/01> patch level 1
7 >Environment:
8  Hyphenation: Babel <v3.6z> and hyphenation patterns for american, british,
9 dutch, nohyphenation, loaded.
10  \@TeXversion: undefined (Standard setting for TeX3.141 and later)
11  \@currdir: macro:->./
12  \input@path: undefined (Standard setting)
13 >Description:
14 Description of bug:
15 I use Babel v3.6z 1999/08/23 and BiBTeX with natbib to use author year
16 citations.
17 Babel causes erroneous behavior: instead of Author et~al.(year) the output
18 in the DVI is:
19 Author et``nobreakspace -"al.(year)
21 I tested Babel v3.6m 1999/04/05 and it worked fine!
22 \fi
23 \input{test2e}
25 \documentclass{article}
27 \START
28 \FORMAT{LaTeX2e<1999/06/01>}
29 \CLASS{article}
30 \AUTHOR{m.heldoorn@lumc.nl  ( Marcel Heldoorn )}
31 \PACKAGE[english]{babel}
32 \PACKAGE{natbib}
34 \OMIT
35 \usepackage[english]{babel}
36 \usepackage{natbib}
38 \begin{filecontents}{tlb3145.bib}
39 @ARTICLE{ABEL1975,
40    author = {B. J. Abel and Ross J. Cosbie and N. O. Gibbon and R. M.
41 Jameson},
42    title = {Urethral pressure measurement after division of the external
43 sphincter},
44    journal = {Paraplegia.},
45    year = {1975},
46    volume = {13},
47    number = {1},
48    pages = {37--41},
49    month = {},
51 \end{filecontents}
53 \begin{filecontents}{tlb3145.bst}
55 %% This is file `bug.bst',
56 %% generated with the docstrip utility.
58 %% The original source files were:
60 %% merlin.mbs  (with options:
61 `,ay,nat,nm-rev,nmft,nmft-bf,dt-beg,yr-par,yrp-per,note-yr,atit-u,vol-bf,vnu
62 m-x,volp-com,jnm-x,add-pub,edby-parc,edbyx,blk-tit,pp,ed,abr,xedn,jabr,and-x
63 com,em-it,nfss')
64 %% ----------------------------------------
65 %% *** bug ***
67 %% Copyright 1994-1999 Patrick W Daly
68  % ===============================================================
69  % IMPORTANT NOTICE:
70  % This bibliographic style (bst) file has been generated from one or
71  % more master bibliographic style (mbs) files, listed above.
72  %
73  % This generated file can be redistributed and/or modified under the terms
74  % of the LaTeX Project Public License Distributed from CTAN
75  % archives in directory macros/latex/base/lppl.txt; either
76  % version 1 of the License, or any later version.
77  % ===============================================================
78  % Name and version information of the main mbs file:
79  % \ProvidesFile{merlin.mbs}[1999/03/18 3.88 (PWD)]
80  %   For use with BibTeX version 0.99a or later
81  %-------------------------------------------------------------------
82  % This bibliography style file is intended for texts in ENGLISH
83  % This is an author-year citation style bibliography. As such, it is
84  % non-standard LaTeX, and requires a special package file to function
85 properly.
86  % Such a package is    natbib.sty   by Patrick W. Daly
87  % The form of the \bibitem entries is
88  %   \bibitem[Jones et al.(1990)]{key}...
89  %   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
90  % The essential feature is that the label (the part in brackets) consists
91  % of the author names, as they should appear in the citation, with the year
92  % in parentheses following. There must be no space before the opening
93  % parenthesis!
94  % With natbib v5.3, a full list of authors may also follow the year.
95  % In natbib.sty, it is possible to define the type of enclosures that is
96  % really wanted (brackets or parentheses), but in either case, there must
97  % be parentheses in the label.
98  % The \cite command functions as follows:
99  %   \citet{key} ==>>                Jones et al. (1990)
100  %   \citet*{key} ==>>               Jones, Baker, and Smith (1990)
101  %   \citep{key} ==>>                (Jones et al., 1990)
102  %   \citep*{key} ==>>               (Jones, Baker, and Smith, 1990)
103  %   \citep[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)
104  %   \citep[e.g.][]{key} ==>>        (e.g. Jones et al., 1990)
105  %   \citep[e.g.][p. 32]{key} ==>>   (e.g. Jones et al., p. 32)
106  %   \citeauthor{key} ==>>           Jones et al.
107  %   \citeauthor*{key} ==>>          Jones, Baker, and Smith
108  %   \citeyear{key} ==>>             1990
109  %---------------------------------------------------------------------
111 ENTRY
112   { address
113     author
114     booktitle
115     chapter
116     edition
117     editor
118     howpublished
119     institution
120     journal
121     key
122     month
123     note
124     number
125     organization
126     pages
127     publisher
128     school
129     series
130     title
131     type
132     volume
133     year
134   }
135   {}
136   { label extra.label sort.label short.list }
138 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
140 FUNCTION {init.state.consts} { #0 'before.all :=
141   #1 'mid.sentence :=
142   #2 'after.sentence :=
143   #3 'after.block :=
146 STRINGS { s t }
148 FUNCTION {output.nonnull} { 's :=
149   output.state mid.sentence =
150     { ", " * write$ }
151     { output.state after.block =
152         { add.period$ write$
153           newline$
154           "\newblock " write$
155         }
156         { output.state before.all =
157             'write$
158             { add.period$ " " * write$ }
159           if$
160         }
161       if$
162       mid.sentence 'output.state :=
163     }
164   if$
165   s
168 FUNCTION {output} { duplicate$ empty$
169     'pop$
170     'output.nonnull
171   if$
174 FUNCTION {output.check} { 't :=
175   duplicate$ empty$
176     { pop$ "empty " t * " in " * cite$ * warning$ }
177     'output.nonnull
178   if$
181 FUNCTION {fin.entry} { add.period$
182   write$
183   newline$
186 FUNCTION {new.block} { output.state before.all =
187     'skip$
188     { after.block 'output.state := }
189   if$
192 FUNCTION {new.sentence} { output.state after.block =
193     'skip$
194     { output.state before.all =
195         'skip$
196         { after.sentence 'output.state := }
197       if$
198     }
199   if$
202 FUNCTION {add.blank} { " " * before.all 'output.state := }
204 FUNCTION {date.block} {
205   new.sentence
208 FUNCTION {not} { { #0 }
209     { #1 }
210   if$
213 FUNCTION {and} { 'skip$
214     { pop$ #0 }
215   if$
218 FUNCTION {or} { { pop$ #1 }
219     'skip$
220   if$
223 FUNCTION {new.block.checkb} { empty$
224   swap$ empty$
225   and
226     'skip$
227     'new.block
228   if$
231 FUNCTION {field.or.null} { duplicate$ empty$
232     { pop$ "" }
233     'skip$
234   if$
237 FUNCTION {emphasize} { duplicate$ empty$
238     { pop$ "" }
239     { "\textit{" swap$ * "}" * }
240   if$
243 FUNCTION {bolden} { duplicate$ empty$
244     { pop$ "" }
245     { "\textbf{" swap$ * "}" * }
246   if$
249 FUNCTION {bib.name.font} { bolden }
251 FUNCTION {bib.fname.font} { bib.name.font } FUNCTION {capitalize} { "u"
252 change.case$ "t"
253 change.case$ }
255 FUNCTION {space.word} { " " swap$ * " " * }
257  % Here are the language-specific definitions for explicit words.
258  % Each function has a name bbl.xxx where xxx is the English word.
259  % The language selected here is ENGLISH
260 FUNCTION {bbl.and} { "and"}
262 FUNCTION {bbl.etal} { "et~al." }
264 FUNCTION {bbl.editors} { "eds." }
266 FUNCTION {bbl.editor} { "ed." }
268 FUNCTION {bbl.edby} { "edited by" }
270 FUNCTION {bbl.edition} { "edn." }
272 FUNCTION {bbl.volume} { "vol." }
274 FUNCTION {bbl.of} { "of" }
276 FUNCTION {bbl.number} { "no." }
278 FUNCTION {bbl.nr} { "no." }
280 FUNCTION {bbl.in} { "in" }
282 FUNCTION {bbl.pages} { "pp." }
284 FUNCTION {bbl.page} { "p." }
286 FUNCTION {bbl.chapter} { "chap." }
288 FUNCTION {bbl.techrep} { "Tech. Rep." }
290 FUNCTION {bbl.mthesis} { "Master's thesis" }
292 FUNCTION {bbl.phdthesis} { "Ph.D. thesis" }
294 MACRO {jan} {"Jan."}
296 MACRO {feb} {"Feb."}
298 MACRO {mar} {"Mar."}
300 MACRO {apr} {"Apr."}
302 MACRO {may} {"May"}
304 MACRO {jun} {"Jun."}
306 MACRO {jul} {"Jul."}
308 MACRO {aug} {"Aug."}
310 MACRO {sep} {"Sep."}
312 MACRO {oct} {"Oct."}
314 MACRO {nov} {"Nov."}
316 MACRO {dec} {"Dec."}
318 MACRO {acmcs} {"ACM Comput. Surv."}
320 MACRO {acta} {"Acta Inf."}
322 MACRO {cacm} {"Commun. ACM"}
324 MACRO {ibmjrd} {"IBM J. Res. Dev."}
326 MACRO {ibmsj} {"IBM Syst.~J."}
328 MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
330 MACRO {ieeetc} {"IEEE Trans. Comput."}
332 MACRO {ieeetcad}
333  {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
335 MACRO {ipl} {"Inf. Process. Lett."}
337 MACRO {jacm} {"J.~ACM"}
339 MACRO {jcss} {"J.~Comput. Syst. Sci."}
341 MACRO {scp} {"Sci. Comput. Programming"}
343 MACRO {sicomp} {"SIAM J. Comput."}
345 MACRO {tocs} {"ACM Trans. Comput. Syst."}
347 MACRO {tods} {"ACM Trans. Database Syst."}
349 MACRO {tog} {"ACM Trans. Gr."}
351 MACRO {toms} {"ACM Trans. Math. Softw."}
353 MACRO {toois} {"ACM Trans. Office Inf. Syst."}
355 MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
357 MACRO {tcs} {"Theoretical Comput. Sci."}
360 INTEGERS { nameptr namesleft numnames }
362 FUNCTION {format.names} { 's :=
363   #1 'nameptr :=
364   s num.names$ 'numnames :=
365   numnames 'namesleft :=
366     { namesleft #0 > }
367     { s nameptr
368       "{vv~}{ll}{, jj}{, f.}" format.name$
369     't :=
370       nameptr #1 >
371         {
372           namesleft #1 >
373             { ", " * t * }
374             {
375               s nameptr "{ll}" format.name$ duplicate$ "others" =
376                 { 't := }
377                 { pop$ }
378               if$
379               t "others" =
380                 {
381                   " " * bbl.etal *
382                   bib.name.font
383                 }
384                 { bbl.and
385                   space.word * t *
386                 }
387               if$
388             }
389           if$
390         }
391         't
392       if$
393       nameptr #1 + 'nameptr :=
394       namesleft #1 - 'namesleft :=
395     }
396   while$
397   t "others" =
398     'skip$
399     { bib.name.font }
400   if$
401 } FUNCTION {format.names.ed} { 's :=
402   #1 'nameptr :=
403   s num.names$ 'numnames :=
404   numnames 'namesleft :=
405     { namesleft #0 > }
406     { s nameptr
407       "{f.~}{vv~}{ll}{, jj}"
408       format.name$
409       't :=
410       nameptr #1 >
411         {
412           namesleft #1 >
413             { ", " * t * }
414             {
415               s nameptr "{ll}" format.name$ duplicate$ "others" =
416                 { 't := }
417                 { pop$ }
418               if$
419               t "others" =
420                 {
422                   " " * bbl.etal *
423                 }
424                 { bbl.and
425                   space.word * t *
426                 }
427               if$
428             }
429           if$
430         }
431         't
432       if$
433       nameptr #1 + 'nameptr :=
434       namesleft #1 - 'namesleft :=
435     }
436   while$
439 FUNCTION {format.key} { empty$
440     { key field.or.null }
441     { "" }
442   if$
445 FUNCTION {format.authors} { author empty$
446     { "" }
447     { author format.names }
448   if$
451 FUNCTION {format.editors} { editor empty$
452     { "" }
453     { editor format.names
454       editor num.names$ #1 >
455         { ", " * bbl.editors * }
456         { ", " * bbl.editor * }
457       if$
458     }
459   if$
462 FUNCTION {format.in.editors} { editor empty$
463     { "" }
464     { editor format.names.ed
465     }
466   if$
469 FUNCTION {format.note} {
470  note empty$
471     { "" }
472     { note #1 #1 substring$
473       duplicate$ "{" =
474         'skip$
475         { output.state mid.sentence =
476           { "l" }
477           { "u" }
478         if$
479         change.case$
480         }
481       if$
482       note #2 global.max$ substring$ *
483     }
484   if$
487 FUNCTION {format.title} { title empty$
488     { "" }
489     { title
490     }
491   if$
494 FUNCTION {format.full.names} {'s :=
495   #1 'nameptr :=
496   s num.names$ 'numnames :=
497   numnames 'namesleft :=
498     { namesleft #0 > }
499     { s nameptr
500       "{vv~}{ll}" format.name$
501       't :=
502       nameptr #1 >
503         {
504           namesleft #1 >
505             { ", " * t * }
506             {
507               s nameptr "{ll}" format.name$ duplicate$ "others" =
508                 { 't := }
509                 { pop$ }
510               if$
511               t "others" =
512                 {
513                   " " * bbl.etal *
514                 }
515                 { bbl.and
516                   space.word * t *
517                 }
518               if$
519             }
520           if$
521         }
522         't
523       if$
524       nameptr #1 + 'nameptr :=
525       namesleft #1 - 'namesleft :=
526     }
527   while$
530 FUNCTION {author.editor.key.full} { author empty$
531     { editor empty$
532         { key empty$
533             { cite$ #1 #3 substring$ }
534             'key
535           if$
536         }
537         { editor format.full.names }
538       if$
539     }
540     { author format.full.names }
541   if$
544 FUNCTION {author.key.full} { author empty$
545     { key empty$
546          { cite$ #1 #3 substring$ }
547           'key
548       if$
549     }
550     { author format.full.names }
551   if$
554 FUNCTION {editor.key.full} { editor empty$
555     { key empty$
556          { cite$ #1 #3 substring$ }
557           'key
558       if$
559     }
560     { editor format.full.names }
561   if$
564 FUNCTION {make.full.names} { type$ "book" =
565   type$ "inbook" =
566   or
567     'author.editor.key.full
568     { type$ "proceedings" =
569         'editor.key.full
570         'author.key.full
571       if$
572     }
573   if$
576 FUNCTION {output.bibitem} { newline$
577   "\bibitem[{" write$
578   label write$
579   ")" make.full.names duplicate$ short.list =
580      { pop$ }
581      { * }
582    if$
583   "}]{" * write$
584   cite$ write$
585   "}" write$
586   newline$
587   ""
588   before.all 'output.state :=
591 FUNCTION {n.dashify} {
592   't :=
593   ""
594     { t empty$ not }
595     { t #1 #1 substring$ "-" =
596         { t #1 #2 substring$ "--" = not
597             { "--" *
598               t #2 global.max$ substring$ 't :=
599             }
600             {   { t #1 #1 substring$ "-" = }
601                 { "-" *
602                   t #2 global.max$ substring$ 't :=
603                 }
604               while$
605             }
606           if$
607         }
608         { t #1 #1 substring$ *
609           t #2 global.max$ substring$ 't :=
610         }
611       if$
612     }
613   while$
616 FUNCTION {word.in} { bbl.in capitalize
617   " " * }
619 FUNCTION {format.date} { year duplicate$ empty$
620     { "empty year in " cite$ * "; set to ????" * warning$
621        pop$ "????" }
622     'skip$
623   if$
624   extra.label *
625   before.all 'output.state :=
626   " (" swap$ * ")" *
629 FUNCTION {format.btitle} { title emphasize }
631 FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 <
632     { "~" }
633     { " " }
634   if$
635   swap$ * *
638 FUNCTION {either.or.check} { empty$
639     'pop$
640     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
641   if$
644 FUNCTION {format.bvolume} { volume empty$
645     { "" }
646     { bbl.volume volume tie.or.space.connect
647       series empty$
648         'skip$
649         { bbl.of space.word * series emphasize * }
650       if$
651       "volume and number" number either.or.check
652     }
653   if$
656 FUNCTION {format.number.series} { volume empty$
657     { number empty$
658         { series field.or.null }
659         { output.state mid.sentence =
660             { bbl.number }
661             { bbl.number capitalize }
662           if$
663           number tie.or.space.connect
664           series empty$
665             { "there's a number but no series in " cite$ * warning$ }
666             { bbl.in space.word * series * }
667           if$
668         }
669       if$
670     }
671     { "" }
672   if$
676 FUNCTION {format.edition} { edition empty$
677     { "" }
678     { output.state mid.sentence =
679         { edition "l" change.case$ " " * bbl.edition * }
680         { edition "t" change.case$ " " * bbl.edition * }
681       if$
682     }
683   if$
686 INTEGERS { multiresult }
688 FUNCTION {multi.page.check} { 't :=
689   #0 'multiresult :=
690     { multiresult not
691       t empty$ not
692       and
693     }
694     { t #1 #1 substring$
695       duplicate$ "-" =
696       swap$ duplicate$ "," =
697       swap$ "+" =
698       or or
699         { #1 'multiresult := }
700         { t #2 global.max$ substring$ 't := }
701       if$
702     }
703   while$
704   multiresult
707 FUNCTION {format.pages} { pages empty$
708     { "" }
709     { pages multi.page.check
710         { bbl.pages pages n.dashify tie.or.space.connect }
711         { bbl.page pages tie.or.space.connect }
712       if$
713     }
714   if$
717 FUNCTION {format.journal.pages} { pages empty$
718     'skip$
719     { duplicate$ empty$
720         { pop$ format.pages }
721         {
722           ", " *
723           pages n.dashify *
724         }
725       if$
726     }
727   if$
730 FUNCTION {format.vol.num.pages} { volume field.or.null
731   bolden
732   format.journal.pages
735 FUNCTION {format.chapter.pages} { chapter empty$
736     'format.pages
737     { type empty$
738         { bbl.chapter }
739         { type "l" change.case$ }
740       if$
741       chapter tie.or.space.connect
742       pages empty$
743         'skip$
744         { ", " * format.pages * }
745       if$
746     }
747   if$
750 FUNCTION {format.in.ed.booktitle} { booktitle empty$
751     { "" }
752     { editor empty$
753         { word.in booktitle emphasize * }
754         { word.in booktitle emphasize *
755           ", " *
756           " (" *
757           editor num.names$ #1 >
758             { bbl.editors }
759             { bbl.editor }
760           if$
761           * " " *
762           format.in.editors *
763           ")" *
764         }
765       if$
766     }
767   if$
770 FUNCTION {format.thesis.type} { type empty$
771     'skip$
772     { pop$
773       type "t" change.case$
774     }
775   if$
778 FUNCTION {format.tr.number} { type empty$
779     { bbl.techrep }
780     'type
781   if$
782   number empty$
783     { "t" change.case$ }
784     { number tie.or.space.connect }
785   if$
788 FUNCTION {format.article.crossref} {
789   word.in
790   " \cite{" * crossref * "}" *
793 FUNCTION {format.book.crossref} { volume empty$
794     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
795       word.in
796     }
797     { bbl.volume capitalize
798       volume tie.or.space.connect
799       bbl.of space.word *
800     }
801   if$
802   " \cite{" * crossref * "}" *
805 FUNCTION {format.incoll.inproc.crossref} {
806   word.in
807   " \cite{" * crossref * "}" *
810 FUNCTION {format.org.or.pub} { 't :=
811   ""
812   address empty$ t empty$ and
813     'skip$
814     {
815       address empty$
816         'skip$
817         { address * }
818       if$
819       t empty$
820         'skip$
821         { address empty$
822             'skip$
823             { ": " * }
824           if$
825           t *
826         }
827       if$
828     }
829   if$
832 FUNCTION {format.publisher.address} { publisher empty$
833     { "empty publisher in " cite$ * warning$
834       ""
835     }
836     { publisher }
837   if$
838   format.org.or.pub
841 FUNCTION {format.organization.address} { organization empty$
842     { "" }
843     { organization }
844   if$
845   format.org.or.pub
848 FUNCTION {article} { output.bibitem
849   format.authors "author" output.check
850   author format.key output
851   format.date "year" output.check
852   date.block
853   format.title "title" output.check
854   new.sentence
855   crossref missing$
856     { journal
857       emphasize
858       "journal" output.check
859       add.blank
860       format.vol.num.pages output
861     }
862     { format.article.crossref output.nonnull
863       format.pages output
864     }
865   if$
866   format.note output
867   fin.entry
870 FUNCTION {book} { output.bibitem
871   author empty$
872     { format.editors "author and editor" output.check
873       editor format.key output
874     }
875     { format.authors output.nonnull
876       crossref missing$
877         { "author and editor" editor either.or.check }
878         'skip$
879       if$
880     }
881   if$
882   format.date "year" output.check
883   date.block
884   format.btitle "title" output.check
885   crossref missing$
886     { format.bvolume output
887   new.sentence
888       format.number.series output
889       format.publisher.address output
890     }
891     {
892   new.sentence
893       format.book.crossref output.nonnull
894     }
895   if$
896   format.edition output
897   format.note output
898   fin.entry
901 FUNCTION {booklet} { output.bibitem
902   format.authors output
903   author format.key output
904   format.date "year" output.check
905   date.block
906   format.title "title" output.check
907   new.sentence
908   howpublished output
909   address output
910   format.note output
911   fin.entry
914 FUNCTION {inbook} { output.bibitem
915   author empty$
916     { format.editors "author and editor" output.check
917       editor format.key output
918     }
919     { format.authors output.nonnull
920       crossref missing$
921         { "author and editor" editor either.or.check }
922         'skip$
923       if$
924     }
925   if$
926   format.date "year" output.check
927   date.block
928   format.btitle "title" output.check
929   crossref missing$
930     {
931       format.bvolume output
932       format.chapter.pages "chapter and pages" output.check
933   new.sentence
934       format.number.series output
935       format.publisher.address output
936     }
937     {
938       format.chapter.pages "chapter and pages" output.check
939   new.sentence
940       format.book.crossref output.nonnull
941     }
942   if$
943   format.edition output
944   format.note output
945   fin.entry
948 FUNCTION {incollection} { output.bibitem
949   format.authors "author" output.check
950   author format.key output
951   format.date "year" output.check
952   date.block
953   format.title "title" output.check
954   new.sentence
955   crossref missing$
956     { format.in.ed.booktitle "booktitle" output.check
957       format.bvolume output
958       format.number.series output
959       format.chapter.pages output
960       format.publisher.address output
961       format.edition output
962     }
963     { format.incoll.inproc.crossref output.nonnull
964       format.chapter.pages output
965     }
966   if$
967   format.note output
968   fin.entry
971 FUNCTION {inproceedings} { output.bibitem
972   format.authors "author" output.check
973   author format.key output
974   format.date "year" output.check
975   date.block
976   format.title "title" output.check
977   new.sentence
978   crossref missing$
979     { format.in.ed.booktitle "booktitle" output.check
980       format.bvolume output
981       format.number.series output
982       format.pages output
983       publisher empty$
984         { format.organization.address output }
985         { organization output
986           format.publisher.address output
987         }
988       if$
989     }
990     { format.incoll.inproc.crossref output.nonnull
991       format.pages output
992     }
993   if$
994   format.note output
995   fin.entry
998 FUNCTION {conference} { inproceedings }
1000 FUNCTION {manual} { output.bibitem
1001   format.authors output
1002   author format.key output
1003   format.date "year" output.check
1004   date.block
1005   format.btitle "title" output.check
1006   new.sentence
1007   organization output
1008   address output
1009   format.edition output
1010   format.note output
1011   fin.entry
1014 FUNCTION {mastersthesis} { output.bibitem
1015   format.authors "author" output.check
1016   author format.key output
1017   format.date "year" output.check
1018   date.block
1019   format.btitle "title" output.check
1020   new.sentence
1021   bbl.mthesis format.thesis.type output.nonnull
1022   school "school" output.check
1023   address output
1024   format.note output
1025   fin.entry
1028 FUNCTION {misc} { output.bibitem
1029   format.authors output
1030   author format.key output
1031   format.date "year" output.check
1032   date.block
1033   format.title output
1034   new.sentence
1035   howpublished output
1036   format.note output
1037   fin.entry
1040 FUNCTION {phdthesis} { output.bibitem
1041   format.authors "author" output.check
1042   author format.key output
1043   format.date "year" output.check
1044   date.block
1045   format.btitle "title" output.check
1046   new.sentence
1047   bbl.phdthesis format.thesis.type output.nonnull
1048   school "school" output.check
1049   address output
1050   format.note output
1051   fin.entry
1054 FUNCTION {proceedings} { output.bibitem
1055   format.editors output
1056   editor format.key output
1057   format.date "year" output.check
1058   date.block
1059   format.btitle "title" output.check
1060   format.bvolume output
1061   format.number.series output
1062   publisher empty$
1063     { format.organization.address output }
1064     { organization output
1065       format.publisher.address output
1066     }
1067   if$
1068   format.note output
1069   fin.entry
1072 FUNCTION {techreport} { output.bibitem
1073   format.authors "author" output.check
1074   author format.key output
1075   format.date "year" output.check
1076   date.block
1077   format.title "title" output.check
1078   new.sentence
1079   format.tr.number output.nonnull
1080   institution "institution" output.check
1081   address output
1082   format.note output
1083   fin.entry
1086 FUNCTION {unpublished} { output.bibitem
1087   format.authors "author" output.check
1088   author format.key output
1089   format.date "year" output.check
1090   date.block
1091   format.title "title" output.check
1092   format.note "note" output.check
1093   fin.entry
1096 FUNCTION {default.type} { misc }
1098 READ
1100 FUNCTION {sortify} { purify$
1101   "l" change.case$
1104 INTEGERS { len }
1106 FUNCTION {chop.word} { 's :=
1107   'len :=
1108   s #1 len substring$ =
1109     { s len #1 + global.max$ substring$ }
1110     's
1111   if$
1114 FUNCTION {format.lab.names} { 's :=
1115   s #1 "{vv~}{ll}" format.name$
1116   s num.names$ duplicate$
1117   #2 >
1118     { pop$
1119       " " * bbl.etal *
1120     }
1121     { #2 <
1122         'skip$
1123         { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1124             {
1125               " " * bbl.etal *
1126             }
1127             { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
1128               * }
1129           if$
1130         }
1131       if$
1132     }
1133   if$
1136 FUNCTION {author.key.label} { author empty$
1137     { key empty$
1138         { cite$ #1 #3 substring$ }
1139         'key
1140       if$
1141     }
1142     { author format.lab.names }
1143   if$
1146 FUNCTION {author.editor.key.label} { author empty$
1147     { editor empty$
1148         { key empty$
1149             { cite$ #1 #3 substring$ }
1150             'key
1151           if$
1152         }
1153         { editor format.lab.names }
1154       if$
1155     }
1156     { author format.lab.names }
1157   if$
1160 FUNCTION {editor.key.label} { editor empty$
1161     { key empty$
1162         { cite$ #1 #3 substring$ }
1163         'key
1164       if$
1165     }
1166     { editor format.lab.names }
1167   if$
1170 FUNCTION {calc.short.authors} { type$ "book" =
1171   type$ "inbook" =
1172   or
1173     'author.editor.key.label
1174     { type$ "proceedings" =
1175         'editor.key.label
1176         'author.key.label
1177       if$
1178     }
1179   if$
1180   'short.list :=
1183 FUNCTION {calc.label} { calc.short.authors
1184   short.list
1185   "("
1186   *
1187   year duplicate$ empty$
1188      { pop$ "????" }
1189      'skip$
1190   if$
1191   *
1192   'label :=
1195 FUNCTION {sort.format.names} { 's :=
1196   #1 'nameptr :=
1197   ""
1198   s num.names$ 'numnames :=
1199   numnames 'namesleft :=
1200     { namesleft #0 > }
1201     { s nameptr
1202       "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"
1203       format.name$ 't :=
1204       nameptr #1 >
1205         {
1206           "   "  *
1207           namesleft #1 = t "others" = and
1208             { "zzzzz" * }
1209             { t sortify * }
1210           if$
1211         }
1212         { t sortify * }
1213       if$
1214       nameptr #1 + 'nameptr :=
1215       namesleft #1 - 'namesleft :=
1216     }
1217   while$
1220 FUNCTION {sort.format.title} { 't :=
1221   "A " #2
1222     "An " #3
1223       "The " #4 t chop.word
1224     chop.word
1225   chop.word
1226   sortify
1227   #1 global.max$ substring$
1230 FUNCTION {author.sort} { author empty$
1231     { key empty$
1232         { "to sort, need author or key in " cite$ * warning$
1233           ""
1234         }
1235         { key sortify }
1236       if$
1237     }
1238     { author sort.format.names }
1239   if$
1242 FUNCTION {author.editor.sort} { author empty$
1243     { editor empty$
1244         { key empty$
1245             { "to sort, need author, editor, or key in " cite$ * warning$
1246               ""
1247             }
1248             { key sortify }
1249           if$
1250         }
1251         { editor sort.format.names }
1252       if$
1253     }
1254     { author sort.format.names }
1255   if$
1258 FUNCTION {editor.sort} { editor empty$
1259     { key empty$
1260         { "to sort, need editor or key in " cite$ * warning$
1261           ""
1262         }
1263         { key sortify }
1264       if$
1265     }
1266     { editor sort.format.names }
1267   if$
1270 FUNCTION {presort} { calc.label
1271   label sortify
1272   "    "
1273   *
1274   type$ "book" =
1275   type$ "inbook" =
1276   or
1277     'author.editor.sort
1278     { type$ "proceedings" =
1279         'editor.sort
1280         'author.sort
1281       if$
1282     }
1283   if$
1284   #1 entry.max$ substring$
1285   'sort.label :=
1286   sort.label
1287   *
1288   "    "
1289   *
1290   title field.or.null
1291   sort.format.title
1292   *
1293   #1 entry.max$ substring$
1294   'sort.key$ :=
1297 ITERATE {presort}
1299 SORT
1301 STRINGS { last.label next.extra }
1303 INTEGERS { last.extra.num number.label }
1305 FUNCTION {initialize.extra.label.stuff} { #0 int.to.chr$ 'last.label :=
1306   "" 'next.extra :=
1307   #0 'last.extra.num :=
1308   #0 'number.label :=
1311 FUNCTION {forward.pass} { last.label label =
1312     { last.extra.num #1 + 'last.extra.num :=
1313       last.extra.num int.to.chr$ 'extra.label :=
1314     }
1315     { "a" chr.to.int$ 'last.extra.num :=
1316       "" 'extra.label :=
1317       label 'last.label :=
1318     }
1319   if$
1320   number.label #1 + 'number.label :=
1323 FUNCTION {reverse.pass} { next.extra "b" =
1324     { "a" 'extra.label := }
1325     'skip$
1326   if$
1327   extra.label 'next.extra :=
1328   extra.label
1329   duplicate$ empty$
1330     'skip$
1331     { "{\natexlab{" swap$ * "}}" * }
1332   if$
1333   'extra.label :=
1334   label extra.label * 'label :=
1337 EXECUTE {initialize.extra.label.stuff}
1339 ITERATE {forward.pass}
1341 REVERSE {reverse.pass}
1343 FUNCTION {bib.sort.order} { sort.label
1344   "    "
1345   *
1346   year field.or.null sortify
1347   *
1348   "    "
1349   *
1350   title field.or.null
1351   sort.format.title
1352   *
1353   #1 entry.max$ substring$
1354   'sort.key$ :=
1357 ITERATE {bib.sort.order}
1359 SORT
1361 FUNCTION {begin.bib} { preamble$ empty$
1362     'skip$
1363     { preamble$ write$ newline$ }
1364   if$
1365   "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1366   write$ newline$
1367   "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
1368   write$ newline$
1371 EXECUTE {begin.bib}
1373 EXECUTE {init.state.consts}
1375 ITERATE {call.type$}
1377 FUNCTION {end.bib} { newline$
1378   "\end{thebibliography}" write$ newline$
1381 EXECUTE {end.bib}
1382 %% End of customized bst file
1384 %% End of file `bug.bst'.
1385 \end{filecontents}
1387 \begin{filecontents}{tlb3145.bbl}
1388 \begin{thebibliography}{1}
1389 \expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi
1391 \bibitem[{Abel et~al.(1975)Abel, Cosbie, Gibbon and Jameson}]{ABEL1975}
1392 \textbf{Abel, B.~J., Cosbie, R.~J., Gibbon, N.~O. and Jameson, R.~M.} (1975).
1393   Urethral pressure measurement after division of the external sphincter.
1394   \textit{Paraplegia.} \textbf{13}, 37--41.
1396 \end{thebibliography}
1397 \end{filecontents}
1399 \showboxbreadth=50\showboxdepth=50
1400 \def\testit#1{%
1401   \setbox0=\hbox{#1}\showbox0}
1403 \begin{document}
1404 \TIMO
1405 \testit{\citet{ABEL1975}}
1407 \bibliographystyle{tlb3145}
1408 \bibliography{tlb3145}
1410 \end{document}