Mein mit bib-it erstellter style funktioniert nicht.
Verfasst: Di 5. Apr 2011, 15:28
Hallo alle zusammen,
ich versuche gerade einen eigenen Stil nach den Zitierregeln der Römisch-Germanischen Kommission des Deutschen Archäologischen Instituts zu erstellen. Die Regeln sind so spezifisch, dass ich mit jurabib, custom-bib und biblatex nicht weitergekommen bin.
Deshalb war ich froh, auf bib-it und seinen Style Generator getroffen zu sein. Ich hab auch gleich einen Stil erstellt. Wenn ich das daraus resultierende .bst-file aber verwende, erkennt Latex plötzlich die Bibliographie nicht mehr, meine Zitate werden als undefined angegeben.
Weiß jemand, was ich da tun kann?
-------------------------
Hier ist mein LaTEX-Dokument:
Hier das zugehörige .bib-file: (bib.bib)
und hier das .bst: (rgk6.bst)
[/code]
ich versuche gerade einen eigenen Stil nach den Zitierregeln der Römisch-Germanischen Kommission des Deutschen Archäologischen Instituts zu erstellen. Die Regeln sind so spezifisch, dass ich mit jurabib, custom-bib und biblatex nicht weitergekommen bin.
Deshalb war ich froh, auf bib-it und seinen Style Generator getroffen zu sein. Ich hab auch gleich einen Stil erstellt. Wenn ich das daraus resultierende .bst-file aber verwende, erkennt Latex plötzlich die Bibliographie nicht mehr, meine Zitate werden als undefined angegeben.
Weiß jemand, was ich da tun kann?
-------------------------
Hier ist mein LaTEX-Dokument:
\documentclass{scrartcl} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \begin{document} bla \cite{ttt} blabla \bibliography{bib} \bibliographystyle{rgk6} \end{document}
@Book{ttt, author = {Ich Ichson}, title = {Ein BibTEX Experiment}, year = {2011}, address = {Freiburg i. Br.} }
ENTRY { address author crossref journal number pages series title year } {} { label extra.label sort.label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := } STRINGS { s t} FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ", " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output.nonnull.nostate} { 's := output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } 'write$ 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$ } INTEGERS { nameptr namesleft numnames posothers showetal} FUNCTION {output.bibitem} { newline$ "\bibitem[" write$ label write$ "]{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {bibinfo.check} { swap$ duplicate$ missing$ { pop$ pop$ "" } { duplicate$ empty$ { swap$ pop$ } { swap$ pop$ } if$ } 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 {add.colon} { duplicate$ empty$ 'skip$ { ":" * add.blank } if$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } FUNCTION {bolden} { duplicate$ empty$ { pop$ "" } { "\textbf{" swap$ * "}" * } if$ } FUNCTION {italize} { duplicate$ empty$ { pop$ "" } { "\textit{" swap$ * "}" * } if$ } FUNCTION {scaps} { duplicate$ empty$ { pop$ "" } { "\textsc{" swap$ * "}" * } if$ } FUNCTION {anglequote} { duplicate$ empty$ { pop$ "" } { "<<" swap$ * ">>" * } if$ } FUNCTION {singlequote} { duplicate$ empty$ { pop$ "" } { "'{}" swap$ * "'{}" * } if$ } FUNCTION {doublequote} { duplicate$ empty$ { pop$ "" } { "``{}" swap$ * "''{}" * } if$ } FUNCTION {format.names.author} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := #0 'posothers := { namesleft #0 > } { s nameptr "{f}{ll}{v}" format.name$ 't := t "others" = { nameptr 'posothers := } 'skip$ if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ #0 'showetal := numnames #11 > { #3 'numnames := #1 'showetal := } { numnames #11 = { posothers #0 > { #1 'showetal := #3 'numnames := } 'skip$ if$ } { posothers #0 > { #1 'showetal := #1 'numnames - } 'skip$ if$ } if$ } if$ #1 'nameptr := numnames 'namesleft := { namesleft #0 > } { s nameptr "{f}{ll}{v}" format.name$ 't := nameptr #1 > { namesleft #1 > { ", " * t * } { showetal #0 > { ", " * t * } { " and " * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ showetal #0 > { " u.a." * } 'skip$ if$ } FUNCTION {format.names.editor} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := #0 'posothers := { namesleft #0 > } { s nameptr "{f}{v}{ll}" format.name$ 't := t "others" = { nameptr 'posothers := } 'skip$ if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ #0 'showetal := numnames #11 > { #3 'numnames := #1 'showetal := } { numnames #11 = { posothers #0 > { #1 'showetal := #3 'numnames := } 'skip$ if$ } { posothers #0 > { #1 'showetal := #1 'numnames - } 'skip$ if$ } if$ } if$ #1 'nameptr := numnames 'namesleft := { namesleft #0 > } { s nameptr "{f}{v}{ll}" format.name$ 't := nameptr #1 > { namesleft #1 > { ", " * t * } { showetal #0 > { ", " * t * } { " and " * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ showetal #0 > { " u.a." * } 'skip$ if$ } FUNCTION {sortify} { purify$ "l" change.case$ } INTEGERS { len } FUNCTION {chop.word} { 's := 'len := s #1 len substring$ = { s len #1 + global.max$ substring$ } 's if$ } FUNCTION {format.title.short} { 't := "A " #2 "An " #3 "The " #4 t chop.word chop.word chop.word #1 #3 substring$ } FUNCTION {format.techreport.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.techreport.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.techreport.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.techreport.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.techreport.pages} { pages "pages" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {techreport} { output.bibitem author empty$ 'skip$ { format.techreport.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.techreport.title output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.techreport.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.techreport.year output.nonnull.nostate ")" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block pages empty$ 'skip$ { format.techreport.pages output.nonnull.nostate "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.inbook.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.inbook.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.inbook.crossref} { crossref "crossref" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {inbook} { output.bibitem author empty$ 'skip$ { format.inbook.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.inbook.title output.nonnull.nostate ". " duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block crossref empty$ 'skip$ { "In:" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.inbook.crossref output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.unpublished.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.unpublished.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {unpublished} { output.bibitem author empty$ 'skip$ { format.unpublished.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.unpublished.title output.nonnull.nostate ". Unpubl." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.mastersthesis.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.mastersthesis.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.mastersthesis.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.mastersthesis.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {mastersthesis} { output.bibitem author empty$ 'skip$ { format.mastersthesis.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.mastersthesis.title output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.mastersthesis.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.mastersthesis.year output.nonnull.nostate ") Unveröfftl. Magisterarbeit." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.misc.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.misc.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.misc.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.misc.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {misc} { output.bibitem author empty$ 'skip$ { format.misc.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.misc.title output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.misc.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.misc.year output.nonnull.nostate ")." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.manual.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.manual.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.manual.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.manual.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {manual} { output.bibitem author empty$ 'skip$ { format.manual.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.manual.title output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.manual.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.manual.year output.nonnull.nostate ")." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.booklet.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.booklet.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.booklet.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.booklet.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {booklet} { output.bibitem author empty$ 'skip$ { format.booklet.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.booklet.title output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.booklet.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.booklet.year output.nonnull.nostate ")." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.article.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { italize } if$ } FUNCTION {format.article.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.article.journal} { journal "journal" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.article.number} { number "number" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.article.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.article.pages} { pages "pages" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {article} { output.bibitem author empty$ 'skip$ { format.article.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.article.title output.nonnull.nostate "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block journal empty$ 'skip$ { format.article.journal output.nonnull.nostate } if$ new.block number empty$ 'skip$ { format.article.number output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.article.year output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block pages empty$ 'skip$ { format.article.pages output.nonnull.nostate "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.book.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { italize } if$ } FUNCTION {format.book.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.book.series} { series "series" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.book.number} { number "number" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.book.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.book.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {book} { output.bibitem author empty$ 'skip$ { format.book.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.book.title output.nonnull.nostate } if$ new.block series empty$ 'skip$ { "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.book.series output.nonnull.nostate } if$ new.block number empty$ 'skip$ { format.book.number output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.book.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.book.year output.nonnull.nostate ")." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.incollection.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { italize } if$ } FUNCTION {format.incollection.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.incollection.crossref} { crossref "crossref" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.incollection.pages} { pages "pages" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {incollection} { output.bibitem author empty$ 'skip$ { format.incollection.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.incollection.title output.nonnull.nostate "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block crossref empty$ 'skip$ { "In:" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.incollection.crossref output.nonnull.nostate } if$ new.block pages empty$ 'skip$ { format.incollection.pages output.nonnull.nostate "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.proceedings.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.proceedings.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.proceedings.series} { series "series" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.proceedings.number} { number "number" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.proceedings.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.proceedings.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {proceedings} { output.bibitem author empty$ 'skip$ { format.proceedings.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.proceedings.title output.nonnull.nostate } if$ new.block series empty$ 'skip$ { "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.proceedings.series output.nonnull.nostate } if$ new.block number empty$ 'skip$ { format.proceedings.number output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.proceedings.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.proceedings.year output.nonnull.nostate ")." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.inproceedings.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.inproceedings.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.inproceedings.crossref} { crossref "crossref" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.inproceedings.pages} { pages "pages" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {inproceedings} { output.bibitem author empty$ 'skip$ { format.inproceedings.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.inproceedings.title output.nonnull.nostate "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block crossref empty$ 'skip$ { "In:" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.inproceedings.crossref output.nonnull.nostate } if$ new.block pages empty$ 'skip$ { format.inproceedings.pages output.nonnull.nostate "." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.conference.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.conference.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.conference.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.conference.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {conference} { output.bibitem author empty$ 'skip$ { format.conference.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.conference.title output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.conference.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.conference.year output.nonnull.nostate ")." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } FUNCTION {format.phdthesis.author} { author duplicate$ empty$ 'skip$ { format.names.author } if$ "author" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.phdthesis.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.phdthesis.address} { address "address" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.phdthesis.year} { year "year" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {phdthesis} { output.bibitem author empty$ 'skip$ { format.phdthesis.author output.nonnull.nostate "," duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block title empty$ 'skip$ { format.phdthesis.title output.nonnull.nostate } if$ new.block address empty$ 'skip$ { "(" duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate format.phdthesis.address output.nonnull.nostate } if$ new.block year empty$ 'skip$ { format.phdthesis.year output.nonnull.nostate ")." duplicate$ empty$ 'skip$ { } if$ output.nonnull.nostate } if$ new.block fin.entry } READ INTEGERS { et.al.char.used } FUNCTION {initialize.et.al.char.used} { #0 'et.al.char.used := } EXECUTE {initialize.et.al.char.used} FUNCTION {format.lab.names} { 's := s num.names$ 'numnames := numnames #1 > { numnames #4 > { #3 'namesleft := } { numnames 'namesleft := } if$ #1 'nameptr := "" { namesleft #0 > } { nameptr numnames = { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = { "{\etalchar{+}}" * #1 'et.al.char.used := } { s nameptr "{v{}}{l{}}" format.name$ * } if$ } { s nameptr "{v{}}{l{}}" format.name$ * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ numnames #4 > { "{\etalchar{+}}" * #1 'et.al.char.used := } 'skip$ if$ } { s #1 "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } 'skip$ if$ } if$ } FUNCTION {author.title.label} { author empty$ { title empty$ { cite$ #1 #3 substring$ } {title format.title.short } if$ } { author format.lab.names } if$ } FUNCTION {author.year.label} { author empty$ { year empty$ { cite$ #1 #3 substring$ } {year format.title.short } if$ } { author format.lab.names } if$ } FUNCTION {calc.label} { type$ "techreport" = 'author.title.label 'skip$ if$ type$ "inbook" = 'author.title.label 'skip$ if$ type$ "unpublished" = 'author.title.label 'skip$ if$ type$ "mastersthesis" = 'author.title.label 'skip$ if$ type$ "misc" = 'author.year.label 'skip$ if$ type$ "manual" = 'author.title.label 'skip$ if$ type$ "booklet" = 'author.title.label 'skip$ if$ type$ "article" = 'author.title.label 'skip$ if$ type$ "book" = 'author.title.label 'skip$ if$ type$ "incollection" = 'author.title.label 'skip$ if$ type$ "proceedings" = 'author.title.label 'skip$ if$ type$ "inproceedings" = 'author.title.label 'skip$ if$ type$ "conference" = 'author.title.label 'skip$ if$ type$ "phdthesis" = 'author.title.label 'skip$ if$ duplicate$ year field.or.null purify$ #-1 #2 substring$ * 'label := year field.or.null purify$ #-1 #4 substring$ * sortify 'sort.label := } FUNCTION {sort.format.names} { 's := #1 'nameptr := "" s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { nameptr #1 > { " " * } 'skip$ if$ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := nameptr numnames = t "others" = and { "et al" *} { t sortify * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {sort.format.title} { 't := "A " #2 "An " #3 "The " #4 t chop.word chop.word chop.word sortify #1 global.max$ substring$ } FUNCTION {author.title.sort} { author empty$ { title empty$ { "to sort, need author, ortitle in " cite$ * warning$ "" } {title format.title.short sortify } if$ } { author sort.format.names } if$ } FUNCTION {author.year.sort} { author empty$ { year empty$ { "to sort, need author, oryear in " cite$ * warning$ "" } {year format.title.short sortify } if$ } { author sort.format.names } if$ } FUNCTION {presort} { calc.label sort.label " " * type$ "techreport" = 'author.title.sort 'skip$ if$ type$ "inbook" = 'author.title.sort 'skip$ if$ type$ "unpublished" = 'author.title.sort 'skip$ if$ type$ "mastersthesis" = 'author.title.sort 'skip$ if$ type$ "misc" = 'author.year.sort 'skip$ if$ type$ "manual" = 'author.title.sort 'skip$ if$ type$ "booklet" = 'author.title.sort 'skip$ if$ type$ "article" = 'author.title.sort 'skip$ if$ type$ "book" = 'author.title.sort 'skip$ if$ type$ "incollection" = 'author.title.sort 'skip$ if$ type$ "proceedings" = 'author.title.sort 'skip$ if$ type$ "inproceedings" = 'author.title.sort 'skip$ if$ type$ "conference" = 'author.title.sort 'skip$ if$ type$ "phdthesis" = 'author.title.sort 'skip$ if$ * " " * year field.or.null sortify * " " * title field.or.null sort.format.title * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {presort} SORT STRINGS { longest.label last.sort.label next.extra } INTEGERS { longest.label.width last.extra.num } FUNCTION {initialize.longest.label} { "" 'longest.label := #0 int.to.chr$ 'last.sort.label := "" 'next.extra := #0 'longest.label.width := #0 'last.extra.num := } FUNCTION {forward.pass} { last.sort.label sort.label = { last.extra.num #1 + 'last.extra.num := last.extra.num int.to.chr$ 'extra.label := } { "a" chr.to.int$ 'last.extra.num := "" 'extra.label := sort.label 'last.sort.label := } if$ } FUNCTION {reverse.pass} { next.extra "b" = { "a" 'extra.label := } 'skip$ if$ label extra.label * 'label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } 'skip$ if$ extra.label 'next.extra := } EXECUTE {initialize.longest.label} ITERATE {forward.pass} REVERSE {reverse.pass} FUNCTION {begin.bib} { et.al.char.used { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } 'skip$ if$ preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\begin{thebibliography}{" longest.label * "}" * write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ }EXECUTE {end.bib}