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
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)
12 \input@path: undefined (Standard setting)
15 I use Babel v3.6z 1999/08/23 and BiBTeX with natbib to use author year
17 Babel causes erroneous behavior: instead of Author et~al.(year) the output
19 Author et``nobreakspace -"al.(year)
21 I tested Babel v3.6m 1999/04/05 and it worked fine!
25 \documentclass{article}
28 \FORMAT{LaTeX2e<1999/06/01>}
30 \AUTHOR{m.heldoorn@lumc.nl ( Marcel Heldoorn )}
31 \PACKAGE[english]{babel}
35 \usepackage[english]{babel}
38 \begin{filecontents}{tlb3145.bib}
40 author = {B. J. Abel and Ross J. Cosbie and N. O. Gibbon and R. M.
42 title = {Urethral pressure measurement after division of the external
44 journal = {Paraplegia.},
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
64 %% ----------------------------------------
67 %% Copyright 1994-1999 Patrick W Daly
68 % ===============================================================
70 % This bibliographic style (bst) file has been generated from one or
71 % more master bibliographic style (mbs) files, listed above.
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
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
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 %---------------------------------------------------------------------
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 :=
142 #2 'after.sentence :=
148 FUNCTION {output.nonnull} { 's :=
149 output.state mid.sentence =
151 { output.state after.block =
156 { output.state before.all =
158 { add.period$ " " * write$ }
162 mid.sentence 'output.state :=
168 FUNCTION {output} { duplicate$ empty$
174 FUNCTION {output.check} { 't :=
176 { pop$ "empty " t * " in " * cite$ * warning$ }
181 FUNCTION {fin.entry} { add.period$
186 FUNCTION {new.block} { output.state before.all =
188 { after.block 'output.state := }
192 FUNCTION {new.sentence} { output.state after.block =
194 { output.state before.all =
196 { after.sentence 'output.state := }
202 FUNCTION {add.blank} { " " * before.all 'output.state := }
204 FUNCTION {date.block} {
208 FUNCTION {not} { { #0 }
213 FUNCTION {and} { 'skip$
218 FUNCTION {or} { { pop$ #1 }
223 FUNCTION {new.block.checkb} { empty$
231 FUNCTION {field.or.null} { duplicate$ empty$
237 FUNCTION {emphasize} { duplicate$ empty$
239 { "\textit{" swap$ * "}" * }
243 FUNCTION {bolden} { duplicate$ empty$
245 { "\textbf{" swap$ * "}" * }
249 FUNCTION {bib.name.font} { bolden }
251 FUNCTION {bib.fname.font} { bib.name.font } FUNCTION {capitalize} { "u"
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" }
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."}
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 :=
364 s num.names$ 'numnames :=
365 numnames 'namesleft :=
368 "{vv~}{ll}{, jj}{, f.}" format.name$
375 s nameptr "{ll}" format.name$ duplicate$ "others" =
393 nameptr #1 + 'nameptr :=
394 namesleft #1 - 'namesleft :=
401 } FUNCTION {format.names.ed} { 's :=
403 s num.names$ 'numnames :=
404 numnames 'namesleft :=
407 "{f.~}{vv~}{ll}{, jj}"
415 s nameptr "{ll}" format.name$ duplicate$ "others" =
433 nameptr #1 + 'nameptr :=
434 namesleft #1 - 'namesleft :=
439 FUNCTION {format.key} { empty$
440 { key field.or.null }
445 FUNCTION {format.authors} { author empty$
447 { author format.names }
451 FUNCTION {format.editors} { editor empty$
453 { editor format.names
454 editor num.names$ #1 >
455 { ", " * bbl.editors * }
456 { ", " * bbl.editor * }
462 FUNCTION {format.in.editors} { editor empty$
464 { editor format.names.ed
469 FUNCTION {format.note} {
472 { note #1 #1 substring$
475 { output.state mid.sentence =
482 note #2 global.max$ substring$ *
487 FUNCTION {format.title} { title empty$
494 FUNCTION {format.full.names} {'s :=
496 s num.names$ 'numnames :=
497 numnames 'namesleft :=
500 "{vv~}{ll}" format.name$
507 s nameptr "{ll}" format.name$ duplicate$ "others" =
524 nameptr #1 + 'nameptr :=
525 namesleft #1 - 'namesleft :=
530 FUNCTION {author.editor.key.full} { author empty$
533 { cite$ #1 #3 substring$ }
537 { editor format.full.names }
540 { author format.full.names }
544 FUNCTION {author.key.full} { author empty$
546 { cite$ #1 #3 substring$ }
550 { author format.full.names }
554 FUNCTION {editor.key.full} { editor empty$
556 { cite$ #1 #3 substring$ }
560 { editor format.full.names }
564 FUNCTION {make.full.names} { type$ "book" =
567 'author.editor.key.full
568 { type$ "proceedings" =
576 FUNCTION {output.bibitem} { newline$
579 ")" make.full.names duplicate$ short.list =
588 before.all 'output.state :=
591 FUNCTION {n.dashify} {
595 { t #1 #1 substring$ "-" =
596 { t #1 #2 substring$ "--" = not
598 t #2 global.max$ substring$ 't :=
600 { { t #1 #1 substring$ "-" = }
602 t #2 global.max$ substring$ 't :=
608 { t #1 #1 substring$ *
609 t #2 global.max$ substring$ 't :=
616 FUNCTION {word.in} { bbl.in capitalize
619 FUNCTION {format.date} { year duplicate$ empty$
620 { "empty year in " cite$ * "; set to ????" * warning$
625 before.all 'output.state :=
629 FUNCTION {format.btitle} { title emphasize }
631 FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 <
638 FUNCTION {either.or.check} { empty$
640 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
644 FUNCTION {format.bvolume} { volume empty$
646 { bbl.volume volume tie.or.space.connect
649 { bbl.of space.word * series emphasize * }
651 "volume and number" number either.or.check
656 FUNCTION {format.number.series} { volume empty$
658 { series field.or.null }
659 { output.state mid.sentence =
661 { bbl.number capitalize }
663 number tie.or.space.connect
665 { "there's a number but no series in " cite$ * warning$ }
666 { bbl.in space.word * series * }
676 FUNCTION {format.edition} { edition empty$
678 { output.state mid.sentence =
679 { edition "l" change.case$ " " * bbl.edition * }
680 { edition "t" change.case$ " " * bbl.edition * }
686 INTEGERS { multiresult }
688 FUNCTION {multi.page.check} { 't :=
696 swap$ duplicate$ "," =
699 { #1 'multiresult := }
700 { t #2 global.max$ substring$ 't := }
707 FUNCTION {format.pages} { pages empty$
709 { pages multi.page.check
710 { bbl.pages pages n.dashify tie.or.space.connect }
711 { bbl.page pages tie.or.space.connect }
717 FUNCTION {format.journal.pages} { pages empty$
720 { pop$ format.pages }
730 FUNCTION {format.vol.num.pages} { volume field.or.null
735 FUNCTION {format.chapter.pages} { chapter empty$
739 { type "l" change.case$ }
741 chapter tie.or.space.connect
744 { ", " * format.pages * }
750 FUNCTION {format.in.ed.booktitle} { booktitle empty$
753 { word.in booktitle emphasize * }
754 { word.in booktitle emphasize *
757 editor num.names$ #1 >
770 FUNCTION {format.thesis.type} { type empty$
773 type "t" change.case$
778 FUNCTION {format.tr.number} { type empty$
784 { number tie.or.space.connect }
788 FUNCTION {format.article.crossref} {
790 " \cite{" * crossref * "}" *
793 FUNCTION {format.book.crossref} { volume empty$
794 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
797 { bbl.volume capitalize
798 volume tie.or.space.connect
802 " \cite{" * crossref * "}" *
805 FUNCTION {format.incoll.inproc.crossref} {
807 " \cite{" * crossref * "}" *
810 FUNCTION {format.org.or.pub} { 't :=
812 address empty$ t empty$ and
832 FUNCTION {format.publisher.address} { publisher empty$
833 { "empty publisher in " cite$ * warning$
841 FUNCTION {format.organization.address} { organization empty$
848 FUNCTION {article} { output.bibitem
849 format.authors "author" output.check
850 author format.key output
851 format.date "year" output.check
853 format.title "title" output.check
858 "journal" output.check
860 format.vol.num.pages output
862 { format.article.crossref output.nonnull
870 FUNCTION {book} { output.bibitem
872 { format.editors "author and editor" output.check
873 editor format.key output
875 { format.authors output.nonnull
877 { "author and editor" editor either.or.check }
882 format.date "year" output.check
884 format.btitle "title" output.check
886 { format.bvolume output
888 format.number.series output
889 format.publisher.address output
893 format.book.crossref output.nonnull
896 format.edition output
901 FUNCTION {booklet} { output.bibitem
902 format.authors output
903 author format.key output
904 format.date "year" output.check
906 format.title "title" output.check
914 FUNCTION {inbook} { output.bibitem
916 { format.editors "author and editor" output.check
917 editor format.key output
919 { format.authors output.nonnull
921 { "author and editor" editor either.or.check }
926 format.date "year" output.check
928 format.btitle "title" output.check
931 format.bvolume output
932 format.chapter.pages "chapter and pages" output.check
934 format.number.series output
935 format.publisher.address output
938 format.chapter.pages "chapter and pages" output.check
940 format.book.crossref output.nonnull
943 format.edition output
948 FUNCTION {incollection} { output.bibitem
949 format.authors "author" output.check
950 author format.key output
951 format.date "year" output.check
953 format.title "title" output.check
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
963 { format.incoll.inproc.crossref output.nonnull
964 format.chapter.pages output
971 FUNCTION {inproceedings} { output.bibitem
972 format.authors "author" output.check
973 author format.key output
974 format.date "year" output.check
976 format.title "title" output.check
979 { format.in.ed.booktitle "booktitle" output.check
980 format.bvolume output
981 format.number.series output
984 { format.organization.address output }
985 { organization output
986 format.publisher.address output
990 { format.incoll.inproc.crossref output.nonnull
998 FUNCTION {conference} { inproceedings }
1000 FUNCTION {manual} { output.bibitem
1001 format.authors output
1002 author format.key output
1003 format.date "year" output.check
1005 format.btitle "title" output.check
1009 format.edition output
1014 FUNCTION {mastersthesis} { output.bibitem
1015 format.authors "author" output.check
1016 author format.key output
1017 format.date "year" output.check
1019 format.btitle "title" output.check
1021 bbl.mthesis format.thesis.type output.nonnull
1022 school "school" output.check
1028 FUNCTION {misc} { output.bibitem
1029 format.authors output
1030 author format.key output
1031 format.date "year" output.check
1040 FUNCTION {phdthesis} { output.bibitem
1041 format.authors "author" output.check
1042 author format.key output
1043 format.date "year" output.check
1045 format.btitle "title" output.check
1047 bbl.phdthesis format.thesis.type output.nonnull
1048 school "school" output.check
1054 FUNCTION {proceedings} { output.bibitem
1055 format.editors output
1056 editor format.key output
1057 format.date "year" output.check
1059 format.btitle "title" output.check
1060 format.bvolume output
1061 format.number.series output
1063 { format.organization.address output }
1064 { organization output
1065 format.publisher.address output
1072 FUNCTION {techreport} { output.bibitem
1073 format.authors "author" output.check
1074 author format.key output
1075 format.date "year" output.check
1077 format.title "title" output.check
1079 format.tr.number output.nonnull
1080 institution "institution" output.check
1086 FUNCTION {unpublished} { output.bibitem
1087 format.authors "author" output.check
1088 author format.key output
1089 format.date "year" output.check
1091 format.title "title" output.check
1092 format.note "note" output.check
1096 FUNCTION {default.type} { misc }
1100 FUNCTION {sortify} { purify$
1106 FUNCTION {chop.word} { 's :=
1108 s #1 len substring$ =
1109 { s len #1 + global.max$ substring$ }
1114 FUNCTION {format.lab.names} { 's :=
1115 s #1 "{vv~}{ll}" format.name$
1116 s num.names$ duplicate$
1123 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1127 { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
1136 FUNCTION {author.key.label} { author empty$
1138 { cite$ #1 #3 substring$ }
1142 { author format.lab.names }
1146 FUNCTION {author.editor.key.label} { author empty$
1149 { cite$ #1 #3 substring$ }
1153 { editor format.lab.names }
1156 { author format.lab.names }
1160 FUNCTION {editor.key.label} { editor empty$
1162 { cite$ #1 #3 substring$ }
1166 { editor format.lab.names }
1170 FUNCTION {calc.short.authors} { type$ "book" =
1173 'author.editor.key.label
1174 { type$ "proceedings" =
1183 FUNCTION {calc.label} { calc.short.authors
1187 year duplicate$ empty$
1195 FUNCTION {sort.format.names} { 's :=
1198 s num.names$ 'numnames :=
1199 numnames 'namesleft :=
1202 "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
1207 namesleft #1 = t "others" = and
1214 nameptr #1 + 'nameptr :=
1215 namesleft #1 - 'namesleft :=
1220 FUNCTION {sort.format.title} { 't :=
1223 "The " #4 t chop.word
1227 #1 global.max$ substring$
1230 FUNCTION {author.sort} { author empty$
1232 { "to sort, need author or key in " cite$ * warning$
1238 { author sort.format.names }
1242 FUNCTION {author.editor.sort} { author empty$
1245 { "to sort, need author, editor, or key in " cite$ * warning$
1251 { editor sort.format.names }
1254 { author sort.format.names }
1258 FUNCTION {editor.sort} { editor empty$
1260 { "to sort, need editor or key in " cite$ * warning$
1266 { editor sort.format.names }
1270 FUNCTION {presort} { calc.label
1278 { type$ "proceedings" =
1284 #1 entry.max$ substring$
1293 #1 entry.max$ substring$
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 :=
1307 #0 'last.extra.num :=
1311 FUNCTION {forward.pass} { last.label label =
1312 { last.extra.num #1 + 'last.extra.num :=
1313 last.extra.num int.to.chr$ 'extra.label :=
1315 { "a" chr.to.int$ 'last.extra.num :=
1317 label 'last.label :=
1320 number.label #1 + 'number.label :=
1323 FUNCTION {reverse.pass} { next.extra "b" =
1324 { "a" 'extra.label := }
1327 extra.label 'next.extra :=
1331 { "{\natexlab{" swap$ * "}}" * }
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
1346 year field.or.null sortify
1353 #1 entry.max$ substring$
1357 ITERATE {bib.sort.order}
1361 FUNCTION {begin.bib} { preamble$ empty$
1363 { preamble$ write$ newline$ }
1365 "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1367 "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
1373 EXECUTE {init.state.consts}
1375 ITERATE {call.type$}
1377 FUNCTION {end.bib} { newline$
1378 "\end{thebibliography}" write$ newline$
1382 %% End of customized bst file
1384 %% End of file `bug.bst'.
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}
1399 \showboxbreadth=50\showboxdepth=50
1401 \setbox0=\hbox{#1}\showbox0}
1405 \testit{\citet{ABEL1975}}
1407 \bibliographystyle{tlb3145}
1408 \bibliography{tlb3145}