diff options
Diffstat (limited to 'biblio/bibtex/contrib/germbib')
24 files changed, 10282 insertions, 0 deletions
diff --git a/biblio/bibtex/contrib/germbib/README.bibgerm b/biblio/bibtex/contrib/germbib/README.bibgerm new file mode 100644 index 0000000000..722ce8706e --- /dev/null +++ b/biblio/bibtex/contrib/germbib/README.bibgerm @@ -0,0 +1,24 @@ +REAMDE to bibgerm.sty
+=====================
+
+History:
+
+- Macros for german `BibTeX'ing added to Style Option `german' 20 Apr 1993
+ idea and languages `german' and `USenglish' implemented by M. Wallmeier
+- Modified for LaTeX 2e and german.sty 2.5b by A. Scherer 1 Nov 1995
+- Modified for ngerman.sty and babel.sty by H. Harders 21 August 2000
+
+
+The package bibgerm.sty now supports the language packages ngerman.sty and
+babel.sty.
+If using LaTeX2e you can load either german.sty, ngerman.sty or babel.sty
+before or after bibgerm.sty. If none of these packages is used bibgerm
+behaves as before and loads german.sty.
+If using LaTeX 2.09 you can load german.sty or ngerman.sty _before_
+bibgerm.sty.
+
+The file test/testbibgerm.tex tests the new version of bibgerm.sty.
+
+2000-08-21
+Harald harders
+h.harders@tu-bs.de
diff --git a/biblio/bibtex/contrib/germbib/bst/gerabbrv.bst b/biblio/bibtex/contrib/germbib/bst/gerabbrv.bst new file mode 100644 index 0000000000..1f6088715d --- /dev/null +++ b/biblio/bibtex/contrib/germbib/bst/gerabbrv.bst @@ -0,0 +1,1208 @@ +% BibTeX standard bibliography style `abbrv' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. +% 15-feb-92 (MW) Updated for use with `bibgerman.sty': things like "and" +% change with the language. Switch the language using the +% language field: +% language = "german" | "USenglish" | "english" +% Then a `\selectlanguage{...}' command will be pushed just +% before the `\bibitem...' command for the entry in work. +% 2003/03/31 Harald Harders Fixed bug in detection of "and others" +% 2003/04/29 Harald Harders Fixed bug format of names. For multiple +% names, some of them were not typeset in +% small caps. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block before.title } + +STRINGS { s t language.state language.temp } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'before.title := + "nostate" 'language.state := +} + +FUNCTION {language.state.test} +{ + 'language.temp := + language.temp language.state = + { #1 } + { #0 } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + % next if is for use with `new' FUNCTION {after.authors} + { output.state before.title = + { ": " * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + language empty$ + 'skip$ + { language.state language = + 'skip$ + { "\selectlanguage{\" language * "}" * write$ + newline$ + } + if$ + language 'language.state := + } + if$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +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$ +} + +% new one -> sets what is specified in FUNCTION {output.nonnull} +% if `before.title 'output.state = ... if$' is true +FUNCTION {after.authors} +{ output.state before.all = + 'skip$ + { before.title 'output.state := } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkc} +{ empty$ + swap$ empty$ + and + 'skip$ + 'after.authors + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "\/}" * } + if$ +} + +FUNCTION {smallcaps} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := + namesleft #1 > + { ", " * t smallcaps * } + { numnames #2 > + { "english" language.state.test + "USenglish" language.state.test + or + {"," * } + 'skip$ + if$ + } + 'skip$ + if$ + t "others" = + { " \btxetalshort{.}" * } + { " \btxandshort{.}\ " * t smallcaps * } + if$ + } + if$ + } + { s nameptr "{ll}{, jj}{, f.}{~vv}" format.name$ smallcaps } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { "\ (\btxeditorsshort{.})" * } + { "\ (\btxeditorshort{.})" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { title "t" change.case$ emphasize } + { title emphasize } + if$ + } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month "\ " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { "\ " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { output.state after.block = + { "\Btxvolumeshort{.}" } + { "\btxvolumeshort{.}" } + if$ + volume tie.or.space.connect + series empty$ + 'skip$ + { " \btxofseriesshort{.}\ " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "\btxnumbershort{.}" } + { "\Btxnumbershort{.}" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " \btxinseriesshort{.}\ " * series emphasize * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { output.state mid.sentence = + { edition "l" change.case$ " \btxeditionshort{.}" * } + { edition "t" change.case$ " \btxeditionshort{.}" * } + if$ + } + { edition " \btxeditionshort{.}" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "\btxpagesshort{.}" pages n.dashify tie.or.space.connect } + { "\btxpageshort{.}" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "\btxchaptershort{.}" } + { "english" language.state.test + "USenglish" language.state.test + or + { type "l" change.case$ } + { type } + if$ + } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "\Btxinshort{.}\ " booktitle emphasize * } + { "\Btxinshort{.}\ " format.editors * ": " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + "english" language.state.test + "USenglish" language.state.test + or + { type "t" change.case$ } + { type } + if$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "\Btxtechrepshort{.}" } + 'type + if$ + number empty$ + { "english" language.state.test + "USenglish" language.state.test + or + { type empty$ + { pop$ "\btxtechreplong{}" } + { "t" change.case$ } + if$ + } + 'skip$ + if$ + } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "\Btxinshort{.}\ " journal emphasize * } + if$ + } + { "\Btxinshort{.}\ " key emphasize * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{ll}{, jj}{, f.}{~vv}" format.name$ smallcaps + editor num.names$ duplicate$ + #2 > + { pop$ " \btxetalshort{.}" * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " \btxetalshort{.}" * } + { " \btxandshort{.}\ " * editor #2 "{vv~}{ll}" format.name$ smallcaps * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "\Btxinshort{.}\ " + } + { "\Btxvolumeshort{.}" volume tie.or.space.connect + " \btxofseriesshort{.}\ " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key emphasize * } + if$ + } + { "\Btxinshort{.}\ " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "\Btxinshort{.}\ " booktitle emphasize * } + if$ + } + { "\Btxinshort{.}\ " key emphasize * } + if$ + } + { "\Btxinshort{.}\ " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { journal + title missing$ + { emphasize } + 'skip$ + if$ + "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + after.authors + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization smallcaps output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + after.authors + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + "\btxmastthesis{}" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkc + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + after.authors + format.btitle "title" output.check + new.block + "\btxphdthesis{}" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization smallcaps output } + { format.editors output.nonnull } + if$ + after.authors + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"\btxmonjanshort{.}"} + +MACRO {feb} {"\btxmonfebshort{.}"} + +MACRO {mar} {"\btxmonmarshort{.}"} + +MACRO {apr} {"\btxmonaprshort{.}"} + +MACRO {may} {"\btxmonmayshort{.}"} + +MACRO {jun} {"\btxmonjunshort{.}"} + +MACRO {jul} {"\btxmonjulshort{.}"} + +MACRO {aug} {"\btxmonaugshort{.}"} + +MACRO {sep} {"\btxmonsepshort{.}"} + +MACRO {oct} {"\btxmonoctshort{.}"} + +MACRO {nov} {"\btxmonnovshort{.}"} + +MACRO {dec} {"\btxmondecshort{.}"} + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Softw. Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Programming"} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Gr."} + +MACRO {toms} {"ACM Trans. Math. Softw."} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} + +MACRO {tcs} {"Theoretical Comput. Sci."} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{ll{ }}{ f{ }}{vv{ } }{ 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.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/biblio/bibtex/contrib/germbib/bst/geralpha.bst b/biblio/bibtex/contrib/germbib/bst/geralpha.bst new file mode 100644 index 0000000000..984bbead5b --- /dev/null +++ b/biblio/bibtex/contrib/germbib/bst/geralpha.bst @@ -0,0 +1,1369 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. +% 15-feb-92 (MW) Updated for use with `bibgerman.sty': things like "and" +% change with the language. Switch the language using the +% language field: +% language = "german" | "USenglish" | "english" +% Then a `\selectlanguage{...}' command will be pushed just +% before the `\bibitem...' command for the entry in work. +% 2003/03/31 Harald Harders Fixed bug in detection of "and others" +% 2003/04/29 Harald Harders Fixed bug format of names. For multiple +% names, some of them were not typeset in +% small caps. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label extra.label sort.label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block before.title } + +STRINGS { s t language.state language.temp } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'before.title := + "nostate" 'language.state := +} + +FUNCTION {language.state.test} +{ + 'language.temp := + language.temp language.state = + { #1 } + { #0 } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + % next if is for use with `new' FUNCTION {after.authors} + { output.state before.title = + { ": " * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + language empty$ + 'skip$ + { language.state language = + 'skip$ + { "\selectlanguage{\" language * "}" * write$ + newline$ + } + if$ + language 'language.state := + } + if$ + "\bibitem[" write$ + label write$ + "]{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +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$ +} + +% new one -> sets what is specified in FUNCTION {output.nonnull} +% if `before.title 'output.state = ... if$' is true +FUNCTION {after.authors} +{ output.state before.all = + 'skip$ + { before.title 'output.state := } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkc} +{ empty$ + swap$ empty$ + and + 'skip$ + 'after.authors + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {smallcaps} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + namesleft #1 > + { ", " * t smallcaps * } + { numnames #2 > + { "english" language.state.test + "USenglish" language.state.test + or + {"," * } + 'skip$ + if$ + } + 'skip$ + if$ + t "others" = + { " \btxetalshort{.}" * } + { " \btxandlong{}\ " * t smallcaps * } + if$ + } + if$ + } + { s nameptr "{ll}{, jj}{, ff}{~vv}" format.name$ smallcaps } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { "\ (\btxeditorslong{})" * } + { "\ (\btxeditorlong{})" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { title "t" change.case$ emphasize } + { title emphasize } + if$ + } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { "\ " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { output.state after.block = + { "\Btxvolumelong{}" } + { "\btxvolumelong{}" } + if$ + volume tie.or.space.connect + series empty$ + 'skip$ + { " \btxofserieslong{}\ " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "\btxnumberlong{}" } + { "\Btxnumberlong{}" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " \btxinserieslong{}\ " * series emphasize * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { output.state mid.sentence = + { edition "l" change.case$ " \btxeditionlong{}" * } + { edition "t" change.case$ " \btxeditionlong{}" * } + if$ + } + { edition " \btxeditionlong{}" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "\btxpageslong{}" pages n.dashify tie.or.space.connect } + { "\btxpagelong{}" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "\btxchapterlong{}" } + { "english" language.state.test + "USenglish" language.state.test + or + { type "l" change.case$ } + { type } + if$ + } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "\Btxinlong{}\ " booktitle emphasize * } + { "\Btxinlong{}\ " format.editors * ": " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + "english" language.state.test + "USenglish" language.state.test + or + { type "t" change.case$ } + { type } + if$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "\Btxtechreplong{}" } + 'type + if$ + number empty$ + { "english" language.state.test + "USenglish" language.state.test + or + { type empty$ + { pop$ "\btxtechreplong{}" } + { "t" change.case$ } + if$ + } + 'skip$ + if$ + } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "\Btxinlong{}\ " journal emphasize * } + if$ + } + { "\Btxinlong{}\ " key emphasize * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{ll}{, jj}{, ff}{~vv}" format.name$ smallcaps + editor num.names$ duplicate$ + #2 > + { pop$ " \btxetalshort{.}" * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " \btxetalshort{.}" * } + { " \btxandlong{}\ " * editor #2 "{ff}{~vv}{~ll}{, jj}" format.name$ smallcaps * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "\Btxinlong{}\ " + } + { "\Btxvolumelong{}" volume tie.or.space.connect + " \btxofserieslong{}\ " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key emphasize * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "\Btxinlong{}\ " booktitle emphasize * } + if$ + } + { "\Btxinlong{}\ " key emphasize * } + if$ + } + { "\Btxinlong{}\ " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { journal + title missing$ + { emphasize } + 'skip$ + if$ + "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + after.authors + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization smallcaps output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + after.authors + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + "\btxmastthesis{}" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkc + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + after.authors + format.btitle "title" output.check + new.block + "\btxphdthesis{}" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization smallcaps output } + { format.editors output.nonnull } + if$ + after.authors + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"\btxmonjanlong{}"} + +MACRO {feb} {"\btxmonfeblong{}"} + +MACRO {mar} {"\btxmonmarlong{}"} + +MACRO {apr} {"\btxmonaprlong{}"} + +MACRO {may} {"\btxmonmaylong{}"} + +MACRO {jun} {"\btxmonjunlong{}"} + +MACRO {jul} {"\btxmonjullong{}"} + +MACRO {aug} {"\btxmonauglong{}"} + +MACRO {sep} {"\btxmonseplong{}"} + +MACRO {oct} {"\btxmonoctlong{}"} + +MACRO {nov} {"\btxmonnovlong{}"} + +MACRO {dec} {"\btxmondeclong{}"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +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.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.organization.label + { type$ "manual" = + 'author.key.organization.label + 'author.key.label + if$ + } + if$ + } + 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{ }}{ ff{ }}{ 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.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ calc.label + sort.label + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + * + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label 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} + diff --git a/biblio/bibtex/contrib/germbib/bst/gerapali.bst b/biblio/bibtex/contrib/germbib/bst/gerapali.bst new file mode 100644 index 0000000000..0e4ad7c641 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/bst/gerapali.bst @@ -0,0 +1,1227 @@ +% BibTeX `apalike' bibliography style (24-Jan-88 version) +% Adapted from the `alpha' style, version 0.99a; for BibTeX version 0.99a. +% Copyright (C) 1988, all rights reserved. +% Copying of this file is allowed, provided that if you make any changes at all +% you name it something other than `apalike.bst'. +% This restriction helps ensure that all copies are identical. +% Differences between this style and `alpha' are generally heralded by a `%'. +% The file btxbst.doc has the documentation for alpha.bst. +% +% This style should be used with the `apalike' LaTeX style (apalike.sty). +% \cite's come out like "(Jones, 1986)" in the text but there are no labels +% in the bibliography, and something like "(1986)" comes out immediately +% after the author. Author (and editor) names appear as last name, comma, +% initials. A `year' field is required for every entry, and so is either +% an author (or in some cases, an editor) field or a key field. +% +% Editorial note: +% Many journals require a style like `apalike', but I strongly, strongly, +% strongly recommend that you not use it if you have a choice---use something +% like `plain' instead. Mary-Claire van Leunen (A Handbook for Scholars, +% Knopf, 1979) argues convincingly that a style like `plain' encourages better +% writing than one like `apalike'. Furthermore the strongest arguments for +% using an author-date style like `apalike'---that it's "the most practical" +% (The Chicago Manual of Style, University of Chicago Press, thirteenth +% edition, 1982, pages 400--401)---fall flat on their face with the new +% computer-typesetting technology. For instance page 401 anachronistically +% states "The chief disadvantage of [a style like `plain'] is that additions +% or deletions cannot be made after the manuscript is typed without changing +% numbers in both text references and list." LaTeX sidesteps the disadvantage. +% +% History: +% 15-sep-86 (SK,OP) Original version, by Susan King and Oren Patashnik. +% 10-nov-86 (OP) Truncated the sort.key$ string to the correct length +% in bib.sort.order to eliminate error message. +% 24-jan-88 (OP) Updated for BibTeX version 0.99a, from alpha.bst 0.99a; +% apalike now sorts by author, then year, then title; +% THIS `apalike' VERSION DOES NOT WORK WITH BIBTEX 0.98i. +% 15-feb-92 (MW) Updated for use with `bibgerman.sty': things like "and" +% change with the language. Switch the language using the +% language field: +% language = "german" | "USenglish" | "english" +% Then a `\selectlanguage{...}' command will be pushed just +% before the `\bibitem...' command for the entry in work. + +ENTRY + { address + author + booktitle + chapter + citelabel + edition + editor + howpublished + institution + journal + key + language +% month not used in apalike + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label extra.label sort.label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block before.title } + +STRINGS { s t language.state language.temp } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'before.title := + "nostate" 'language.state := +} + +FUNCTION {language.state.test} +{ + 'language.temp := + language.temp language.state = + { #1 } + { #0 } + if$ +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + % next if is for use with `new' FUNCTION {after.authors} + { output.state before.title = + { ": " * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% apalike needs this function because +% the year has special punctuation; +% apalike ignores the month +FUNCTION {output.year.check} +{ year empty$ + { "empty year in " cite$ * warning$ } + { write$ + "\ (" year * extra.label * ")" * + mid.sentence 'output.state := + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + language empty$ + 'skip$ + { language.state language = + 'skip$ + { "\selectlanguage{\" language * "}" * write$ + newline$ + } + if$ + language 'language.state := + } + if$ + "\bibitem[" write$ + label write$ + "]{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +% new one -> sets what is specified in FUNCTION {output.nonnull} +% if `before.title 'output.state = ... if$' is true +% FUNCTION {after.authors} +% { output.state before.all = +% 'skip$ +% { before.title 'output.state := } +% if$ +% } + +% original -> sets points after (year) and before title +FUNCTION {after.authors} +{ new.block } + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "\/}" * } + if$ +} + +FUNCTION {smallcaps} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := % last name first + namesleft #1 > + { ", " * t smallcaps * } + { numnames #2 > + { "english" language.state.test + "USenglish" language.state.test + or + {"," * } + 'skip$ + if$ + } + 'skip$ + if$ + t "others" = + { " \btxetalshort{.}" * } + { " \btxandshort{.}\ " * t smallcaps * } + if$ + } + if$ + } + { s nameptr "{ll}{, jj}{, ff}{~vv}" format.name$ smallcaps } % last name first + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.key} % this function is just for apalike +{ empty$ + { key field.or.null + duplicate$ empty$ + 'skip$ + { smallcaps } + if$ + } + { "" } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", \btxeditorsshort{.}" * } + { ", \btxeditorshort{.}" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { title "t" change.case$ emphasize } + { title emphasize } + if$ + } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { "\ " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { output.state after.block = + { "\Btxvolumeshort{.}" } + { "\btxvolumeshort{.}" } + if$ + volume tie.or.space.connect + series empty$ + 'skip$ + { " \btxofseriesshort{.}\ " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "\btxnumbershort{.}" } + { "\Btxnumbershort{.}" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " \btxinseriesshort{.}\ " * series emphasize * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { output.state mid.sentence = + { edition "l" change.case$ " \btxeditionshort{.}" * } + { edition "t" change.case$ " \btxeditionshort{.}" * } + if$ + } + { edition " \btxeditionshort{.}" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "\btxpagesshort{.}" pages n.dashify tie.or.space.connect } + { "\btxpageshort{.}" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "\btxchaptershort{.}" } + { "english" language.state.test + "USenglish" language.state.test + or + { type "l" change.case$ } + { type } + if$ + } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "\Btxinshort{.}\ " booktitle emphasize * } + { "\Btxinshort{.}\ " format.editors * ": " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + "english" language.state.test + "USenglish" language.state.test + or + { type "t" change.case$ } + { type } + if$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "\Btxtechreplong{.}" } + 'type + if$ + number empty$ + { "english" language.state.test + "USenglish" language.state.test + or + { type empty$ + { pop$ "\btxtechreplong{.}" } + { "t" change.case$ } + if$ + } + 'skip$ + if$ + } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ "In" % this is for apalike + " \cite{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "\Btxinshort{.}\ " + } + { "\Btxvolumeshort{.}" volume tie.or.space.connect + " \btxofseriesshort{.}\ " * + } + if$ + "\cite{" * crossref * "}" * % this is for apalike +} + +FUNCTION {format.incoll.inproc.crossref} +{ "\Btxinshort{.}\ " % this is for apalike + "\cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + after.authors + format.title "title" output.check + new.block + crossref missing$ + { journal + title missing$ + { emphasize } + 'skip$ + if$ + "journal" output.check + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + output.year.check % special for apalike + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output % special for + output.year.check % apalike + after.authors + format.title "title" output.check + new.block + howpublished output + address output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + output.year.check % special for apalike + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address output % for apalike + new.sentence % there's no year + organization output % here so things + publisher output % are simpler + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output % special for + output.year.check % apalike + after.authors + format.btitle "title" output.check + organization address new.block.checkb + organization output + address output + format.edition output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + after.authors + format.title "title" output.check + new.block + "\btxmastthesis{.}" format.thesis.type output.nonnull + school "school" output.check + address output + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output % special for + output.year.check % apalike + after.authors + format.title output + new.block + howpublished output + new.block + note output + fin.entry +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + after.authors + format.btitle "title" output.check + new.block + "\btxphdthesis{.}" format.thesis.type output.nonnull + school "school" output.check + address output + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output % special for + output.year.check % apalike + after.authors + format.btitle "title" output.check + format.bvolume output + format.number.series output + address output % for apalike + new.sentence % we always output + organization output % a nonempty organization + publisher output % here + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + after.authors + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output % special for + output.year.check % apalike + after.authors + format.title "title" output.check + new.block + note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"\btxmonjanshort{.}"} + +MACRO {feb} {"\btxmonfebshort{.}"} + +MACRO {mar} {"\btxmonmarshort{.}"} + +MACRO {apr} {"\btxmonaprshort{.}"} + +MACRO {may} {"\btxmonmayshort{.}"} + +MACRO {jun} {"\btxmonjunshort{.}"} + +MACRO {jul} {"\btxmonjulshort{.}"} + +MACRO {aug} {"\btxmonaugshort{.}"} + +MACRO {sep} {"\btxmonsepshort{.}"} + +MACRO {oct} {"\btxmonoctshort{.}"} + +MACRO {nov} {"\btxmonnovshort{.}"} + +MACRO {dec} {"\btxmondecshort{.}"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +% There are three apalike cases: one person (Jones), +% two (Jones and de~Bruijn), and more (Jones et~al.). +% This function is much like format.crossref.editors. +% +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ smallcaps + s num.names$ duplicate$ + #2 > + { pop$ " \btxetalshort{.}" * } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " \btxetalshort{.}" * } + { " \btxandshort{.}\ " * s #2 "{vv~}{ll}" format.name$ smallcaps * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ citelabel empty$ + { author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key % apalike uses the whole key + if$ + } + { author format.lab.names } + if$ + } + { citelabel smallcaps } + if$ +} + +FUNCTION {author.editor.key.label} +{ citelabel empty$ + { author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key % apalike uses the whole key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ + } + { citelabel smallcaps } + if$ +} + +FUNCTION {editor.key.label} +{ citelabel empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key % apalike uses the whole key, no organization + if$ + } + { editor format.lab.names } + if$ + } + { citelabel smallcaps } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label % apalike ignores organization + 'author.key.label % for labeling and sorting + if$ + } + if$ + year empty$ + {""} + {", "} % original +% {" "} % ge„ndert fr Andreas Diplomarbeit 30/04/92 + if$ % these three lines are + * % for apalike, which +% year field.or.null purify$ #-1 #4 substring$ % uses all four digits % original + year field.or.null % ge„ndert fr Andreas Diplomarbeit 19/09/92 um Jahresangaben wie 1988a, 1988b zu erm”glichen + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ % apalike uses initials + s nameptr "{ll{ }}{ ff{ }}{vv{ } }{ jj{ }}" format.name$ 't := % <= here + 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.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} + +% apalike uses two sorting passes; the first one sets the +% labels so that the `a's, `b's, etc. can be computed; +% the second pass puts the references in "correct" order. +% The presort function is for the first pass. It computes +% label, sort.label, and title, and then concatenates. +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ % for + 'sort.label := % apalike + sort.label % style + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT % by label, sort.label, title---for final label calculation + +STRINGS { last.label next.extra } % apalike labels are only for the text; + +INTEGERS { last.extra.num } % there are none in the bibliography + +FUNCTION {initialize.extra.label.stuff} % and hence there is no `longest.label' +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := +} + +FUNCTION {forward.pass} +{ last.label 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 := + label 'last.label := + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + label extra.label * 'label := + extra.label 'next.extra := +} + +EXECUTE {initialize.extra.label.stuff} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +% Now that the label is right we sort for real, +% on sort.label then year then title. This is +% for the second sorting pass. +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT % by sort.label, year, title---giving final bibliography order + +FUNCTION {begin.bib} +{ preamble$ empty$ % no \etalchar in apalike + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{}" write$ newline$ % no labels in apalike +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + diff --git a/biblio/bibtex/contrib/germbib/bst/gerplain.bst b/biblio/bibtex/contrib/germbib/bst/gerplain.bst new file mode 100644 index 0000000000..5e2de73cd4 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/bst/gerplain.bst @@ -0,0 +1,1209 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. +% 15-feb-92 (MW) Updated for use with `bibgerman.sty': things like "and" +% change with the language. Switch the language using the +% language field: +% language = "german" | "USenglish" | "english" +% Then a `\selectlanguage{...}' command will be pushed just +% before the `\bibitem...' command for the entry in work. +% 2003/03/31 Harald Harders Fixed bug in detection of "and others" +% 2003/04/29 Harald Harders Fixed bug format of names. For multiple +% names, some of them were not typeset in +% small caps. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block before.title } + +STRINGS { s t language.state language.temp } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'before.title := + "nostate" 'language.state := +} + +FUNCTION {language.state.test} +{ + 'language.temp := + language.temp language.state = + { #1 } + { #0 } + if$ +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + % next if is for use with `new' FUNCTION {after.authors} + { output.state before.title = + { ": " * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + language empty$ + 'skip$ + { language.state language = + 'skip$ + { "\selectlanguage{\" language * "}" * write$ + newline$ + } + if$ + language 'language.state := + } + if$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +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$ +} + +% new one -> sets what is specified in FUNCTION {output.nonnull} +% if `before.title 'output.state = ... if$' is true +FUNCTION {after.authors} +{ output.state before.all = + 'skip$ + { before.title 'output.state := } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkc} +{ empty$ + swap$ empty$ + and + 'skip$ + 'after.authors + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {smallcaps} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + namesleft #1 > + { ", " * t smallcaps * } + { numnames #2 > + { "english" language.state.test + "USenglish" language.state.test + or + {"," * } + 'skip$ + if$ + } + 'skip$ + if$ + t "others" = + { " \btxetalshort{.}" * } + { " \btxandlong{}\ " * t smallcaps * } + if$ + } + if$ + } + { s nameptr "{ll}{, jj}{, ff}{~vv}" format.name$ smallcaps } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { "\ (\btxeditorslong{})" * } + { "\ (\btxeditorlong{})" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { title "t" change.case$ emphasize } + { title emphasize } + if$ + } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { "\ " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { output.state after.block = + { "\Btxvolumelong{}" } + { "\btxvolumelong{}" } + if$ + volume tie.or.space.connect + series empty$ + 'skip$ + { " \btxofserieslong{}\ " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "\btxnumberlong{}" } + { "\Btxnumberlong{}" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " \btxinserieslong{}\ " * series emphasize * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { output.state mid.sentence = + { edition "l" change.case$ " \btxeditionlong{}" * } + { edition "t" change.case$ " \btxeditionlong{}" * } + if$ + } + { edition " \btxeditionlong{}" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "\btxpageslong{}" pages n.dashify tie.or.space.connect } + { "\btxpagelong{}" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "\btxchapterlong{}" } + { "english" language.state.test + "USenglish" language.state.test + or + { type "l" change.case$ } + { type } + if$ + } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "\Btxinlong{}\ " booktitle emphasize * } + { "\Btxinlong{}\ " format.editors * ": " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + "english" language.state.test + "USenglish" language.state.test + or + { type "t" change.case$ } + { type } + if$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "\Btxtechreplong{}" } + 'type + if$ + number empty$ + { "english" language.state.test + "USenglish" language.state.test + or + { type empty$ + { pop$ "\btxtechreplong{}" } + { "t" change.case$ } + if$ + } + 'skip$ + if$ + } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "\Btxinlong{}\ " journal emphasize * } + if$ + } + { "\Btxinlong{}\ " key emphasize * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{ll}{, jj}{, ff}{~vv}" format.name$ smallcaps + editor num.names$ duplicate$ + #2 > + { pop$ " \btxetalshort{.}" * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " \btxetalshort{.}" * } + { " \btxandlong{}\ " * editor #2 "{ff}{~vv}{~ll}{, jj}" format.name$ smallcaps * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "\Btxinlong{}\ " + } + { "\Btxvolumelong{}" volume tie.or.space.connect + " \btxofserieslong{}\ " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key emphasize * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "\Btxinlong{}\ " booktitle emphasize * } + if$ + } + { "\Btxinlong{}\ " key emphasize * } + if$ + } + { "\Btxinlong{}\ " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { journal + title missing$ + { emphasize } + 'skip$ + if$ + "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + after.authors + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization smallcaps output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + after.authors + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + "\btxmastthesis{}" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkc + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + after.authors + format.btitle "title" output.check + new.block + "\btxphdthesis{}" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization smallcaps output } + { format.editors output.nonnull } + if$ + after.authors + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"\btxmonjanlong{}"} + +MACRO {feb} {"\btxmonfeblong{}"} + +MACRO {mar} {"\btxmonmarlong{}"} + +MACRO {apr} {"\btxmonaprlong{}"} + +MACRO {may} {"\btxmonmaylong{}"} + +MACRO {jun} {"\btxmonjunlong{}"} + +MACRO {jul} {"\btxmonjullong{}"} + +MACRO {aug} {"\btxmonauglong{}"} + +MACRO {sep} {"\btxmonseplong{}"} + +MACRO {oct} {"\btxmonoctlong{}"} + +MACRO {nov} {"\btxmonnovlong{}"} + +MACRO {dec} {"\btxmondeclong{}"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{ll{ }}{ ff{ }}{vv{ } }{ 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.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/biblio/bibtex/contrib/germbib/bst/gerunsrt.bst b/biblio/bibtex/contrib/germbib/bst/gerunsrt.bst new file mode 100644 index 0000000000..293ef709c5 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/bst/gerunsrt.bst @@ -0,0 +1,1063 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. +% 15-feb-92 (MW) Updated for use with `bibgerman.sty': things like "and" +% change with the language. Switch the language using the +% language field: +% language = "german" | "USenglish" | "english" +% Then a `\selectlanguage{...}' command will be pushed just +% before the `\bibitem...' command for the entry in work. +% 2003/03/31 Harald Harders Fixed bug in detection of "and others" +% 2003/04/29 Harald Harders Fixed bug format of names. For multiple +% names, some of them were not typeset in +% small caps. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block before.title } + +STRINGS { s t language.state language.temp } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'before.title := + "nostate" 'language.state := +} + +FUNCTION {language.state.test} +{ + 'language.temp := + language.temp language.state = + { #1 } + { #0 } + if$ +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + % next if is for use with `new' FUNCTION {after.authors} + { output.state before.title = + { ": " * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + language empty$ + 'skip$ + { language.state language = + 'skip$ + { "\selectlanguage{\" language * "}" * write$ + newline$ + } + if$ + language 'language.state := + } + if$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +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$ +} + +% new one -> sets what is specified in FUNCTION {output.nonnull} +% if `before.title 'output.state = ... if$' is true +FUNCTION {after.authors} +{ output.state before.all = + 'skip$ + { before.title 'output.state := } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkc} +{ empty$ + swap$ empty$ + and + 'skip$ + 'after.authors + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {smallcaps} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + namesleft #1 > + { ", " * t smallcaps * } + { numnames #2 > + { "english" language.state.test + "USenglish" language.state.test + or + {"," * } + 'skip$ + if$ + } + 'skip$ + if$ + t "others" = + { " \btxetalshort{.}" * } + { " \btxandlong{}\ " * t smallcaps * } + if$ + } + if$ + } + { s nameptr "{ll}{, jj}{, ff}{~vv}" format.name$ smallcaps } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { "\ (\btxeditorslong{})" * } + { "\ (\btxeditorlong{})" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { title "t" change.case$ emphasize } + { title emphasize } + if$ + } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { "\ " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { output.state after.block = + { "\Btxvolumelong{}" } + { "\btxvolumelong{}" } + if$ + volume tie.or.space.connect + series empty$ + 'skip$ + { " \btxofserieslong{}\ " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "\btxnumberlong{}" } + { "\Btxnumberlong{}" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " \btxinserieslong{}\ " * series emphasize * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { "english" language.state.test + "USenglish" language.state.test + or + { output.state mid.sentence = + { edition "l" change.case$ " \btxeditionlong{}" * } + { edition "t" change.case$ " \btxeditionlong{}" * } + if$ + } + { edition " \btxeditionlong{}" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "\btxpageslong{}" pages n.dashify tie.or.space.connect } + { "\btxpagelong{}" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "\btxchapterlong{}" } + { "english" language.state.test + "USenglish" language.state.test + or + { type "l" change.case$ } + { type } + if$ + } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "\Btxinlong{}\ " booktitle emphasize * } + { "\Btxinlong{}\ " format.editors * ": " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + "english" language.state.test + "USenglish" language.state.test + or + { type "t" change.case$ } + { type } + if$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "\Btxtechreplong{}" } + 'type + if$ + number empty$ + { "english" language.state.test + "USenglish" language.state.test + or + { type empty$ + { pop$ "\btxtechreplong{}" } + { "t" change.case$ } + if$ + } + 'skip$ + if$ + } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "\Btxinlong{}\ " journal emphasize * } + if$ + } + { "\Btxinlong{}\ " key emphasize * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{ll}{, jj}{, ff}{~vv}" format.name$ smallcaps + editor num.names$ duplicate$ + #2 > + { pop$ " \btxetalshort{.}" * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " \btxetalshort{.}" * } + { " \btxandlong{}\ " * editor #2 "{ff}{~vv}{~ll}{, jj}" format.name$ smallcaps * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "\Btxinlong{}\ " + } + { "\Btxvolumelong{}" volume tie.or.space.connect + " \btxofserieslong{}\ " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key emphasize * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "\Btxinlong{}\ " booktitle emphasize * } + if$ + } + { "\Btxinlong{}\ " key emphasize * } + if$ + } + { "\Btxinlong{}\ " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { journal + title missing$ + { emphasize } + 'skip$ + if$ + "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + after.authors + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + after.authors + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization smallcaps output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + after.authors + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + "\btxmastthesis{}" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkc + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + after.authors + format.btitle "title" output.check + new.block + "\btxphdthesis{}" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization smallcaps output } + { format.editors output.nonnull } + if$ + after.authors + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + after.authors + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"\btxmonjanlong{}"} + +MACRO {feb} {"\btxmonfeblong{}"} + +MACRO {mar} {"\btxmonmarlong{}"} + +MACRO {apr} {"\btxmonaprlong{}"} + +MACRO {may} {"\btxmonmaylong{}"} + +MACRO {jun} {"\btxmonjunlong{}"} + +MACRO {jul} {"\btxmonjullong{}"} + +MACRO {aug} {"\btxmonauglong{}"} + +MACRO {sep} {"\btxmonseplong{}"} + +MACRO {oct} {"\btxmonoctlong{}"} + +MACRO {nov} {"\btxmonnovlong{}"} + +MACRO {dec} {"\btxmondeclong{}"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/biblio/bibtex/contrib/germbib/document/apalike.doc b/biblio/bibtex/contrib/germbib/document/apalike.doc new file mode 100644 index 0000000000..8861e11e21 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/document/apalike.doc @@ -0,0 +1,60 @@ +% apalike.sty style, used in conjunction with apalike.bst, +% will produce an apa-like bibliography style: +% +% 1) Bibliography entries formatted alphabetically, last name +% first, each entry having a hanging indentation and no label. +% 2) References in the following formats: +% (Author, 1986) +% (Author and Author, 1986) +% (Author et al., 1986). +% 3) Multiple references in the form (Author1, 1986; Author2, 1987) +% +% To be used as an optional argument to the \documentstyle command; for example +% \documentstyle[11pt,apalike]{book} +% +% 16-Sep-86, original version by Susan King and Oren Patashnik. +% 13-Oct-87 changes: +% Fixed bug in last line by adding the {} that disappeard when +% the \hbox{} was removed from the pre-APALIKE definition; +% added club and widow penalties; +% patched the \newblock LaTeX bug from `-.07em' to simply `.07em'; +% and made this work for document styles that don't define `chapter'. +% +% +% Use parens instead of brackets for \cite, and no label in the bibliography +% +\def\@cite#1#2{(#1\if@tempswa , #2\fi)} +\def\@biblabel#1{} + +% Set length of hanging indentation for bibliography entries +% +\newlength{\bibhang} +\setlength{\bibhang}{2em} + +% \thebibliography environment depends on whether or not `chapter's can exist +% +\@ifundefined{chapter}{\def\thebibliography#1{\section*{References\@mkboth + {REFERENCES}{REFERENCES}}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}}% +{\def\thebibliography#1{\chapter*{Bibliography\@mkboth + {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}} + +% `; ' goes between cites, and there's no \hbox around individual cites +% +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{; }\@ifundefined + {b@\@citeb}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +{\csname b@\@citeb\endcsname}}}{#1}} diff --git a/biblio/bibtex/contrib/germbib/document/btxbst.doc b/biblio/bibtex/contrib/germbib/document/btxbst.doc new file mode 120000 index 0000000000..557d46b8f4 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/document/btxbst.doc @@ -0,0 +1 @@ +../../../base/btxbst.doc
\ No newline at end of file diff --git a/biblio/bibtex/contrib/germbib/document/btxdoc.bib b/biblio/bibtex/contrib/germbib/document/btxdoc.bib new file mode 120000 index 0000000000..1df0298851 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/document/btxdoc.bib @@ -0,0 +1 @@ +../../../base/btxdoc.bib
\ No newline at end of file diff --git a/biblio/bibtex/contrib/germbib/document/btxdoc.tex b/biblio/bibtex/contrib/germbib/document/btxdoc.tex new file mode 100644 index 0000000000..987b1659c2 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/document/btxdoc.tex @@ -0,0 +1,1119 @@ +% Copyright (C) 1988, all rights reserved. + +\def\symbol#1{\char #1\relax}
+\def\bsl{{\tt\symbol{'134}}}
+\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +\title{B\kern-.05em{\large I}\kern-.025em{\large B}\kern-.08em\TeX ing} +\author{Oren Patashnik} +\date{February 8, 1988} + +\documentstyle[mynormal]{article} +\begin{document} + +\maketitle + +\section{Overview} + +[This document will be expanded when \BibTeX\ version 1.00 comes out. +Please report typos, omissions, inaccuracies, +and especially unclear explanations +to me ({\tt patashnik@SCORE.STANFORD.EDU}). +Suggestions for improvements are wanted and welcome.] + +This documentation, for \BibTeX\ version 0.99b, +is meant for general \BibTeX\ users; +bibliography-style designers should read this document +and then read ``Designing \BibTeX\ Styles''~\cite{btxhak}, +which is meant for just them. + +This document has three parts: +Section~\ref{differences} +describes the differences between versions 0.98i and 0.99b +of \BibTeX\ and between the corresponding versions of the standard styles; +Section~\ref{latex-appendix} +updates Appendix~B.2 of the \LaTeX\ book~\cite{latex}; +and Section~\ref{odds-and-ends} +gives some general and specific tips +that aren't documented elsewhere. +It's assumed throughout that you're familiar with +the relevant sections of the \LaTeX\ book. + +This documentation also serves as sample input to help +\BibTeX\ implementors get it running. +For most documents, this one included, you produce the reference list by: +running \LaTeX\ on the document (to produce the {\tt aux} file(s)), +then running \BibTeX\ (to produce the {\tt bbl} file), +then \LaTeX\ twice more (first to find the information in the {\tt bbl} file +and then to get the forward references correct). +In very rare circumstances you may need an extra \BibTeX/\LaTeX\ run. + +\BibTeX\ version 0.99b should be used with \LaTeX\ version 2.09, +for which the closed bibliography format is the default; +to get the open format, use the optional document style {\tt openbib} +(in an open format there's a line break between major blocks of a +reference-list entry; in a closed format the blocks run together).] + +Note: \BibTeX\ 0.99b is not compatible with the old style files; +nor is \BibTeX\ 0.98i compatible with the new ones +(the new \BibTeX, however, is compatible with old database files). + +Note for implementors: \BibTeX\ provides logical-area names +\hbox{\tt TEXINPUTS:} for bibliography-style files and +\hbox{\tt TEXBIB:} for database files it can't otherwise find. + + +\section{Changes} +\label{differences} + +This section describes the differences between +\BibTeX\ versions 0.98i and 0.99b, and also between +the corresponding standard styles. +There were a lot of differences; +there will be a lot fewer between 0.99 and 1.00. + + +\subsection{New \BibTeX\ features} +\label{features} + +The following list explains \BibTeX's new features and how to use them. +\begin{enumerate} + +\item +With the single command `\hbox{\verb|\nocite{*}|}' +you can now include in the reference list +every entry in the database files, without having to explicitly +\verb|\cite| or \hbox{\verb|\nocite|} each entry. +Giving this command, in essence, +\hbox{\verb|\nocite|}s +all the enties in the database, in database order, +at the very spot in your document +where you give the command. + +\item +\label{concat} +You can now have as a field value (or an {\tt @STRING} definition) +the concatenation of several strings. +For example if you've defined +\begin{verbatim} + @STRING( WGA = " World Gnus Almanac" ) +\end{verbatim} +then it's easy to produce nearly-identical +{\tt title} fields for different entries: +\begin{verbatim} + @BOOK(almanac-66, + title = 1966 # WGA, + . . . + @BOOK(almanac-67, + title = 1967 # WGA, +\end{verbatim} +and so on. Or, you could have a field like +\begin{verbatim} + month = "1~" # jan, +\end{verbatim} +which would come out something like +`\hbox{\verb|1~January|}' or `\hbox{\verb|1~Jan.|}' in the {\tt bbl} file, +depending on how your bibliography style defines +the {\tt jan} abbreviation. +You may concatenate as many strings as you like +(except that there's a limit to the overall length +of the resulting field); +just be sure to put the concatenation character `{\tt\#}'$\!$, +surrounded by optional spaces or newlines, +between each successive pair of strings. + +\item +\BibTeX\ has a new cross-referencing feature, +explained by an example. +Suppose you say {\tt\bsl cite\{no-gnats\}} in your document, +and suppose you have these two entries in your database file: +\begin{verbatim} + @INPROCEEDINGS(no-gnats, + crossref = "gg-proceedings", + author = "Rocky Gneisser", + title = "No Gnats Are Taken for Granite", + pages = "133-139") + . . . + @PROCEEDINGS(gg-proceedings, + editor = "Gerald Ford and Jimmy Carter", + title = "The Gnats and Gnus 1988 Proceedings", + booktitle = "The Gnats and Gnus 1988 Proceedings") +\end{verbatim} +Two things happen. +First, the special \hbox{\tt crossref} field tells \BibTeX\ +that the \hbox{\tt no-gnats} entry should inherit +any fields it's missing from +the entry it cross references, \hbox{\tt gg-proceedings}. +In this case it in inherits the two fields +\hbox{\tt editor} and \hbox{\tt booktitle}. +Note that, in the standard styles at least, +the \hbox{\tt booktitle} field is irrelevant +for the \hbox{\tt PROCEEDINGS} entry type. +The \hbox{\tt booktitle} field appears here +in the \hbox{\tt gg-proceedings} entry +only so that the entries that cross reference it +may inherit the field. +No matter how many papers from this meeting exist in the database, +this \hbox{\tt booktitle} field need only appear once. + +The second thing that happens: +\BibTeX\ automatically puts the entry \hbox{\tt gg-proceedings} +into the reference list if it's cross +referenced by two or more entries that you +\verb|\cite| or \hbox{\verb|\nocite|}, +even if you don't \verb|\cite| or \hbox{\verb|\nocite|} +the \hbox{\tt gg-proceedings} entry itself. +So \hbox{\tt gg-proceedings} will automatically appear +on the reference list if one other entry +besides \hbox{\tt no-gnats} cross references it. + +To guarantee that this scheme works, however, +a cross-referenced entry must occur later in the database files +than every entry that cross-references it. +Thus, putting all cross-referenced entries at the end makes sense. +(Moreover, you may not reliably nest cross references; +that is, a cross-referenced entry may +not itself reliably cross reference an entry. +This is almost certainly not something you'd +want to do, though.) + +One final note: +This cross-referencing feature is completely unrelated +to the old \BibTeX's cross referencing, +which is still allowed. +Thus, having a field like +\begin{verbatim} + note = "Jones \cite{jones-proof} improves the result" +\end{verbatim} +is not affected by the new feature. + +\item +\BibTeX\ now handles accented characters. +For example if you have an entry with the two fields +\begin{verbatim} + author = "Kurt G{\"o}del", + year = 1931, +\end{verbatim} +and if you're using the \hbox{\tt alpha} bibliography style, +then \BibTeX\ will construct the label +\hbox{[G{\"o}d31]} for this entry, which is what you'd want. +To get this feature to work you must place the entire accented +character in braces; +in this case either \hbox{\verb|{\"o}|} +or \hbox{\verb|{\"{o}}|} will do. +Furthermore these braces must not themselves be +enclosed in braces (other than the ones that might delimit +the entire field or the entire entry); +and there must be a backslash +as the very first character inside the braces. +Thus neither \hbox{\verb|{G{\"{o}}del}|} +nor \hbox{\verb|{G\"{o}del}|} will work for this example. + +This feature handles all the accented characters and +all but the nonbackslashed foreign symbols found in Tables +3.1 and~3.2 of the \LaTeX\ book. +This feature behaves similarly for ``accents'' you might define; +we'll see an example shortly. +For the purposes of counting letters in labels, +\BibTeX\ considers everything contained inside the braces +as a single letter. + +\item +\BibTeX\ also handles hyphenated names. +For example if you have an entry with +\begin{verbatim} + author = "Jean-Paul Sartre", +\end{verbatim} +and if you're using the \hbox{\tt abbrv} style, +then the result is `J.-P. Sartre'$\!$. + +\item +\label{preamble} +There's now an \hbox{\verb|@PREAMBLE|} command +for the database files. +This command's syntax is just like \hbox{\verb|@STRING|}'s, +except that there is no name or equals-sign, just the string. +Here's an example: +\begin{verbatim} + @PREAMBLE{ "\newcommand{\noopsort}[1]{} " + # "\newcommand{\singleletter}[1]{#1} " } +\end{verbatim} +(note the use of concatenation here, too). +The standard styles output whatever information you give this command +(\LaTeX\ macros most likely) directly to the {\tt bbl} file. +We'll look at one possible use of this command, +based on the \hbox{\verb|\noopsort|} command just defined. + +The issue here is sorting (alphabetizing). +\BibTeX\ does a pretty good job, +but occasionally weird circumstances conspire to confuse \BibTeX: +Suppose that you have entries in your database for +the two books in a two-volume set by the same author, +and that you'd like volume~1 to appear +just before volume~2 in your reference list. +Further suppose that there's now a second edition of volume~1, +which came out in 1973, say, +but that there's still just one edition of volume~2, +which came out in 1971. +Since the {\tt plain} standard style +sorts by author and then year, +it will place volume~2 first +(because its edition came out two years earlier) +unless you help \BibTeX. +You can do this by using the {\tt year} fields below +for the two volumes: +\begin{verbatim} + year = "{\noopsort{a}}1973" + . . . + year = "{\noopsort{b}}1971" +\end{verbatim} +According to the definition of \hbox{\verb|\noopsort|}, +\LaTeX\ will print nothing but the true year for these fields. +But \BibTeX\ will be perfectly happy pretending that +\hbox{\verb|\noopsort|} specifies some fancy accent +that's supposed to adorn the `a' and the~`b'; +thus when \BibTeX\ sorts it will pretend that +`a1973' and `b1971' are the real years, +and since `a' comes before~`b'$\!$, it will place volume~1 before volume~2, +just what you wanted. +By the way, if this author has any other works included +in your database, you'd probably want to use instead something like +\hbox{\verb|{\noopsort{1968a}}1973|} and +\hbox{\verb|{\noopsort{1968b}}1971|}, +so that these two books would come out in a reasonable spot +relative to the author's other works +(this assumes that 1968 results in a reasonable spot, +say because that's when the first edition of volume~1 appeared). + +There is a limit to the number of \hbox{\verb|@PREAMBLE|} commands +you may use, but you'll never exceed this limit if +you restrict yourself to one per database file; +this is not a serious restriction, +given the concatenation feature (item~\ref{concat}). + +\item +\BibTeX's sorting algorithm is now stable. +This means that if two entries have identical sort keys, +those two entries will appear in citation order. +(The bibliography styles construct these sort keys---% +usually the author information followed by the year and the title.) + +\item +\BibTeX\ no longer does case conversion for file names; +this will make \BibTeX\ easier to install on Unix systems, for example. + +\item +It's now easier to add code for processing a +command-line {\tt aux}-file name. + +\end{enumerate} + + +\subsection{Changes to the standard styles} + +This section describes changes to the standard styles +({\tt plain}, {\tt unsrt}, {\tt alpha}, {\tt abbrv}) +that affect ordinary users. +Changes that affect style designers appear in +the document ``Designing \BibTeX\ Styles''~\cite{btxhak}. +\begin{enumerate} + +\item +In general, sorting is now by ``author''$\!$, then year, then title---% +the old versions didn't use the year field. +(The {\tt alpha} style, however, sorts first by label, +then ``author''$\!$, year, and title.) +The quotes around author mean that some entry types +might use something besides the author, like the editor or organization. + +\item +Many unnecessary ties (\verb|~|) have been removed. +\LaTeX\ thus will produce slightly fewer +`\hbox{\tt Underfull} \verb|\hbox|' messages +when it's formatting the reference list. + +\item +Emphasizing (\hbox{\verb|{\em ...}|}) +has replaced italicizing (\hbox{\verb|{\it ...}|}). +This will almost never result in a difference +between the old output and the new. + +\item +The {\tt alpha} style now uses a superscripted~`$^{+}$' instead of a~`*' +to represent names omitted in constructing the label. +If you really liked it the way it was, however, +or if you want to omit the character entirely, +you don't have to modify the style file---% +you can override the~`$^{+}$' by +redefining the \hbox{\verb|\etalchar|} command +that the {\tt alpha} style writes onto the {\tt bbl} file +(just preceding the \hbox{\verb|\thebibliography|} environment); +use \LaTeX's \hbox{\verb|\renewcommand|} inside +a database \hbox{\tt @PREAMBLE} command, +described in the previous subsection's item~\ref{preamble}. + +\item +The {\tt abbrv} style now uses `Mar.' and `Sept.'\ +for those months rather than `March' and `Sep.' + +\item +The standard styles use \BibTeX's new cross-referencing feature +by giving a \verb|\cite| of the cross-referenced entry and by +omitting from the cross-referencing entry +(most of the) information that appears +in the cross-referenced entry. +These styles do this when +a titled thing (the cross-referencing entry) +is part of a larger titled thing (the cross-referenced entry). +There are five such situations: +when (1)~an \hbox{\tt INPROCEEDINGS} +(or \hbox{\tt CONFERENCE}, which is the same) +cross references a \hbox{\tt PROCEEDINGS}; +when (2)~a {\tt BOOK}, (3)~an \hbox{\tt INBOOK}, +or (4)~an \hbox{\tt INCOLLECTION} +cross references a {\tt BOOK} +(in these cases, the cross-referencing entry is a single +volume in a multi-volume work); +and when (5)~an \hbox{\tt ARTICLE} +cross references an \hbox{\tt ARTICLE} +(in this case, the cross-referenced entry is really a journal, +but there's no \hbox{\tt JOURNAL} entry type; +this will result in warning messages about +an empty \hbox{\tt author} and \hbox{\tt title} for the journal---% +you should just ignore these warnings). + +\item +The \hbox{\tt MASTERSTHESIS} and \hbox{\tt PHDTHESIS} +entry types now take an optional {\tt type} field. +For example you can get the standard styles to +call your reference a `Ph.D.\ dissertation' +instead of the default `PhD thesis' by including a +\begin{verbatim} + type = "{Ph.D.} dissertation" +\end{verbatim} +in your database entry. + +\item +Similarly, the \hbox{\tt INBOOK} and \hbox{\tt INCOLLECTION} +entry types now take an optional {\tt type} field, +allowing `section~1.2' instead of the default `chapter~1.2'$\!$. +You get this by putting +\begin{verbatim} + chapter = "1.2", + type = "Section" +\end{verbatim} +in your database entry. + +\item +The \hbox{\tt BOOKLET}, \hbox{\tt MASTERSTHESIS}, +and \hbox{\tt TECHREPORT} entry types now format +their \hbox{\tt title} fields as if they were +\hbox{\tt ARTICLE} \hbox{\tt title}s +rather than \hbox{\tt BOOK} \hbox{\tt title}s. + +\item +The \hbox{\tt PROCEEDINGS} and \hbox{\tt INPROCEEDINGS} +entry types now use the \hbox{\tt address} field +to tell where a conference was held, +rather than to give the address +of the publisher or organization. +If you want to include the +publisher's or organization's address, +put it in the \hbox{\tt publisher} +or \hbox{\tt organization} field. + +\item +The \hbox{\tt BOOK}, \hbox{\tt INBOOK}, \hbox{\tt INCOLLECTION}, +and \hbox{\tt PROCEEDINGS} entry types now allow either +\hbox{\tt volume} or \hbox{\tt number} (but not both), +rather than just \hbox{\tt volume}. + +\item +The \hbox{\tt INCOLLECTION} entry type now allows +a \hbox{\tt series} and an \hbox{\tt edition} field. + +\item +The \hbox{\tt INPROCEEDINGS} and \hbox{\tt PROCEEDINGS} +entry types now allow either a \hbox{\tt volume} or \hbox{\tt number}, +and also a \hbox{\tt series} field. + +\item +The \hbox{\tt UNPUBLISHED} entry type now outputs, +in one block, the \hbox{\tt note} field +followed by the date information. + +\item +The \hbox{\tt MANUAL} entry type now prints out +the \hbox{\tt organization} in the first block +if the \hbox{\tt author} field is empty. + +\item +The {\tt MISC} entry type now issues a warning +if all the optional fields are empty +(that is, if the entire entry is empty). + +\end{enumerate} + + +\section{The Entries} +\label{latex-appendix} + +This section is simply a corrected version of +Appendix~B.2 of the \LaTeX\ book~\cite{latex}, +\copyright~1986, by Addison-Wesley. +The basic scheme is the same, only a few details have changed. + + +\subsection{Entry Types} + +When entering a reference in the database, the first thing to decide +is what type of entry it is. No fixed classification scheme can be +complete, but \BibTeX\ provides enough entry types to handle almost +any reference reasonably well. + +References to different types of publications contain different +information; a reference to a journal article might include the volume +and number of the journal, which is usually not meaningful for a book. +Therefore, database entries of different types have different fields. +For each entry type, the fields are divided into three classes: +\begin{description} + +\item[required] +Omitting the field will produce a warning message +and, rarely, a badly formatted bibliography entry. +If the required information is not meaningful, +you are using the wrong entry type. +However, if the required information is meaningful +but, say, already included is some other field, +simply ignore the warning. + +\item[optional] +The field's information will be used if present, +but can be omitted without causing any formatting problems. +You should include the optional field if it will help the reader. + +\item[ignored] +The field is ignored. +\BibTeX\ ignores any field that is not required or optional, so you can include +any fields you want in a \hbox{\tt bib} file entry. It's a good idea +to put all relevant information about +a reference in its \hbox{\tt bib} file entry---even information that +may never appear in the bibliography. For example, if you want to +keep an abstract of a paper in a computer file, put it in an \hbox{\tt +abstract} field in the paper's \hbox{\tt bib} file entry. The +\hbox{\tt bib} file is likely to be as good a place as any for the +abstract, and it is possible to design a bibliography style for +printing selected abstracts. +Note: Misspelling a field name will +result in its being ignored, +so watch out for typos +(especially for optional fields, +since \BibTeX\ won't warn you when those are missing). + +\end{description} + +The following are the standard entry types, along with their required +and optional fields, that are used by the standard bibliography styles. +The fields within each class (required or optional) +are listed in order of occurrence in the output, +except that a few entry types may perturb the order slightly, +depending on what fields are missing. +These entry types are similar to those adapted by Brian Reid +from the classification scheme of van~Leunen~\cite{van-leunen} +for use in the {\em Scribe\/} system. +The meanings of the individual fields are explained in the next section. +Some nonstandard bibliography styles may ignore some optional fields +in creating the reference. +Remember that, when used in the \hbox{\tt bib} +file, the entry-type name is preceded by an \hbox{\tt @} character. + +\begin{description} +\sloppy + +\item[article\hfill] An article from a journal or magazine. +Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt journal}, +\hbox{\tt year}. +Optional fields: \hbox{\tt volume}, \hbox{\tt number}, +\hbox{\tt pages}, \hbox{\tt month}, \hbox{\tt note}. + +\item[book\hfill] A book with an explicit publisher. +Required fields: \hbox{\tt author} or \hbox{\tt editor}, +\hbox{\tt title}, \hbox{\tt publisher}, \hbox{\tt year}. +Optional fields: \hbox{\tt volume} or \hbox{\tt number}, \hbox{\tt series}, +\hbox{\tt address}, \hbox{\tt edition}, \hbox{\tt month}, +\hbox{\tt note}. + +\item[booklet\hfill] A work that is printed and bound, +but without a named publisher or sponsoring institution. +Required field: \hbox{\tt title}. +Optional fields: \hbox{\tt author}, \hbox{\tt howpublished}, +\hbox{\tt address}, \hbox{\tt month}, \hbox{\tt year}, \hbox{\tt note}. + +\item[conference\hfill] The same as {\tt INPROCEEDINGS}, +included for {\em Scribe\/} compatibility. + +\item[inbook\hfill] A part of a book, +which may be a chapter (or section or whatever) and/or a range of pages. +Required fields: \hbox{\tt author} or \hbox{\tt editor}, \hbox{\tt title}, +\hbox{\tt chapter} and/or \hbox{\tt pages}, \hbox{\tt publisher}, +\hbox{\tt year}. +Optional fields: \hbox{\tt volume} or \hbox{\tt number}, \hbox{\tt series}, +\hbox{\tt type}, \hbox{\tt address}, +\hbox{\tt edition}, \hbox{\tt month}, \hbox{\tt note}. + +\item[incollection\hfill] A part of a book having its own title. +Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt booktitle}, +\hbox{\tt publisher}, \hbox{\tt year}. +Optional fields: \hbox{\tt editor}, \hbox{\tt volume} or \hbox{\tt number}, +\hbox{\tt series}, \hbox{\tt type}, \hbox{\tt chapter}, \hbox{\tt pages}, +\hbox{\tt address}, \hbox{\tt edition}, \hbox{\tt month}, \hbox{\tt note}. + +\item[inproceedings\hfill] An article in a conference proceedings. +Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt booktitle}, +\hbox{\tt year}. +Optional fields: \hbox{\tt editor}, \hbox{\tt volume} or \hbox{\tt number}, +\hbox{\tt series}, \hbox{\tt pages}, \hbox{\tt address}, \hbox{\tt month}, +\hbox{\tt organization}, \hbox{\tt publisher}, \hbox{\tt note}. + +\item[manual\hfill] Technical documentation. Required field: \hbox{\tt title}. +Optional fields: \hbox{\tt author}, \hbox{\tt organization}, +\hbox{\tt address}, \hbox{\tt edition}, \hbox{\tt month}, \hbox{\tt year}, +\hbox{\tt note}. + +\item[mastersthesis\hfill] A Master's thesis. +Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt school}, +\hbox{\tt year}. +Optional fields: \hbox{\tt type}, \hbox{\tt address}, \hbox{\tt month}, +\hbox{\tt note}. + +\item[misc\hfill] Use this type when nothing else fits. +Required fields: none. +Optional fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt howpublished}, +\hbox{\tt month}, \hbox{\tt year}, \hbox{\tt note}. + +\item[phdthesis\hfill] A PhD thesis. +Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt school}, +\hbox{\tt year}. +Optional fields: \hbox{\tt type}, \hbox{\tt address}, \hbox{\tt month}, +\hbox{\tt note}. + +\item[proceedings\hfill] The proceedings of a conference. +Required fields: \hbox{\tt title}, \hbox{\tt year}. +Optional fields: \hbox{\tt editor}, \hbox{\tt volume} or \hbox{\tt number}, +\hbox{\tt series}, \hbox{\tt address}, \hbox{\tt month}, +\hbox{\tt organization}, \hbox{\tt publisher}, \hbox{\tt note}. + + +\item[techreport\hfill] A report published by a school or other institution, +usually numbered within a series. +Required fields: \hbox{\tt author}, +\hbox{\tt title}, \hbox{\tt institution}, \hbox{\tt year}. +Optional fields: \hbox{\tt type}, \hbox{\tt number}, \hbox{\tt address}, +\hbox{\tt month}, \hbox{\tt note}. + +\item[unpublished\hfill] A document having an author and title, +but not formally published. +Required fields: \hbox{\tt author}, \hbox{\tt title}, \hbox{\tt note}. +Optional fields: \hbox{\tt month}, \hbox{\tt year}. + +\end{description} + +In addition to the fields listed above, each entry type also has an +optional \hbox{\tt key} field, used in some styles +for alphabetizing, for cross referencing, +or for forming a \hbox{\verb|\bibitem|} label. +You should include a \hbox{\tt key} field for any entry whose +``author'' information is missing; +the ``author'' information is usually the \hbox{\tt author} field, +but for some entry types it can be the \hbox{\tt editor} +or even the \hbox{\tt organization} field +(Section~\ref{odds-and-ends} describes this in more detail). +Do not confuse the \hbox{\tt key} field with the key that appears in the +\hbox{\verb|\cite|} command and at the beginning of the database entry; +this field is named ``key'' only for compatibility with {\it Scribe}. + + +\subsection{Fields} + +Below is a description of all fields +recognized by the standard bibliography styles. +An entry can also contain other fields, which are ignored by those styles. +\begin{description} + +\item[address\hfill] +Usually the address of the \hbox{\tt publisher} or other type +of institution. +For major publishing houses, +van~Leunen recommends omitting the information entirely. +For small publishers, on the other hand, you can help the +reader by giving the complete address. + +\item[annote\hfill] +An annotation. +It is not used by the standard bibliography styles, +but may be used by others that produce an annotated bibliography. + +\item[author\hfill] +The name(s) of the author(s), +in the format described in the \LaTeX\ book. + +\item[booktitle\hfill] +Title of a book, part of which is being cited. +See the \LaTeX\ book for how to type titles. +For book entries, use the \hbox{\tt title} field instead. + +\item[chapter\hfill] +A chapter (or section or whatever) number. + +\item[crossref\hfill] +The database key of the entry being cross referenced. + +\item[edition\hfill] +The edition of a book---for example, ``Second''$\!$. +This should be an ordinal, and +should have the first letter capitalized, as shown here; +the standard styles convert to lower case when necessary. + +\item[editor\hfill] +Name(s) of editor(s), typed as indicated in the \LaTeX\ book. +If there is also an \hbox{\tt author} field, then +the \hbox{\tt editor} field gives the editor of the book or collection +in which the reference appears. + +\item[howpublished\hfill] +How something strange has been published. +The first word should be capitalized. + +\item[institution\hfill] +The sponsoring institution of a technical report. + +\item[journal\hfill] +A journal name. +Abbreviations are provided for many journals; see the {\it Local Guide}. + +\item[key\hfill] +Used for alphabetizing, cross referencing, and creating a label when +the ``author'' information +(described in Section~\ref{odds-and-ends}) is missing. +This field should not be confused with the key that appears in the +\hbox{\verb|\cite|} command and at the beginning of the database entry. + +\item[month\hfill] +The month in which the work was +published or, for an unpublished work, in which it was written. +You should use the standard three-letter abbreviation, +as described in Appendix B.1.3 of the \LaTeX\ book. + +\item[note\hfill] +Any additional information that can help the reader. +The first word should be capitalized. + +\item[number\hfill] +The number of a journal, magazine, technical report, +or of a work in a series. +An issue of a journal or magazine is usually +identified by its volume and number; +the organization that issues a +technical report usually gives it a number; +and sometimes books are given numbers in a named series. + +\item[organization\hfill] +The organization that sponsors a conference or that publishes a \hbox{manual}. + +\item[pages\hfill] +One or more page numbers or range of numbers, +such as \hbox{\tt 42--111} or \hbox{\tt 7,41,73--97} or \hbox{\tt 43+} +(the `{\tt +}' in this last example indicates pages following +that don't form a simple range). +To make it easier to maintain {\em Scribe\/}-compatible databases, +the standard styles convert a single dash (as in \hbox{\tt 7-33}) +to the double dash used in \TeX\ to denote number ranges +(as in \hbox{\tt 7--33}). + +\item[publisher\hfill] +The publisher's name. + +\item[school\hfill] +The name of the school where a thesis was written. + +\item[series\hfill] +The name of a series or set of books. +When citing an entire book, the the \hbox{\tt title} field +gives its title and an optional \hbox{\tt series} field gives the +name of a series or multi-volume set +in which the book is published. + +\item[title\hfill] +The work's title, typed as explained in the \LaTeX\ book. + +\item[type\hfill] +The type of a technical report---for example, +``Research Note''$\!$. + +\item[volume\hfill] +The volume of a journal or multivolume book. + +\item[year\hfill] +The year of publication or, for +an unpublished work, the year it was written. +Generally it should consist of four numerals, such as {\tt 1984}, +although the standard styles can handle any {\tt year} whose +last four nonpunctuation characters are numerals, +such as `\hbox{(about 1984)}'$\!$. + +\end{description} + + +\section{Helpful Hints} +\label{odds-and-ends} + +This section gives some random tips +that aren't documented elsewhere, +at least not in this detail. +They are, roughly, in order +of least esoteric to most. +First, however, a brief spiel. + +I understand that there's often little choice in choosing +a bibliography style---journal~$X$ says you must use style~$Y$ +and that's that. +If you have a choice, however, I strongly recommend that you +choose something like the {\tt plain} standard style. +Such a style, van~Leunen~\cite{van-leunen} argues convincingly, +encourages better writing than the alternatives---% +more concrete, more vivid. + +{\em The Chicago Manual of Style\/}~\cite{chicago}, +on the other hand, +espouse the author-date system, +in which the citation might appear in the text as `(Jones, 1986)'$\!$. +I argue that this system, +besides cluttering up the +text with information that may or may not be relevant, +encourages the passive voice and vague writing. +Furthermore the strongest arguments for +using the author-date system---like ``it's the most practical''---% +fall flat on their face with the advent +of computer-typesetting technology. +For instance the {\em Chicago Manual\/} contains, +right in the middle of page~401, this anachronism: +``The chief disadvantage of [a style like {\tt plain}] is that additions +or deletions cannot be made after the manuscript is typed without changing +numbers in both text references and list.'' +\LaTeX, obviously, sidesteps the disadvantage. + +Finally, the logical deficiencies of the author-date style +are quite evident once you've written a program to implement it. +For example, in a large bibliography, +using the standard alphabetizing scheme, +the entry for `(Aho et~al., 1983b)' +might be half a page later than the one for `(Aho et~al., 1983a)'$\!$. +Fixing this problem results in even worse ones. +What a mess. +(I have, unfortunately, programmed such a style, +and if you're saddled with an unenlightened publisher +or if you don't buy my propaganda, +it's available from the Rochester style collection.) + +Ok, so the spiel wasn't very brief; +but it made me feel better, +and now my blood pressure is back to normal. +Here are the tips for using \BibTeX\ +with the standard styles +(although many of them hold for nonstandard styles, too). +\begin{enumerate} + +\item +With \BibTeX's style-designing language +you can program general database manipulations, +in addition to bibliography styles. +For example it's a fairly easy task for someone familiar with the language +to produce a database-key/author index of all the entries in a database. +Consult the {\em Local Guide\/} to see +what tools are available on your system. + +\item +The standard style's thirteen entry types +do reasonably well at formatting most entries, +but no scheme with just thirteen formats +can do everything perfectly. +Thus, you should feel free to be creative +in how you use these entry types +(but if you have to be too creative, +there's a good chance you're using the wrong entry type). + +\item +Don't take the field names too seriously. +Sometimes, for instance, you might have to include +the publisher's address along with the publisher's name +in the \hbox{\tt publisher} field, +rather than putting it in the \hbox{\tt address} field. +Or sometimes, difficult entries work best when you +make judicious use of the {\tt note} field. + +\item +Don't take the warning messages too seriously. +Sometimes, for instance, the year appears in the title, +as in {\em The 1966 World Gnus Almanac}. +In this case it's best to omit the {\tt year} field +and to ignore \BibTeX's warning message. + +\item +If you have too many names to list in an +\hbox{\tt author} or \hbox{\tt editor} field, +you can end the list with ``and others''; +the standard styles appropriately append an ``et~al.'' + +\item +In general, if you want to keep \BibTeX\ from changing +something to lower case, you enclose it in braces. +You might not get the effect you want, however, +if the very first character after the left brace is a backslash. +The ``special characters'' item later in this section explains. + +\item +For {\em Scribe\/} compatibility, the database files +allow an \hbox{\tt @COMMENT} command; it's not really +needed because \BibTeX\ allows in the database files +any comment that's not within an entry. +If you want to comment out an entry, +simply remove the `{\tt @}' character preceding the entry type. + +\item +The standard styles have journal abbreviations that are +computer-science oriented; +these are in the style files primarily for the example. +If you have a different set of journal abbreviations, +it's sensible to put them in \hbox{\tt @STRING} commands +in their own database file and to list this database file +as an argument to \LaTeX's \hbox{\verb|\bibliography|} command +(but you should list this argument before the ones that +specify real database entries). + +\item +It's best to use the three-letter abbreviations for the month, +rather than spelling out the month yourself. +This lets the bibliography style be consistent. +And if you want to include information for the day of the month, +the {\tt month} field is usually the best place. +For example +\begin{verbatim} + month = jul # "~4," +\end{verbatim} +will probably produce just what you want. + +\item +If you're using the \hbox{\tt unsrt} style +(references are listed in order of citation) +along with the \hbox{\verb|\nocite{*}|} feature +(all entries in the database are included), +the placement of the \hbox{\verb|\nocite{*}|} command +within your document file will determine the reference order. +According to the rule given in Section~\ref{features}: +If the command is placed at the beginning of the document, +the entries will be listed in exactly the order +they occur in the database; +if it's placed at the end, +the entries that you explicitly +\hbox{\verb|\cite|} or \hbox{\verb|\nocite|} +will occur in citation order, +and the remaining database entries will be in database order. + +\item +For theses, van Leunen recommends not giving +the school's department after the name of the degree, +since schools, not departments, issue degrees. +If you really think that giving the department information +will help the reader find the thesis, +put that information in the \hbox{\tt address} field. + +\item +The \hbox{\tt MASTERSTHESIS} and \hbox{\tt PHDTHESIS} entry types +are so named for {\em Scribe\/} compatibility; +\hbox{\tt MINORTHESIS} and \hbox{\tt MAJORTHESIS} +probably would have been better names. +Keep this in mind when trying to classify +a non-U.S.\ thesis. + +\item +Here's yet another suggestion for what to do when an author's +name appears slightly differently in two publications. +Suppose, for example, two journals articles use these fields. +\begin{verbatim} + author = "Donald E. Knuth" + . . . + author = "D. E. Knuth" +\end{verbatim} +There are two possibilities. +You could (1)~simply leave them as is, +or (2)~assuming you know for sure that +these authors are one and the same person, +you could list both in the form that the author prefers +(say, `Donald~E.\ Knuth'). +In the first case, the entries might be alphabetized incorrectly, +and in the second, the slightly altered name might +foul up somebody's electronic library search. +But there's a third possibility, which is the one I prefer. +You could convert the second journal's field to +\begin{verbatim} + author = "D[onald] E. Knuth" +\end{verbatim} +This avoids the pitfalls of the previous two solutions, +since \BibTeX\ alphabetizes this as if the brackets weren't there, +and since the brackets clue the reader in that a full first name +was missing from the original. +Of course it introduces another pitfall---`D[onald]~E.\ Knuth' looks ugly---% +but in this case I think the increase in accuracy outweighs +the loss in aesthetics. + +\item +\LaTeX's comment character `{\tt\%}' is not a comment character +in the database files. + +\item +Here's a more complete description of +the ``author'' information referred to in previous sections. +For most entry types the ``author'' information +is simply the \hbox{\tt author} field. +However: +For the \hbox{\tt BOOK} and \hbox{\tt INBOOK} entry types +it's the \hbox{\tt author} field, but if there's no author +then it's the \hbox{\tt editor} field; +for the \hbox{\tt MANUAL} entry type +it's the \hbox{\tt author} field, but if there's no author +then it's the \hbox{\tt organization} field; +and for the \hbox{\tt PROCEEDINGS} entry type +it's the \hbox{\tt editor} field, but if there's no editor +then it's the \hbox{\tt organization} field. + +\item +When creating a label, +the \hbox{\tt alpha} style uses the ``author'' information described above, +but with a slight change---% +for the \hbox{\tt MANUAL} and \hbox{\tt PROCEEDINGS} entry types, +the {\tt key} field takes precedence over the \hbox{\tt organization} field. +Here's a situation where this is useful. +\begin{verbatim} + organization = "The Association for Computing Machinery", + key = "ACM" +\end{verbatim} +Without the {\tt key} field, the \hbox{\tt alpha} style +would make a label from the first three letters of information +in the \hbox{\tt organization} field; +\hbox{\tt alpha} knows to strip off the `\hbox{\tt The }'$\!$, +but it would still form a label like `\hbox{[Ass86]}'$\!$, +which, however intriguing, is uninformative. +Including the {\tt key} field, as above, +would yield the better label `\hbox{[ACM86]}'$\!$. + +You won't always need the {\tt key} field to override the +\hbox{\tt organization}, though: +With +\begin{verbatim} + organization = "Unilogic, Ltd.", +\end{verbatim} +for instance, the \hbox{\tt alpha} style would +form the perfectly reasonable label `\hbox{[Uni86]}'$\!$. + +\item +Section~\ref{features} discusses accented characters. +To \BibTeX, an accented character is really a special case +of a ``special character''$\!$, +which consists of everything from a left brace at the top-most level, +immediately followed by a backslash, +up through the matching right brace. +For example in the field +\begin{verbatim} + author = "\AA{ke} {Jos{\'{e}} {\'{E}douard} G{\"o}del" +\end{verbatim} +there are just two special characters, +`\hbox{\verb|{\'{E}douard}|}' and `\hbox{\verb|{\"o}|}' +(the same would be true if the pair of double quotes +delimiting the field were braces instead). +In general, \BibTeX\ will not do any processing +of a \TeX\ or \LaTeX\ control sequence inside a special character, +but it {\em will\/} process other characters. +Thus a style that converts all titles to lower case +would convert +\begin{verbatim} + The {\TeX BOOK\NOOP} Experience +\end{verbatim} +to +\begin{verbatim} + The {\TeX book\NOOP} experience +\end{verbatim} +(the `{\tt The}' is still capitalized +because it's the first word of the title). + +This special-character scheme is useful for handling accented characters, +for getting \BibTeX's alphabetizing to do what you want, +and, since \BibTeX\ counts an entire special character as just one letter, +for stuffing extra characters inside labels. +The file \hbox{\tt XAMPL.BIB} distributed with \BibTeX\ +gives examples of all three uses. + +\item +This final item of the section describes \BibTeX's names +(which appear in the \hbox{\tt author} or \hbox{\tt editor} field) +in slightly more detail than what +appears in Appendix~B of the \LaTeX\ book. +In what follows, a ``name'' corresponds to a person. +(Recall that you separate multiple names in a single field +with the word ``and''$\!$, surrounded by spaces, +and not enclosed in braces. +This item concerns itself with the structure of a single name.) + +Each name consists of four parts: First, von, Last, and~Jr; +each part consists of a (possibly empty) list of name-tokens. +The Last part will be nonempty if any part is, +so if there's just one token, it's always a Last token. + +Recall that Per Brinch~Hansen's name should be typed +\begin{verbatim} + "Brinch Hansen, Per" +\end{verbatim} +The First part of his name has the single token ``Per''; +the Last part has two tokens, ``Brinch'' and ``Hansen''; +and the von and Jr parts are empty. +If you had typed +\begin{verbatim} + "Per Brinch Hansen" +\end{verbatim} +instead, \BibTeX\ would (erroneously) think ``Brinch'' were a First-part token, +just as ``Paul'' is a First-part token in ``John~Paul Jones''$\!$, +so this erroneous form would have two First tokens and one Last token. + +Here's another example: +\begin{verbatim} + "Charles Louis Xavier Joseph de la Vall{\'e}e Poussin" +\end{verbatim} +This name has four tokens in the First part, two in the von, and +two in the Last. +Here \BibTeX\ knows where one part ends and the other begins because +the tokens in the von part begin with lower-case letters. + +In general, it's a von token if the first letter at brace-level~0 +is in lower case. +Since technically everything +in a ``special character'' is at brace-level~0, +you can trick \BibTeX\ into thinking that +a token is or is not a von token by prepending a dummy +special character whose first letter past the \TeX\ control sequence +is in the desired case, upper or lower. + +To summarize, \BibTeX\ allows three possible forms for the name: +\begin{verbatim} + "First von Last" + "von Last, First" + "von Last, Jr, First" +\end{verbatim} +You may almost always use the first form; +you shouldn't if either there's a Jr part, +or the Last part has multiple tokens but there's no von part. + +\end{enumerate} + +\bibliography{btxdoc} +\bibliographystyle{plain} +\end{document} diff --git a/biblio/bibtex/contrib/germbib/document/btxhak.tex b/biblio/bibtex/contrib/germbib/document/btxhak.tex new file mode 100644 index 0000000000..fe49d79cd7 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/document/btxhak.tex @@ -0,0 +1,623 @@ +% Copyright (C) 1988, all rights reserved. + +\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +\title{Designing B\kern-.05em{\large I}\kern-.025em{\large B}\kern-.08em\TeX\ + Styles} +\author{Oren Patashnik} +\date{February 8, 1988} + +\documentstyle[mynormal]{article} +\begin{document} + +\maketitle + +\setcounter{section}{4} +\section{Bibliography-style hacking} +\label{style} + +This document starts (and ends) with Section~\ref{style}, +because in reality it is the final section of ``\BibTeX ing''~\cite{btxdoc}, +the general documentation for \BibTeX. +But that document was meant for all \BibTeX\ users, +while this one is just for style designers, +so the two are physically separate. +Still, you should be completely familiar with ``\BibTeX ing''$\!$, +and all references in this document +to sections and section numbers +assume that the two documents are one. + +This section, +along with the standard-style documentation file \hbox{\tt btxbst.doc}, +should explain how to modify +existing style files and to produce new ones. +If you're a serious style hacker you should be familiar +with van~Leunen~\cite{van-leunen} for points of style, +with Lamport~\cite{latex} and Knuth~\cite{texbook} for formatting matters, +and perhaps with {\em Scribe\/}~\cite{scribe} for compatibility details. +And while you're at it, if you don't read the great little book by Strunk and +White~\cite{strunk-and-white}, you should at least look at its +entries in the database and the reference list +to see how \BibTeX\ handles multiple names. + +To create a new style, +it's best to start with an existing style that's close to yours, +and then modify that. +This is true even if you're simply updating an old style +for \BibTeX\ version 0.99 +(I've updated four nonstandard styles, +so I say this with some experience). +If you want to insert into a new style +some function you'd written for an old (version 0.98i) style, +keep in mind that the order of the arguments to +the assignment ({\tt :=}) function has been reversed. +When you're finished with your style, +you may want to try running it on the entire \hbox{\tt XAMPL.BIB} database +to make sure it handles all the standard entry types. + +If you find any bugs in the standard styles, +or if there are things you'd like to do +with bibliography-style files but can't, +please complain to Oren Patashnik. + + +\subsection{General description} + +You write bibliography styles in a postfix stack language. It's +not too hard to figure out how by looking at the standard-style documentation, +but this description fills in a few details (it will fill in more +details if there's a demand for it). + +Basically the style file is a program, written in an unnamed language, that +tells \BibTeX\ how to format the entries that will go in the reference list +(henceforth ``the entries'' will be ``the entry list'' +or simply ``the list''$\!$, context permitting). +This programming language has ten commands, described in the next subsection. +These commands manipulate the language's objects: +constants, variables, functions, the stack, and the entry list. +(Warning: The terminology in this documentation, +chosen for ease of explanation, is slightly different from \BibTeX's. +For example, this documentation's ``variables'' and ``functions'' +are both ``functions'' to \BibTeX. +Keep this in mind when interpreting \BibTeX's error messages.) + +There are two types of functions: {\it built-in\/} ones that \BibTeX\ provides +(these are described in Section~\ref{built-in-fns}), and ones you define +using either the \hbox{\tt MACRO} or \hbox{\tt FUNCTION} command. + +Your most time-consuming task, as a style designer, +will be creating or modifying functions +using the \hbox{\tt FUNCTION} command +(actually, becoming familiar with the references listed above will be +more time consuming, but assume for the moment that that's done). + +Let's look at a sample function fragment. +Suppose you have a string variable named \hbox{\tt label} +and an integer variable named \hbox{\tt lab.width}, +and suppose you want to append the character `{\tt a}' to \hbox{\tt label} +and to increment \hbox{\tt lab.width}: +\begin{verbatim} + . . . + label "a" * 'label := % label := label * "a" + lab.width #1 + 'lab.width := % lab.width := lab.width + 1 + . . . +\end{verbatim} +In the first line, +\hbox{\tt label} pushes that variable's value onto the stack. +Next, the {\tt "a"} pushes the string constant `{\tt a}' onto the stack. +Then the built-in function {\tt *} pops the top two strings and +pushes their concatenation. +The \hbox{\tt 'label} pushes that variable's name onto the stack. +And finally, the built-in function {\tt :=} pops +the variable name and the concatenation and performs the assignment. +\BibTeX\ treats the stuff following the {\tt \%} as a comment +in the style file. +The second line is similar except that it uses {\tt \#1}, +with no spaces intervening between the `{\tt \#}' and the `{\tt 1}'$\!$, +to push this integer constant. + +The nonnull spacing here is arbitrary: multiple spaces, tabs, or newlines +are equivalent to a single one (except that you're probably better off +not having blank lines within commands, as explained shortly). + +For string constants, absolutely any printing character +is legal between two consecutive double quotes, but \BibTeX\ here +(and only here) treats upper- and lower-case equivalents as different. +Furthermore, spacing {\em is\/} relevant within a string constant, +and you mustn't split a string constant across lines +(that is, the beginning and ending double quotes must be on the same line). + +Variable and function names may not begin with a numeral and +may not contain any of the ten restricted characters +on page~143 of the \LaTeX\ book, +but may otherwise contain any printing characters. +Also, \BibTeX\ considers upper- and lower-case equivalents to be the same. + +Integers and strings are the only value types for constants and variables +(booleans are implemented simply as 0-or-1 integers). +There are three kinds of variables: +\begin{description} + +\item[global variables\hfill] These are either integer- or string-valued, +declared using an \hbox{\tt INTEGERS} or \hbox{\tt STRINGS} command. + +\item[entry variables\hfill] These are either integer- or string-valued, +declared using the \hbox{\tt ENTRY} command. +Each has a value for each entry on the list +(example: a variable \hbox{\tt label} might store +the label string you'll use for the entry). + +\item[fields\hfill] These are string-valued, read-only variables +that store the information from the database file; +their values are set by the \hbox{\tt READ} command. +As with entry variables, each has a value for each entry. +\end{description} + + +\subsection{Commands} + +There are ten style-file commands: +Five (\hbox{\tt ENTRY}, \hbox{\tt FUNCTION}, \hbox{\tt INTEGERS}, +\hbox{\tt MACRO}, and \hbox{\tt STRINGS}) +declare and define variables and functions; +one (\hbox{\tt READ}) reads in the database information; +and four (\hbox{\tt EXECUTE}, \hbox{\tt ITERATE}, \hbox{\tt REVERSE}, +and \hbox{\tt SORT}) manipulate the entries and produce output. +Although the command names appear here in upper case, +\BibTeX\ ignores case differences. + +Some restrictions: +There must be exactly one \hbox{\tt ENTRY} and one \hbox{\tt READ} command; +the \hbox{\tt ENTRY} command, all \hbox{\tt MACRO} commands, +and certain \hbox{\tt FUNCTION} commands +(see next subsection's description of \hbox{\tt call.type\$}) +must precede the \hbox{\tt READ} command; +and the \hbox{\tt READ} command must precede the four that +manipulate the entries and produce output. + +Also it's best (but not essential) to leave at least one blank line +between commands and to leave no blank lines within a command; +this helps \BibTeX\ recover from any syntax errors you make. + +You must enclose each argument of every command in braces. +Look at the standard-style documentation +for syntactic issues not described in this section. +Here are the ten commands: +\begin{description} + +\item[\hbox{\tt ENTRY}\hfill] +Declares the fields and entry variables. +It has three arguments, each a (possibly empty) list of variable names. +The three lists are of: +fields, integer entry variables, and string entry variables. +There is an additional field that \BibTeX\ automatically +declares, \hbox{\tt crossref}, used for cross referencing. +And there is an additional string entry variable automatically declared, +\hbox{\tt sort.key\$}, used by the \hbox{\tt SORT} command. +Each of these variables has a value for each entry on the list. + +\item[\hbox{\tt EXECUTE}\hfill] +Executes a single function. +It has one argument, the function name. + +\item[\hbox{\tt FUNCTION}\hfill] +Defines a new function. +It has two arguments; the first is the function's name and the +second is its definition. +You must define a function before using it; +recursive functions are thus illegal. + +\item[\hbox{\tt INTEGERS}\hfill] +Declares global integer variables. +It has one argument, a list of variable names. +There are two such automatically-declared variables, +\hbox{\tt entry.max\$} and \hbox{\tt global.max\$}, +used for limiting the lengths of string variables. +You may have any number of these commands, but a variable's declaration +must precede its use. + +\item[\hbox{\tt ITERATE}\hfill] +Executes a single function, once +for each entry in the list, in the list's current order +(initially the list is in citation order, but the \hbox{\tt SORT} +command may change this). +It has one argument, the function name. + +\item[\hbox{\tt MACRO}\hfill] +Defines a string macro. +It has two arguments; the first is the macro's name, which is treated like +any other variable or function name, +and the second is its definition, which must be double-quote-delimited. +You must have one for each three-letter month abbreviation; +in addition, you should have one for common journal names. +The user's database may override any definition you define using this command. +If you want to define a string the user can't touch, +use the \hbox{\tt FUNCTION} command, which has a compatible syntax. + +\item[\hbox{\tt READ}\hfill] +Dredges up from the database file +the field values for each entry in the list. +It has no arguments. +If a database entry doesn't have a value for a field +(and probably no database entry will have a value for every field), +that field variable is marked as missing for the entry. + +\item[\hbox{\tt REVERSE}\hfill] +Exactly the same as the +\hbox{\tt ITERATE} command except that it executes the function +on the entry list in reverse order. + +\item[\hbox{\tt SORT}\hfill] +Sorts the entry list using +the values of the string entry variable \hbox{\tt sort.key\$}. +It has no arguments. + +\item[\hbox{\tt STRINGS}\hfill] +Declares global string variables. +It has one argument, a list of variable names. +You may have any number of these commands, but a variable's declaration +must precede its use. +\end{description} + + +\subsection{The built-in functions} +\label{built-in-fns} + +Before we get to the built-in functions, +a few words about some other built-in objects. +There is one built-in string entry variable, \hbox{\tt sort.key\$}, +which the style program must set if the style is to do sorting. +There is one built-in field, \hbox{\tt crossref}, +used for the cross referencing feature +described in Section~4. +And there are two built-in integer global variables, +\hbox{\tt entry.max\$} and \hbox{\tt global.max\$}, +which are set by default to some internal \BibTeX\ constants; +you should truncate strings to these lengths before +you assign to string variables, +so as to not generate any \BibTeX\ warning messages. + +There are currently 37 built-in functions. +Every built-in function with a letter in its name ends with a `{\tt \$}'$\!$. +In what follows, ``first''$\!$, ``second''$\!$, +and so on refer to the order popped. +A ``literal'' is an element on the stack, and it will be either +an integer value, a string value, a variable or function name, +or a special value denoting a missing field. +If any popped literal has an incorrect type, \BibTeX\ complains and pushes +the integer 0 or the null string, depending on whether the function +was supposed to push an integer or string. +\begin{description} + +\item[\hbox{\tt >}\hfill] +Pops the top two (integer) literals, +compares them, and pushes the integer 1 if the second is greater than +the first, 0 otherwise. + +\item[\hbox{\tt <}\hfill] +Analogous. + +\item[\hbox{\tt =}\hfill] +Pops the top two (both integer or both string) literals, +compares them, +and pushes the integer 1 if they're equal, 0 otherwise. + +\item[\hbox{\tt +}\hfill] +Pops the top two (integer) literals and pushes their sum. + +\item[\hbox{\tt -}\hfill] +Pops the top two (integer) literals and pushes their difference +(the first subtracted from the second). + +\item[\hbox{\tt *}\hfill] +Pops the top two (string) literals, +concatenates them (in reverse order, that is, the order in which +pushed), and pushes the resulting string. + +\item[\hbox{\tt :=}\hfill] +Pops the top two literals and assigns +to the first (which must be a global or entry variable) +the value of the second. + +\item[\hbox{\tt add.period\$}\hfill] +Pops the top (string) literal, +adds a `{\tt .}' to it if the last non`{\tt \}}' character +isn't a `{\tt .}'$\!$, `{\tt ?}', or `{\tt !}'$\!$, +and pushes this resulting string. + +\item[\hbox{\tt call.type\$}\hfill] +Executes the function whose name is the entry type of an entry. +For example if an entry is of type {\tt book}, this function executes +the {\tt book} function. +When given as an argument to the \hbox{\tt ITERATE} command, +\hbox{\tt call.type\$} actually produces the output for the entries. +For an entry with an unknown type, +it executes the function \hbox{\tt default.type}. +Thus you should define (before the \hbox{\tt READ} command) one function +for each standard entry type as well as a \hbox{\tt default.type} function. + +\item[\hbox{\tt change.case\$}\hfill] +Pops the top two (string) literals; +it changes the case of the second according to the +specifications of the first, as follows. (Note: The word `letters' in +the next sentence refers only to those at brace-level~0, the top-most +brace level; no other characters are changed, except perhaps for +``special characters''$\!$, described in Section~4.) +If the first literal is the +string~`{\tt t}'$\!$, it converts to lower case all letters except the very +first character in the string, which it leaves alone, and except the +first character following any colon and then nonnull white space, +which it also leaves alone; if it's the string~`{\tt l}'$\!$, it converts all +letters to lower case; and if it's the string~`{\tt u}'$\!$, it converts all +letters to upper case. +It then pushes this resulting string. If either +type is incorrect, it complains and pushes the null string; however, +if both types are correct but the specification string (i.e., the +first string) isn't one of the legal ones, it merely pushes the second +back onto the stack, after complaining. (Another note: It ignores +case differences in the specification string; for example, the strings +{\tt t} and {\tt T} are equivalent for the purposes of this built-in +function.) + +\item[\hbox{\tt chr.to.int\$}\hfill] +Pops the top (string) literal, +makes sure it's a single character, converts it to the +corresponding ASCII integer, and pushes this integer. + +\item[\hbox{\tt cite\$}\hfill] +Pushes the string that was the +\hbox{\verb|\cite|}-command argument for this entry. + +\item[\hbox{\tt duplicate\$}\hfill] +Pops the top literal from the stack and pushes two copies of it. + +\item[\hbox{\tt empty\$}\hfill] +Pops the top literal and pushes +the integer 1 if it's a missing field or a string having no +non-white-space characters, 0 otherwise. + +\item[\hbox{\tt format.name\$}\hfill] +Pops the top three literals +(they are a string, an integer, and a string literal). +The last string literal represents a name list (each name +corresponding to a person), the integer literal specifies which name +to pick from this list, and the first string literal specifies how to +format this name, as explained in the next subsection. +Finally, this function pushes the formatted name. + +\item[\hbox{\tt if\$}\hfill] +Pops the top three literals (they +are two function literals and an integer literal, in that order); +if the integer is greater than 0, it executes the second literal, +else it executes the first. + +\item[\hbox{\tt int.to.chr\$}\hfill] +Pops the top (integer) literal, +interpreted as the ASCII integer value of a single character, +converts it to the corresponding single-character string, and pushes +this string. + +\item[\hbox{\tt int.to.str\$}\hfill] +Pops the top (integer) literal, +converts it to its (unique) string equivalent, and pushes this string. + +\item[\hbox{\tt missing\$}\hfill] +Pops the top literal and +pushes the integer 1 if it's a missing field, 0~otherwise. + +\item[\hbox{\tt newline\$}\hfill] +Writes onto the {\tt bbl} file +what's accumulated in the output buffer. +It writes a blank line if and only if the output buffer is empty. +Since \hbox{\tt write\$} does reasonable line breaking, you should use +this function only when you want a blank line or an explicit line break. + +\item[\hbox{\tt num.names\$}\hfill] +Pops the top (string) literal +and pushes the number of names the string represents---one plus +the number of occurrences of the substring ``and'' (ignoring case differences) +surrounded by nonnull white-space at the top brace level. + +\item[\hbox{\tt pop\$}\hfill] +Pops the top of the stack but +doesn't print it; this gets rid of an unwanted stack literal. + +\item[\hbox{\tt preamble\$}\hfill] +Pushes onto the stack the concatenation of all the +\hbox{\tt @PREAMBLE} strings read from the database files. + +\item[\hbox{\tt purify\$}\hfill] +Pops the top (string) literal, +removes nonalphanumeric characters except for white-space characters and +hyphens and ties (these all get converted to a space), removes +certain alphabetic characters contained in the control sequences +associated with a ``special character''$\!$, and pushes the resulting string. + +\item[\hbox{\tt quote\$}\hfill] +Pushes the string consisting of the double-quote character. + +\item[\hbox{\tt skip\$}\hfill] +Is a no-op. + +\item[\hbox{\tt stack\$}\hfill] +Pops and prints the whole stack; +it's meant to be used for style designers while debugging. + +\item[\hbox{\tt substring\$}\hfill] +Pops the top three literals +(they are the two integers literals {\it len\/} and {\it start}, and a +string literal, in that order). +It pushes the substring of the (at most) {\it len\/} consecutive characters +starting at the {\it start\/}th character (assuming 1-based indexing) +if {\it start\/} is positive, and ending at the $-${\it start\/}th character +from the end if {\it start\/} is negative +(where the first character from the end is the last character). + +\item[\hbox{\tt swap\$}\hfill] +Swaps the top two literals on the stack. + +\item[\hbox{\tt text.length\$}\hfill] +Pops the top (string) literal, +and pushes the number of text characters it contains, where an +accented character (more precisely, a ``special character''$\!$, +defined in Section~4) +counts as a single text character, even if it's missing +its matching right brace, and where braces don't count as +text characters. + +\item[\hbox{\tt text.prefix\$}\hfill] +Pops the top two literals +(the integer literal {\it len\/} and a string literal, in that order). +It pushes the substring of the (at most) {\it len\/} consecutive text +characters starting from the beginning of the string. This function +is similar to \hbox{\tt substring\$}, but this one considers +a ``special character''$\!$, even if +it's missing its matching right brace, to be a single text character +(rather than however many ASCII characters it actually comprises), +and this function doesn't consider braces to be text characters; +furthermore, this function appends any needed matching right braces. + +\item[\hbox{\tt top\$}\hfill] +Pops and prints the top of the stack on the terminal and log file. +It's useful for debugging. + +\item[\hbox{\tt type\$}\hfill] +Pushes the current entry's type (book, article, etc.), +but pushes the null string +if the type is either unknown or undefined. + +\item[\hbox{\tt warning\$}\hfill] +Pops the top (string) literal +and prints it following a warning message. +This also increments a count of the number of warning messages issued. + +\item[\hbox{\tt while\$}\hfill] +Pops the top two (function) literals, +and keeps executing the second as long as the (integer) +literal left on the stack by executing the first is greater than 0. + +\item[\hbox{\tt width\$}\hfill] +Pops the top (string) literal +and pushes the integer that represents its width in some relative units +(currently, hundredths of a point, as specified by the June 1987 version +of the $cmr10$ font; the only white-space character with nonzero width +is the space). +This function takes the literal literally; +that is, it assumes each character in the string is to be printed as +is, regardless of whether the character has a special meaning to \TeX, +except that ``special characters'' (even without their right braces) are +handled specially. +This is meant to be used for comparing widths of label strings. + +\item[\hbox{\tt write\$}\hfill] +Pops the top (string) literal +and writes it on the output buffer (which will result in +stuff being written onto the {\tt bbl} file when the buffer fills up). + +\end{description} + +Note that the built-in functions \hbox{\tt while\$} and \hbox{\tt if\$} +require two function literals on the stack. +You get them there either by immediately preceding the name of a function +by a single quote, or, if you don't feel like defining a new function with +the \hbox{\tt FUNCTION} command, +by simply giving its definition (that is, giving what would be the second +argument to the \hbox{\tt FUNCTION} command, including the surrounding braces). +For example the following function fragment appends the character `{\tt a}' +if the string variable named \hbox{\tt label} is nonnull: +\begin{verbatim} + . . . + label "" = + 'skip$ + { label "a" * 'label := } + if$ + . . . +\end{verbatim} +A function whose name you quote needn't be built in +like \hbox{\tt skip\$} above---it may, for example, +be a field name or a function you've defined earlier. + + +\subsection{Name formatting} + +What's in a name? +Section~4 pretty much describes this. +Each name consists of four parts: First, von, Last, and Jr; +each consists of a list of name-tokens, +and any list but Last's may be empty for a nonnull name. +This subsection describes the format string you must supply to +the built-in function \hbox{\tt format.name\$}. + +Let's look at an example of a very long name. +Suppose a database entry~\cite{prime-number-theorem} has the field +\begin{verbatim} + author = "Charles Louis Xavier Joseph de la Vall{\'e}e Poussin" +\end{verbatim} +and suppose you want this formatted ``last name comma initials''$\!$. +If you use the format string +\begin{verbatim} + "{vv~}{ll}{, jj}{, f}?" +\end{verbatim} +\BibTeX\ will produce +\begin{verbatim} + de~la Vall{\'e}e~Poussin, C.~L. X.~J? +\end{verbatim} +as the formatted string. + +Let's look at this example in detail. +There are four brace-level~1 {\em pieces\/} to this format string, +one for each part of a name. +If the corresponding part of a name isn't present (the Jr part for this name), +everything in that piece is ignored. +Anything at brace-level~0 is output verbatim +(the presumed typo `{\tt ?}' for this name is at brace-level~0), +but you probably won't use this feature much. + +Within each piece a double letter tells \BibTeX\ to use whole tokens, and +a single letter, to abbreviate them (these letters must be at brace-level~1); +everything else within the piece is used verbatim +(well, almost everything---read on). +The tie at the end of the von part (in \hbox{\verb|{vv~}|}) +is a discretionary tie---\BibTeX\ will output a tie at that point +if it thinks there's a need for one; +otherwise it will output a space. +If you really, really, want a tie there, +regardless of what \BibTeX\ thinks, use two of them +(only one will be output); that is, use \hbox{\verb|{vv~~}|}. +A tie is discretionary only if it's the last character of the piece; +anywhere else it's treated as an ordinary character. + +\BibTeX\ puts default strings {\em between\/} tokens of a name part: +For whole tokens it uses either a space or a tie, +depending on which one it thinks is best, +and for abbreviated tokens it uses a period followed by +either a space or a tie. +However it doesn't use this default string after the last token in a list; +hence there's no period following the `J' for our example. +You should have used +\begin{verbatim} + "{vv~}{ll}{, jj}{, f.}" +\end{verbatim} +to get \BibTeX\ to produce the same formatted string but with the question +mark replaced by a period. +Note that the period should go inside the First-name piece, +rather than where the question mark was, in case a name has no First part. + +If you want to override \BibTeX's default between-token strings, you +must explicitly specify a string. +For example suppose you want a label to contain the first letter from each +token in the von and Last parts, with no spaces; +you should use the format string +\begin{verbatim} + "{v{}}{l{}}" +\end{verbatim} +so that \BibTeX\ will produce `{\tt dlVP}' as the formatted string. +You must give a string for each piece whose default you want overridden +(the example here uses the null string for both pieces), and this string +must immediately follow either the single or double letter for the piece. +You may not have any other letters at brace-level~1 in the format string. + +\bibliography{btxdoc} +\bibliographystyle{plain} +\end{document} diff --git a/biblio/bibtex/contrib/germbib/document/gerbibtx.bib b/biblio/bibtex/contrib/germbib/document/gerbibtx.bib new file mode 100644 index 0000000000..27cba72621 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/document/gerbibtx.bib @@ -0,0 +1,54 @@ + +@UNPUBLISHED{bibtex.a, + author = "Oren Patashnik", + title = "{{\BibTeX ing}}", + note = "Documentation for general {\BibTeX} users", + month = "8$^{th}$~" # feb, + language = "USenglish", + year = 1988, } + +@UNPUBLISHED{bibtex.b, + author = "Oren Patashnik", + title = "Designing {\BibTeX} Styles", + note = "The part of \BibTeX's documentation + that's not meant for general users", + month = "8$^{th}$~" # feb, + language = "USenglish", + year = 1988, } + +@BOOK{texbook, + author = "Donald E. Knuth", + title= "The {{\tex}book}", + publisher = "Addison-Wesley Publishing Company", + address = "Reading, Massachusetts", + language = "USenglish", + year = 1984 } + +@BOOK{lamport, + author = "Leslie Lamport", + title = "{\LaTeX \rm:} {A} Document Preparation System", + publisher = "Addison-Wesley Publishing Company", + address = "Reading, Massachusetts", + language = "USenglish", + year = 1986 } + +@BOOK{kopka, + language = "german", + author = "Helmut Kopka", + title = "{\LaTeX} --- Eine Einf{\"{u}}hrung", + publisher = "Addison-Wesley (Deutschland) GmbH", + address = "Bonn; Reading, Massachusetts", + year = 1988, + note = "Das deutsche Standardwerk {\"{u}}ber {\latex}", + } + +@UNPUBLISHED{partl, + language = "german", + author = "Hubert Partl", + address = "Technische Universit{\"{a}}t Wien", + title = "{\normalshape\tt german.sty} --- Version 2.3d", + month = "21.~" # nov, + year = 1990, + note = "Erh{\"{a}}ltlich {\"{u}}ber DANTE (Deutsche Anwendervereinigung + {\TeX} e.\,\,V.): Bitnet server {\tt LISTSERV@DHDURZ1}", +} diff --git a/biblio/bibtex/contrib/germbib/document/gerbibtx.tex b/biblio/bibtex/contrib/germbib/document/gerbibtx.tex new file mode 100644 index 0000000000..82c0934e30 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/document/gerbibtx.tex @@ -0,0 +1,433 @@ +%macropackage=lplaing + +\documentstyle[bibgerm]{article} + +\def\tex{{\the\textfont0\TeX}} +\def\pLaTeX{{\the\textfont0 L\kern-.36em\raise.3ex\hbox{\the\scriptfont0 +A}\kern-.15em T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} +\def\LaTeX{\protect\pLaTeX} +\def\pBibTeX{{\the\textfont0 B\hbox{\the\scriptfont0 IB}\kern-.1em\TeX}} +\def\BibTeX{\protect\pBibTeX} +\def\bibtex{\BibTeX}\def\tex{\TeX} +\def\latex{\LaTeX} +\def\dat#1{{\tt #1}} +\def\bsl{{\tt\char'134}} % '\' +\def\leerz{{\tt\char'040}} % little 'u' for spaces +\def\affe{\char'100} % '@' +\exhyphenpenalty=50 \hyphenpenalty=10 \doublehyphendemerits=50 +\finalhyphendemerits=50 \brokenpenalty=100 \pretolerance=0 \tolerance=2000 +\looseness=0 \linepenalty=10 +\hoffset=-1.0in \textwidth6.4in \oddsidemargin0.8in \evensidemargin0.8in +\marginparwidth0.6in \marginparsep0.2in \marginparpush1ex +\topmargin0pt \headheight2.5ex \headsep5ex \textheight9.25in +\columnsep10pt \columnseprule0pt +\parindent0pt \parskip2.5ex plus1.5ex minus1.5ex +\renewcommand{\arraystretch}{1.2} +\renewcommand{\baselinestretch}{1.1} +\def\footnoterule{\vfill\kern-3pt \hrule width \textwidth\kern 2.6pt} +\pagestyle{headings} +\newlength{\mylena} +\originalTeX\nonfrenchspacing + +\begin{document} + +\title{German and international \bibtex ing\\A manual for the 'german' \bibtex\ styles} +\author{Martin Wallmeier\thanks{Tel.: +[[0]0\,49]\,(09\,31)\,80\,05\,--\,5\,10}\\ G"obelslehenstr. 1--b\,16\\8700 +W"urzburg\\ West Germany\\e-mail: neuk121@wrzx13.rz.uni-wuerzburg.de} +\date{20$^{th}$ April 1993} +\maketitle + +\tableofcontents + +\section{Introduction} + +The original \bibtex\ version 0.99b standard styles allow only English +references. There are some so called \dat{'German'} styles, but they allow +only German references. I couldn't find any style beeing able to switch +between the language for mixed references. In scientific publications you +will find a lot of English references beside the ones of the country, where +the publication was written. But it looks awful, if you mix an english +reference with german expressions, for example: +\begin{center}\begin{minipage}{.7\textwidth}\raggedright\tt Wilson, +Braunwald, und Isselbacher, Herausgeber. Harrison's Principles of Internal +Medicine. Band 1, twelfth Auf{}lage\ldots\end{minipage}\end{center} +So I tried to write a style being able to switch the language. + +\section[Restrictions of and problems with \bibtex]{Restrictions of and +problems with \bibtex\footnote{Dedicated to Oren Patashnik at Stanford +University. I hope this will find him anytime.}} + +There is a terrific restriction at least in my version of \bibtex: it +allows only ten (10) global variables of type \dat{STRINGS}. Therefore it +was impossible to implement a function which would decide whether to switch +the language and then call a specific function for every country that could +actualize the contents of these string variables. So the only possible way +seemed to be to create a series of \tex\ macros. + +Another problem occured with \bibtex's built in function +\verb|add.period$|. This function adds a point, if the last non '\}' +character is no '.', '!' or '?'. But how to tell \verb|add.period$| that +the \tex\ macros for abbreviations contain a point, although there is not +one obvious for \bibtex? The \tex\ macros have one parameter now: If you +abbreviate editors for example as 'eds.' \verb|add.period$| mustn't set a +point if the corresponding \tex\ macro is set in the output. So {\tt\bsl +btxeditorsshort} is defined as follows:\\[.5ex] +\verb| \def\btxeditorsshort#1{eds#1}|\\[.5ex] +Now you can write {\tt\bsl btxeditorsshort\{.\}} in the \bibtex\ style file +and \verb|add.period$| will find a point if {\tt\bsl btxeditorsshort\{.\}} +is the last expression in the sentence. As you can see this is only +necessary for those expressions that can stand at the end of a sentence or +block. 'And' usually will not stay at the end of a sentence. So you can +define the corresponding macros as pointed abbreviation, if you want to. + +I had to face a last problem with the built in function +\verb|change.case$|. It's similar to the one with \verb|add.period$|. This +function is also unable to expand the defined \tex\ macros. Therefore I had +to define always two forms of macros \verb|\btx...| and \verb|\Btx...| +where the second should be used where something like `The Quick Brown Fox +Jumps Over The Lazy Dog' is to occure and the first for something like `The +quick brown fox\ldots' if the expression starts a sentence or `the quick +brown fox\ldots' if it is used in the middle of a sentence. The {\tt +change.case\$} function will not be called if a title is going to be +formatted and {\tt language} is not set to {\tt 'english'} or {\tt +'USenglish'}. Henceforth you don't have to use '\{\}' braces to avoid {\tt +chang.case\$} in titles of other languages. Thus typing is much easier. +Typing comfort could be also improoved very much if \bibtex\ would +understand umlauts as \tex\ version 3.1 and not only constructions like +\verb|{\"{a}}|. + +All these constructions are tricky and uncomfortable only to bypass or fool +the built in \bibtex\ functions. Things would be much easier if more global +string variables could be defined. Then \bibtex\ could format the content +of the string variables directly and commands like \verb|add.period$| or +\verb|\cange.case$| would work the same way as if the expression would +occure in the text. + +Now you know about the reasons why I had to make a new \latex\ style +\dat{bibgerm.sty} for use with the \dat{ger[...].bst} \bibtex\ styles. It +defines the \tex\ macros mentioned above and listed below. + +\section{Implementation} + +\bibtex\ was changed in the way that it doesn't place string constants, but +\tex\ macros into the output for expressions that vary in the different +languages. So \bibtex\ generates a {\tt\bsl selectlanguage\{...\}} command +just before the current \verb|\bibitem[...]{...}| if the {\tt language} +field in the database entry is not empty. There are only a few allowed +contents for {\tt language}: {\tt 'german'}, {\tt 'austrian'}, {\tt +'english'}, and {\tt 'USenglish'}, because I'm speaking only German and +bad English. {\tt 'english'} does the same as {\tt 'USenglish'} at the +moment. I think there won't be many differences, but I could imagine some +concerning 'Master's thesis' and 'PhD thesis'. {\tt 'austrian'} does nearly +the same as {\tt 'german'}, only the month 'January' is different. + +It should be not so very difficult to implement other languages for someone +who is a little bit acquainted to \tex\ or \latex. You probably needn't +change the \bibtex\ styles, but only to supplement the \dat{bibgerm.sty} +\latex\ style a little bit. + +\subsection{\ifx\undefined\selectfont \else\series{m}\fi\dat{bibgerm.sty}} + +The macro \verb|\selectlanguage{...}| of the original \dat{german.sty} +\cite{partl}switched already things like {\tt 'date'} and {\tt +'captionnames'}. There are now some new global definitions +\verb|\bibsgerman|, \verb|\bibsenglish| and \verb|\bibsUSenglish| being +called by {\tt\bsl selectlanguage\{...\}}. The \verb|\bibs...| macros +redefine the meanings for a list of \tex\ macros according to the current +language: +\settowidth{\mylena}{\tt\bsl def\bsl ...short\#\#1\{...\#\#1\}} +\begin{center}\begin{tabular}{|l|p{.67\textwidth}@{}l|}\hline +\multicolumn{3}{|c|}{General Aspects}\\\hline +\hbox to\mylena{\tex\ macro\hfil} & Meaning &\\\hline +{\tt\bsl def\bsl btx...\{...\}} & \raggedright Expression in lower case +letters for use in the middle of a sentence (e.\ g.\ 'volume').&\\ +{\tt\bsl def\bsl Btx...\{...\}} & \raggedright Expression with the first +letter capitalized for use at the beginning of a sentence (e.\ g.\ +'Volume') or formatted like a booktitle (e.\ g.\ 'Technical Report +037').&\\ +{\tt\bsl def\bsl ...short\#\#1\{...\#\#1\}} & \raggedright Mostly +abbreviated expression. The tricky construction {\tt\#\#1} was explained +above. You need double {\tt'\#'} because the macros are defined inside the +global definition of the {\tt\bsl bibs...} macro. The parameter {\tt\#\#1} +is used to set the last point of an abbreviation that can occure at the end +of a sentence (e.\ g.\ {\tt\bsl def\bsl btxetalshort\#\#1\{et~al\#\#1\}}). +If you don't want to have a point at the end you skip the {\tt\#\#1} inside +the braces.&\\ +{\tt\bsl def\bsl ...long\{...\}} & \raggedright Expression used for the +long i.\,\,e.\ unabbreviated form (e.\ g.\ {\tt\bsl def\bsl btxetallong\{ +et~alii\}}). &\\\hline +\multicolumn{3}{|c|}{Details}\\\hline +\hbox to\mylena{\tex\ macro\hfil} & meaning &\\\hline +{\tt\bsl def\bsl btxetalshort\#\#1} & \raggedright Used after authors or +editors, if there is {\tt 'and othrers'} at the end of the corresponding +\bibtex\ database entry field (defined as {\tt 'et~al\#\#1{}'}). This +expression might finish a sentence or block; so {\tt '\#\#1'} is necessary +for {\tt 'add.period\$'}. &\\ +{\tt\bsl def\bsl btxetallong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'et~alii'}). &\\ +{\tt\bsl def\bsl btxandshort} & \raggedright Used before the last author or +editor if there are more than one (defined as {\tt 'and'}). &\\ +{\tt\bsl def\bsl btxandlong} & \raggedright Unabbreviated form of the above +(defined as {\tt 'and'}). &\\ +{\tt\bsl def\bsl btxinshort} & \raggedright Used with entry type {\tt +@incollection} or {\tt @inproceedings} as introduction for the reference to +the superior work (defined as {\tt 'in'}). &\\ +{\tt\bsl def\bsl btxinlong} & \raggedright Unabbreviated form of the above +(defined as {\tt 'in'}). &\\ +{\tt\bsl def\bsl Btxinshort} & \raggedright For use at the beginning of a +sentence (defined as {\tt 'In'}). &\\ +{\tt\bsl def\bsl Btxinlong} & \raggedright Unabbreviated form of the above +(defined as {\tt 'In'}). &\\ +{\tt\bsl def\bsl btxofseriesshort} & \raggedright Used after the volume +number before the title of the book series (defined as {\tt 'of'}). &\\ +{\tt\bsl def\bsl btxofserieslong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'of'}). &\\ +{\tt\bsl def\bsl btxinseriesshort} & \raggedright Used for a part of a book +with a separate title. If there is a number given it is placed before the +title of the series (defined as {\tt 'in'}). &\\ +{\tt\bsl def\bsl btxinserieslong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'in'}). &\\ +\hline\end{tabular} + +\begin{tabular}{|l|p{.67\textwidth}@{}l|}\hline +\hbox to\mylena{\tex\ macro\hfil} & meaning &\\\hline +{\tt\bsl def\bsl btxeditorshort\#\#1} & \raggedright Abbreviation for a +single {\em editor\/} that can be placed at the end of the editor block +(defined as {\tt 'ed\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxeditorlong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'editor'}). &\\ +{\tt\bsl def\bsl btxeditorsshort\#\#1} & \raggedright Equivalent of the +above for more than one editor (defined as {\tt 'eds\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxeditorslong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'editors'}). &\\ +{\tt\bsl def\bsl Btxeditorshort\#\#1} & \raggedright This and the following +macros could be used by a style file that would start a bibliography entry +with something like 'Ed.:\ \ldots' (defined as {\tt 'Ed\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxeditorlong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Editor'}). &\\ +{\tt\bsl def\bsl Btxeditorsshort\#\#1} & \raggedright Plural of the above +(defined as {\tt 'Eds\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxeditorslong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Editors'}). &\\ +{\tt\bsl def\bsl btxvolumeshort\#\#1} & \raggedright Abbreviation for {\em +volume\/} for use after a comma, i.\,\,e.\ in the middle of a sentence +(defined as {\tt 'vol\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxvolumelong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'volume'}). &\\ +{\tt\bsl def\bsl Btxvolumeshort\#\#1} & \raggedright For use at the +beginning of a sentence (defined as {\tt 'Vol\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxvolumelong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Volume'}). &\\ +{\tt\bsl def\bsl btxnumbershort\#\#1} & \raggedright Abbreviation for {\em +number\/} if used in the middle of a sentence (defined as {\tt +'no\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxnumberlong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'number'}). &\\ +{\tt\bsl def\bsl Btxnumbershort\#\#1} & \raggedright For use at the +beginning of a sentence (defined as {\tt 'No\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxnumberlong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Number'}). &\\ +{\tt\bsl def\bsl btxeditionshort\#\#1} & \raggedright Abbreviation for {\em +edition\/} that can finish a sentence or block (defined as {\tt +'ed\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxeditionlong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'edition'}). &\\ +{\tt\bsl def\bsl Btxeditionshort\#\#1} & \raggedright For use at the +beginning of a sentence (defined as {\tt 'Ed\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxeditionlong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Edition'}). &\\ +{\tt\bsl def\bsl btxchaptershort\#\#1} & \raggedright Abbreviation for {\em +chapter\/} which might be placed at the end of a sentence if it would be +used after first, second, etc. (defined as {\tt 'chap\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxchapterlong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'chapter'}). &\\ +{\tt\bsl def\bsl Btxchaptershort\#\#1} & \raggedright For use at the +beginning of a sentence (defined as {\tt 'Chap\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxchapterlong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Chapter'}). &\\ +{\tt\bsl def\bsl btxpageshort\#\#1} & Abbreviation for {\em page\/} +\raggedright (defined as {\tt 'p\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxpagelong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'page'}). &\\ +{\tt\bsl def\bsl btxpagesshort\#\#1} & \raggedright If there are more than +one {\em page\/} this abbreviation will be used (defined as {\tt +'pp\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxpageslong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'pages'}). &\\ +{\tt\bsl def\bsl Btxpageshort\#\#1} & \raggedright For use at the beginning +of a sentence (defined as {\tt 'P\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxpagelong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Page'}). &\\ +{\tt\bsl def\bsl Btxpagesshort\#\#1} & \raggedright Plural of the above +(defined as {\tt 'Pp\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxpageslong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Pages'}). &\\ +\hline\end{tabular} + +\begin{tabular}{|l|p{.67\textwidth}@{}l|}\hline +\hbox to\mylena{\tex\ macro\hfil} & Meaning &\\\hline +{\tt\bsl def\bsl btxmastthesis} & \raggedright Expression that will be used +by default if there is given no \bibtex\ database entry field {\tt type} in +a {\tt @masterthesis} entry (defined as {\tt 'Master's thesis'}). &\\ +{\tt\bsl def\bsl btxphdthesis} & \raggedright Equivalent of the above for +the {\tt @phdthesis} entry (defined as {\tt 'PhD thesis'}). &\\ +{\tt\bsl def\bsl btxtechrepshort\#\#1} & \raggedright Equivalent of the +above for abbreviated {\tt @techreport} entry formatted like the title of +an article or journal, i.\,\,e.\ only the first letter capitalized (defined +as {\tt 'Techn.\ rep\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxtechreplong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Technical report'}). &\\ +{\tt\bsl def\bsl Btxtechrepshort\#\#1} & \raggedright Same as the above but +formatted like a booktitle, i.\,\,e.\ all words capitalized except articles +and conjunctions like 'the' or 'of', etc. This one is used if the number +field of the {\tt @techreport} entry is not empty (defined as {\tt 'Techn.\ +Rep\#\#1{}'}). &\\ +{\tt\bsl def\bsl Btxtechreplong} & \raggedright Unabbreviated form of the +above (defined as {\tt 'Technical Report'}). &\\ +{\tt\bsl def\bsl btxmonjanshort\#\#1} & \raggedright Abbreviated names of +the months (defined as {\tt 'Jan\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmonfebshort\#\#1} & \raggedright (defined as {\tt +'Feb\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmonmarshort\#\#1} & \raggedright (defined as {\tt +'Mar\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmonaprshort\#\#1} & \raggedright (defined as {\tt +'Apr\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmonmayshort\#\#1} & \raggedright (defined as {\tt +'May'}). &\\ +{\tt\bsl def\bsl btxmonjunshort\#\#1} & \raggedright (defined as {\tt +'June'}). &\\ +{\tt\bsl def\bsl btxmonjulshort\#\#1} & \raggedright (defined as {\tt +'July'}). &\\ +{\tt\bsl def\bsl btxmonaugshort\#\#1} & \raggedright (defined as {\tt +'Aug\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmonsepshort\#\#1} & \raggedright (defined as {\tt +'Sept\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmonoctshort\#\#1} & \raggedright (defined as {\tt +'Oct\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmonnovshort\#\#1} & \raggedright (defined as {\tt +'Nov\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmondecshort\#\#1} & \raggedright (defined as {\tt +'Dec\#\#1{}'}). &\\ +{\tt\bsl def\bsl btxmonjanlong} & \raggedright Unabbreviated names of the +months (defined as {\tt 'January'}). &\\ +{\tt\bsl def\bsl btxmonfeblong} & \raggedright (defined as {\tt +'February'}). &\\ +{\tt\bsl def\bsl btxmonmarlong} & \raggedright (defined as {\tt 'March'}). +&\\ +{\tt\bsl def\bsl btxmonaprlong} & \raggedright (defined as {\tt 'April'}). +&\\ +{\tt\bsl def\bsl btxmonmaylong} & \raggedright (defined as {\tt 'May'}). +&\\ +{\tt\bsl def\bsl btxmonjunlong} & \raggedright (defined as {\tt 'June'}). +&\\ +{\tt\bsl def\bsl btxmonjullong} & \raggedright (defined as {\tt 'July'}). +&\\ +{\tt\bsl def\bsl btxmonauglong} & \raggedright (defined as {\tt 'August'}). +&\\ +{\tt\bsl def\bsl btxmonseplong} & \raggedright (defined as {\tt +'September'}). &\\ +{\tt\bsl def\bsl btxmonoctlong} & \raggedright (defined as {\tt +'October'}). &\\ +{\tt\bsl def\bsl btxmonnovlong} & \raggedright (defined as {\tt +'November'}). &\\ +{\tt\bsl def\bsl btxmondeclong} & \raggedright (defined as {\tt +'December'}). &\\ +\hline\end{tabular}\end{center} + +For more details about macro programming refer to \cite{texbook}. + +\subsection{Available \bibtex\ styles and file list} + +All \bibtex\ standard styles are available although I've changed their +design a little bit. Furthermore, I adjusted the \dat{'apalike.bst'} which +allows references like '(Jones 1986)'. The names of the 'german' \bibtex\ +styles, their corresponding standards, and the remaining files are listed +in the following table: +\begin{center}\begin{tabular}{|l|l|}\hline +\multicolumn{2}{|c|}{\bibtex\ Styles and Files}\\\hline +'german' & Standard \\\hline +{\tt gerabbrv.bst} & {\tt abbrv.bst} \\ +{\tt geralpha.bst} & {\tt alpha.bst} \\ +{\tt gerplain.bst} & {\tt plain.bst} \\ +{\tt gerunsrt.bst} & {\tt unsrt.bst} \\\hline +{\tt gerapali.bst} & {\tt apalike.bst} \\\hline +{\tt gerxampl.bib} & {\tt xampl.bib} \\\hline\hline +\multicolumn{2}{|c|}{\latex\ Styles}\\\hline +'german' & Standard \\\hline +{\tt bibgerm.sty} & {\tt german.sty} \\ +{\tt apalike.sty} & {\tt apalike.sty} \\\hline\hline +\multicolumn{2}{|c|}{Manual for \latex}\\\hline +{\tt gerbibtx.tex} & {\sc Manual} and \\ +{\tt gerbibtx.bib} & {\sc Bibliography}\\\hline\hline +\multicolumn{2}{|c|}{Original Manuals}\\\hline +{\tt btxdoc.tex} & For general users\\ +{\tt btxhak.tex} & For style designers\\ +{\tt btxdoc.bib} & {\sc Bibliography}\\\hline +\end{tabular}\end{center} + +If you want to write \bibtex\ styles on your own, you are absolutely in +need of \cite{bibtex.a} and \cite{bibtex.b}. These documents should be as +files in your distribution of \bibtex. If they are not, complain violently +to the distributor. + +\subsection{Changes to the standard styles} + +There are two new functions: {\tt after.authors} and {\tt smallcaps}. The +last is similar to {\tt emphasize}. It sets the authors or editors in {\sc +Small Caps}. If you don't like that, you can change it to an empty +function. The other one sets the new 'state' {\tt before.title}. These +'states' are used by the different {\tt output} routines to decide what +punctuation is going to be placed (most times point or comma) before the +string on the stack. If the current 'state' is {\tt before.title} a colon +is placed before the title of what ever, i.\,\,e. regularly after authors +and editors. If you don't like this either, you can copy the function {\tt +new.block} to {\tt after.authors}. Then a point will be set instead of a +colon. {\tt gerapali.bst} behaves in this way, because a colon after braces +looks a little bit strange. + +I've changed also the format of the authors' and editors' names to my +personal favorites: + +\begin{center}\begin{minipage}{.7\textwidth}\raggedright\tt Wallmeier, M. +van, O. Patashnik, and L. van Lamport (eds.): \bibtex ing is +great\ldots\end{minipage}\end{center} + +You can reset the original status by comparing the lines where the function +{\tt format.name\$} occures with the according lines in the original +standard \bibtex\ styles. Nevertheless you should be familar with \bibtex's +name formatting \cite[section 5.4]{bibtex.b}. + +I'm not in access to the original \latex\ standard work \cite{lamport}. But +\cite[appendix B]{kopka} is marked as an almost extensive translation from +\cite{lamport}. If this is true, there are a few differences concerning the +optional fields in some entry types. They concern the additional field {\tt +number} that is used by the entry types {\tt @book}, {\tt @inbook}, {\tt +@incollection}, {\tt @inproceedings}, and {\tt @proceedings} and the +additional field {\tt tpye} that is used in {\tt @masterthesis} and {\tt +@phdthesis}. + +Those were of most importance for writing {\tt bibgerm.sty} and the {\tt +ger[...].bst} files, but there are some more \cite[section 2.2 'Changes to +the standard styles']{bibtex.a}. + + +\section{Changes} + +\begin{description} +\item[1993, April 20th:] \verb|bibgerm.sty| changed for use with `german.sty' +version 2.4. In detail: redefine `\verb|\selectlanguage|' or +`\verb|\p@selectlanguage|' depending on version of `german.sty'. +\end{description} + +\section{Known bugs} + +\begin{description} +\item[german.sty:] Probably `\verb|bibgerm.sty|' won't work with `german.sty' +version 3. +\end{description} + +\bibliography{gerbibtx}\bibliographystyle{gerplain} + +\end{document} + diff --git a/biblio/bibtex/contrib/germbib/for_tex/apalike.tex b/biblio/bibtex/contrib/germbib/for_tex/apalike.tex new file mode 100644 index 0000000000..8f2ac454dd --- /dev/null +++ b/biblio/bibtex/contrib/germbib/for_tex/apalike.tex @@ -0,0 +1,88 @@ +%% @texfile{ +%% author = "Oren Patashnik", +%% version = "0.99a", +%% date = "12 Dec 1990", +%% filename = "apalike.tex", +%% address = "Please use electronic mail", +%% checksum = "88 707 4412", +%% email = "opbibtex@neon.stanford.edu", +%% codetable = "ISO/ASCII", +%% supported = "yes", +%% docstring = "Defines macros that make apalike work with plain TeX", +%% } +% apalike.tex, version 0.99a, for btxmac 0.99f, BibTeX 0.99c, TeX 3.0 or later. +% Copyright (C) 1990; all rights reserved. +% You may copy this file provided: that it's accompanied by btxmac.tex; +% and that either you make absolutely no changes to your copy, or if you +% do make changes, (1) you name the file something other than +% `apalike.tex' and you remove all occurrences of `apalike.tex' from the +% file, (2) you put, somewhere in the first twenty lines of the file, +% your name, along with an electronic address at which others who might +% use the file may reach you, and (3) you remove each occurrence of +% Oren's name and electronic address from this file. These restrictions +% help ensure that all standard versions of these macros are identical, +% and that Oren doesn't get deluged with inappropriate e-mail. +% +% This file, apalike.tex, contains TeX macros that let you use the +% apalike bibliography style with plain TeX. In essence, this file +% provides the Tex counterpart to apalike.sty, the LaTeX style file +% required for using the apalike bibliography style. Please report any +% bugs (outright goofs, misfeatures, or unclear documentation) to Oren +% Patashnik (opbibtex@neon.stanford.edu). These macros will become +% frozen shortly after BibTeX version 1.00 is released. +% +% Editorial note (i.e., flame): +% Many journals require a style like `apalike', but I strongly, strongly, +% strongly recommend that you not use it if you have a choice---use +% something like `plain' instead. Mary-Claire van Leunen (A Handbook for +% Scholars, Knopf, 1979) argues convincingly that a style like `plain' +% encourages better writing than one like `apalike'. Furthermore the best +% argument for using an author-date style like `apalike'---that it's "the +% most practical" (The Chicago Manual of Style, University of Chicago +% Press, thirteenth edition, 1982, pages 400--401)---falls flat on its +% face with the new computer-typesetting technology. For instance page 401 +% of the Chicago Manual anachronistically states "The chief disadvantage of +% [a style like `plain'] is that additions or deletions cannot be made +% after the manuscript is typed without changing numbers in both text +% references and list." With LaTeX the disadvantage obviously evaporates. +% Moreover, apalike indulges in what I think is an execrable practice: +% automatically abbreviating first names. It's true that there aren't very +% many D. E. Knuth's around, so abbreviating his first name doesn't cause +% much confusion. But I've personally known three D. E. Smith's, two of +% whom have published in the same field; abbreviating their first names +% *is* confusing. Especially with all the citation indexes nowadays, it's +% better to give first names exactly as they appear in the source being +% cited. Automatically abbreviating first names is simply bad scholarship. +% (End of flame.) +% +% To use these macros you need the btxmac macros, whose purpose is to +% let you use BibTeX with plain TeX (rather than with LaTeX); the file +% btxmac.tex explains those macros in detail. You simply \input apalike +% right after you \input btxmac to invoke these macros. +% +% +% HISTORY +% +% Oren Patashnik wrote the original version of these macros in December +% 1990, for use with btxmac.tex. +% +% 12-Dec-90 Version 0.99a, first general release. +% +% +% Here, finally (I swear, I thought he was never gonna stop), are the +% macros. The first bunch makes the label empty and sets 2em of +% hanging indentation for each entry. +% +\def\biblabelprint#1{\noindent}% +\def\biblabelcontents#1{}% +\def\bblhook{\biblabelextrahang = 2em}% +% +% +% And the last bunch formats an in-text citation: parens around the +% entire citation; semicolons separating individual references; and a +% comma between a reference and its note (like `page 41') if it exists. +% +\def\printcitestart{(}% left paren +\def\printcitefinish{)}% right parent +\def\printbetweencitations{; }% semicolon, space +\def\printcitenote#1{, #1}% comma, space, note (if it exists) diff --git a/biblio/bibtex/contrib/germbib/styles/apalike.sty b/biblio/bibtex/contrib/germbib/styles/apalike.sty new file mode 100644 index 0000000000..fc5fefadb9 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/styles/apalike.sty @@ -0,0 +1,30 @@ +\def\@cite#1#2{(#1\if@tempswa , #2\fi)} +\def\@biblabel#1{} + +\newlength{\bibhang} +\setlength{\bibhang}{2em} + +\@ifundefined{chapter}{\def\thebibliography#1{\section*{\refname\@mkboth + {\sl\uppercase{\refname}}{\sl\uppercase{\refname}}}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}}% +{\def\thebibliography#1{\chapter*{\bibname\@mkboth + {\sl\uppercase{\bibname}}{\sl\uppercase{\bibname}}}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}} + +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{; }\@ifundefined + {b@\@citeb}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +{\csname b@\@citeb\endcsname}}}{#1}} + diff --git a/biblio/bibtex/contrib/germbib/styles/bibgerm.sty b/biblio/bibtex/contrib/germbib/styles/bibgerm.sty new file mode 100644 index 0000000000..0087cc2fde --- /dev/null +++ b/biblio/bibtex/contrib/germbib/styles/bibgerm.sty @@ -0,0 +1,312 @@ +
+%% \ifx\germanTeX\undefined\input german.tex\fi % MW 20.04.1993 changed to
+%\ifx\germanTeX\undefined\input german.sty\fi % AS 26.04.1995 changed to
+\newif\ifoldstyle
+\ifx\documentclass\undefined % plain TeX or LaTeX 2.09
+ \oldstyletrue\else\oldstylefalse\fi
+\ifoldstyle % plain TeX or LaTeX 2.09
+ \ifx\germanTeX\undefined
+ \ifx\ngermanTeX\undefined % AS 09.08.2000
+ \input german.sty\fi\fi
+\else % LaTeX 2e
+ \NeedsTeXFormat{LaTeX2e}
+ \ProvidesPackage{bibgerm}[2000/08/18 v0.1 %
+ Support for mixed language bibliographies]
+ \AtBeginDocument{% HH 08.08.2000
+ \@ifpackageloaded{babel}{}{%
+ \@ifpackageloaded{german}{}{%
+ \@ifpackageloaded{ngerman}{}{%
+ \RequirePackage{german}[1995/01/20]}}}}
+\fi
+
+\message{** Macros for german `BibTeX'ing added to Style Option `german' %
+ 20 Apr 1993 **}
+\message{** idea and languages `german' and `USenglish' implemented %
+ by M. Wallmeier **}
+\message{** Modified for LaTeX 2e and german.sty 2.5b %
+ by A. Scherer 1 Nov 1995 **}
+\message{** Modified for ngerman.sty and babel.sty %
+ by H. Harders 21 August 2000 **}
+
+
+\gdef\bibsgerman{% \btx... -> im Satz verwendet bzw. klein geschrieben
+\def\btxetalshort##1{et~al##1{}}%
+\def\btxetallong##1{et~alii}%
+\def\btxandshort##1{und}%
+\def\btxandlong##1{und}%
+\def\btxinlong##1{in:}%
+\def\btxinshort##1{in:}%
+\def\btxofseriesshort##1{d.\ Reihe}%
+\def\btxinseriesshort##1{in}%
+\def\btxofserieslong##1{der Reihe}%
+\def\btxinserieslong##1{in}%
+\def\btxeditorshort##1{Hrsg##1{}}%
+\def\btxeditorlong##1{Herausgeber}%
+\def\btxeditorsshort##1{Hrsg##1{}}%
+\def\btxeditorslong##1{Herausgeber}%
+\def\btxvolumeshort##1{Bd##1{}}%
+\def\btxvolumelong##1{Band}%
+\def\btxnumbershort##1{Nr##1{}}%
+\def\btxnumberlong##1{Nummer}%
+\def\btxeditionshort##1{Aufl##1{}}%
+\def\btxeditionlong##1{Au\discretionary{f-}{l}{f\null l}age}%
+\def\btxchaptershort##1{Kap##1{}}%
+\def\btxchapterlong##1{Kapitel}%
+\def\btxpageshort##1{S##1{}}%
+\def\btxpagelong##1{Seite}%
+\def\btxpagesshort##1{S##1{}}%
+\def\btxpageslong##1{Seiten}%
+\def\btxmastthesis##1{Diplomarbeit}%
+\def\btxphdthesis##1{Doktorarbeit}%
+\def\btxtechrepshort##1{Techn.\ Ber##1{}}%
+\def\btxtechreplong##1{Technischer Bericht}%
+\def\btxmonjanlong##1{Januar}%
+\def\btxmonfeblong##1{Februar}%
+\def\btxmonmarlong##1{M{{\"a}}rz}%
+\def\btxmonaprlong##1{April}%
+\def\btxmonmaylong##1{Mai}%
+\def\btxmonjunlong##1{Juni}%
+\def\btxmonjullong##1{Juli}%
+\def\btxmonauglong##1{August}%
+\def\btxmonseplong##1{September}%
+\def\btxmonoctlong##1{Oktober}%
+\def\btxmonnovlong##1{November}%
+\def\btxmondeclong##1{Dezember}%
+\def\btxmonjanshort##1{Jan##1{}}%
+\def\btxmonfebshort##1{Feb##1{}}%
+\def\btxmonmarshort##1{M{{\"a}}rz}%
+\def\btxmonaprshort##1{Apr##1{}}%
+\def\btxmonmayshort##1{Mai}%
+\def\btxmonjunshort##1{Juni}%
+\def\btxmonjulshort##1{Juli}%
+\def\btxmonaugshort##1{Aug##1{}}%
+\def\btxmonsepshort##1{Sep##1{}}%
+\def\btxmonoctshort##1{Okt##1{}}%
+\def\btxmonnovshort##1{Nov##1{}}%
+\def\btxmondecshort##1{Dez##1{}}%
+% \Btx... -> Satzanfang bzw. gro{\ss} geschrieben.
+\def\Btxinlong##1{In:}%
+\def\Btxinshort##1{In:}%
+\def\Btxeditorshort##1{\btxeditorshort##1{}}%
+\def\Btxeditorlong{\btxeditorlong}%
+\def\Btxeditorsshort##1{\btxeditorsshort##1{}}%
+\def\Btxeditorslong{\btxeditorslong}%
+\def\Btxvolumeshort##1{\btxvolumeshort##1{}}%
+\def\Btxvolumelong{\btxvolumelong}%
+\def\Btxnumbershort##1{\btxnumbershort##1{}}%
+\def\Btxnumberlong{\btxnumberlong}%
+\def\Btxeditionshort##1{\btxeditionshort##1{}}%
+\def\Btxeditionlong{\btxeditionlong}%
+\def\Btxchaptershort##1{\btxchaptershort##1{}}%
+\def\Btxchapterlong{\btxchapterlong}%
+\def\Btxpageshort##1{\btxpageshort##1{}}%
+\def\Btxpagelong{\btxpagelong}%
+\def\Btxpagesshort##1{\btxpagesshort##1{}}%
+\def\Btxpageslong{\btxpageslong}%
+\def\Btxtechrepshort##1{\btxtechrepshort##1{}}%
+\def\Btxtechreplong{\btxtechreplong}%
+}
+\gdef\bibsaustrian{%
+ \bibsgerman%
+ \def\btxmonjanlong##1{J{\"a}nner}%
+}
+\gdef\bibsngerman{\bibsgerman}
+\gdef\bibsnaustrian{\bibsaustrian}
+%
+\gdef\bibsUSenglish{% \btx... -> im Satz verwendet bzw. klein geschrieben
+\def\btxetalshort##1{et~al##1{}}%
+\def\btxetallong##1{et~alii}%
+\def\btxandshort##1{and}%
+\def\btxandlong##1{and}%
+\def\btxinlong##1{in}%
+\def\btxinshort##1{in}%
+\def\btxofseriesshort##1{of}%
+\def\btxinseriesshort##1{in}%
+\def\btxofserieslong##1{of}%
+\def\btxinserieslong##1{in}%
+\def\btxeditorshort##1{ed##1{}}%
+\def\btxeditorlong##1{editor}%
+\def\btxeditorsshort##1{eds##1{}}%
+\def\btxeditorslong##1{editors}%
+\def\btxvolumeshort##1{vol##1{}}%
+\def\btxvolumelong##1{volume}%
+\def\btxnumbershort##1{no##1{}}%
+\def\btxnumberlong##1{number}%
+\def\btxeditionshort##1{ed##1{}}%
+\def\btxeditionlong##1{edition}%
+\def\btxchaptershort##1{chap##1{}}%
+\def\btxchapterlong##1{chapter}%
+\def\btxpageshort##1{p##1{}}%
+\def\btxpagelong##1{page}%
+\def\btxpagesshort##1{pp##1{}}%
+\def\btxpageslong##1{pages}%
+\def\btxmastthesis##1{Master's thesis}%
+\def\btxphdthesis##1{PhD thesis}%
+\def\btxtechrepshort##1{Techn.\ rep##1{}}%
+\def\btxtechreplong##1{Technical report}%
+\def\btxmonjanlong##1{January}%
+\def\btxmonfeblong##1{February}%
+\def\btxmonmarlong##1{March}%
+\def\btxmonaprlong##1{April}%
+\def\btxmonmaylong##1{May}%
+\def\btxmonjunlong##1{June}%
+\def\btxmonjullong##1{July}%
+\def\btxmonauglong##1{August}%
+\def\btxmonseplong##1{September}%
+\def\btxmonoctlong##1{October}%
+\def\btxmonnovlong##1{November}%
+\def\btxmondeclong##1{December}%
+\def\btxmonjanshort##1{Jan##1{}}%
+\def\btxmonfebshort##1{Feb##1{}}%
+\def\btxmonmarshort##1{Mar##1{}}%
+\def\btxmonaprshort##1{Apr##1{}}%
+\def\btxmonmayshort##1{May}%
+\def\btxmonjunshort##1{June}%
+\def\btxmonjulshort##1{July}%
+\def\btxmonaugshort##1{Aug##1{}}%
+\def\btxmonsepshort##1{Sept##1{}}%
+\def\btxmonoctshort##1{Oct##1{}}%
+\def\btxmonnovshort##1{Nov##1{}}%
+\def\btxmondecshort##1{Dec##1{}}%
+% \Btx... -> Satzanfang bzw. gro{\ss} geschrieben.
+\def\Btxinlong##1{In}%
+\def\Btxinshort##1{In}%
+\def\Btxeditorshort##1{Ed##1{}}%
+\def\Btxeditorlong##1{Editor}%
+\def\Btxeditorsshort##1{Eds##1{}}%
+\def\Btxeditorslong##1{Editors}%
+\def\Btxvolumeshort##1{Vol##1{}}%
+\def\Btxvolumelong##1{Volume}%
+\def\Btxnumbershort##1{No##1{}}%
+\def\Btxnumberlong##1{Number}%
+\def\Btxeditionshort##1{Ed##1{}}%
+\def\Btxeditionlong##1{Edition}%
+\def\Btxchaptershort##1{Chap##1{}}%
+\def\Btxchapterlong##1{Chapter}%
+\def\Btxpageshort##1{P##1{}}%
+\def\Btxpagelong##1{Page}%
+\def\Btxpagesshort##1{Pp##1{}}%
+\def\Btxpageslong##1{Pages}%
+\def\Btxtechrepshort##1{Techn.\ Rep##1{}}%
+\def\Btxtechreplong##1{Technical Report}%
+}
+\gdef\bibsenglish{%
+ \bibsUSenglish%
+%perhaps there is something different for the
+%\btx...thesis commands: I'm german -> thus I don't know so exactly!
+}
+\gdef\bibsamerican{\bibsUSenglish}
+
+% MW 20.04.1993 changed to \gdef\p@selectlanguage for german.sty v2.4
+% AS 26.04.1995 changed for german.sty v2.5b
+
+\newif\ifgermbibgerman
+
+\ifoldstyle % plain TeX or LaTeX 2.09
+ \ifx\undefined\p@selectlanguage% wenn german.sty 2.3d,e
+ \gdef\selectlanguage#1{%
+ \expandafter\ifcase #1\relax
+ \dateUSenglish \captionsenglish \bibsUSenglish \or
+ \dategerman \captionsgerman \bibsgerman \or
+ \dateaustrian \captionsgerman \bibsaustrian \or
+ \datefrench \captionsfrench \or
+ \dateenglish \captionsenglish \bibsenglish \fi}
+ \else
+ \ifx\undefined\grmn@originalTeX % andernfalls, wenn german.sty 2.4a, 3.0
+ \gdef\p@selectlanguage#1{\relax \original@TeX
+ \expandafter\ifx\csname l@#1\endcsname\relax
+ \errhelp{Your command will be ignored, type <return> to proceed}%
+ \errmessage{You haven't defined the language #1 yet}%
+ \else
+ \edef\original@TeX{\csname noextras#1\endcsname
+ \let\noexpand\original@TeX\relax}%
+ \csname date#1\endcsname
+ \csname captions#1\endcsname
+ \csname extras#1\endcsname
+ \csname bibs#1\endcsname
+ \language \csname l@#1\endcsname\relax
+ \fi}
+ \else % german.sty 2.5b
+ \def\p@selectlanguage#1{\relax
+ \expandafter\ifx\csname l@#1\endcsname\relax
+ \errhelp{Your command will be ignored, type <return> to proceed}%
+ \errmessage{You haven't defined the language #1 yet}%
+ \else
+ \grmn@originalTeX
+ \edef\grmn@originalTeX{\csname noextras#1\endcsname
+ \def\noexpand\grmn@originalTeX{}}%
+ \csname date#1\endcsname
+ \csname captions#1\endcsname
+ \csname extras#1\endcsname\relax
+ \csname bibs#1\endcsname\relax
+ \language \csname l@#1\endcsname\relax
+ \fi}
+ \fi
+ \fi
+\else % LaTeX 2e
+\AtBeginDocument{%
+\@ifpackageloaded{german}{\germbibgermantrue}{}%
+\@ifpackageloaded{ngerman}{\germbibgermantrue}{}%
+
+\ifgermbibgerman
+ \ifx\undefined\p@selectlanguage% wenn german.sty 2.3d,e
+ \typeout{^^Jbibgerm.sty: (n)german.sty 2.3d,e detected^^J}
+ \gdef\selectlanguage#1{%
+ \expandafter\ifcase #1\relax
+ \dateUSenglish \captionsenglish \bibsUSenglish \or
+ \dategerman \captionsgerman \bibsgerman \or
+ \dateaustrian \captionsgerman \bibsaustrian \or
+ \datefrench \captionsfrench \or
+ \dateenglish \captionsenglish \bibsenglish \fi}
+ \else
+ \ifx\undefined\grmn@originalTeX % andernfalls, wenn german.sty 2.4a, 3.0
+ \typeout{^^Jbibgerm.sty: (n)german.sty 2.4a, 3.0 detected^^J}
+ \gdef\p@selectlanguage#1{\relax \original@TeX
+ \expandafter\ifx\csname l@#1\endcsname\relax
+ \errhelp{Your command will be ignored, type <return> to proceed}%
+ \errmessage{You haven't defined the language #1 yet}%
+ \else
+ \edef\original@TeX{\csname noextras#1\endcsname
+ \let\noexpand\original@TeX\relax}%
+ \csname date#1\endcsname
+ \csname captions#1\endcsname
+ \csname extras#1\endcsname
+ \csname bibs#1\endcsname
+ \language \csname l@#1\endcsname\relax
+ \fi}
+ \else % german.sty 2.5b
+ \typeout{^^Jbibgerm.sty: (n)german.sty 2.5b detected^^J}
+ \def\p@selectlanguage#1{\relax
+ \expandafter\ifx\csname l@#1\endcsname\relax
+ \errhelp{Your command will be ignored, type <return> to proceed}%
+ \errmessage{You haven't defined the language #1 yet}%
+ \else
+ \grmn@originalTeX
+ \edef\grmn@originalTeX{\csname noextras#1\endcsname
+ \def\noexpand\grmn@originalTeX{}}%
+ \csname date#1\endcsname
+ \csname captions#1\endcsname
+ \csname extras#1\endcsname\relax
+ \csname bibs#1\endcsname\relax
+ \language \csname l@#1\endcsname\relax
+ \fi}
+ \fi
+ \fi
+\else % HH 08.08.2000
+ \typeout{^^Jbibgerm.sty: babel.sty detected^^J}
+ \addto{\extrasgerman}{\bibsgerman}
+ \addto{\extrasaustrian}{\bibsaustrian}
+ \addto{\extrasngerman}{\bibsgerman}
+ \addto{\extrasnaustrian}{\bibsaustrian}
+ \addto{\extrasenglish}{\bibsenglish}
+ \addto{\extrasUSenglish}{\bibsUSenglish}
+ \addto{\extrasamerican}{\bibsUSenglish}
+\fi
+}
+\fi % LaTeX 2e
+
+\AtBeginDocument{\expandafter\selectlanguage\expandafter{\languagename}}
+%\germanTeX
+%\selectlanguage{\german}
+
+\endinput
diff --git a/biblio/bibtex/contrib/germbib/styles/german.MISSING b/biblio/bibtex/contrib/germbib/styles/german.MISSING new file mode 120000 index 0000000000..5341c94c12 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/styles/german.MISSING @@ -0,0 +1 @@ +../../../../../language/german/german.MISSING
\ No newline at end of file diff --git a/biblio/bibtex/contrib/germbib/styles/mynormal.sty b/biblio/bibtex/contrib/germbib/styles/mynormal.sty new file mode 100644 index 0000000000..12955026f5 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/styles/mynormal.sty @@ -0,0 +1,101 @@ +\adjdemerits=1000 % penalty for visually incompatible lines (one with maximum space second with miminum space between words) +\brokenpenalty=100 % additional penalty for breaking a page after a hyphenation +\clubpenalty=100 % penalty for breaking a page after the first line of a paragraph +\displaywidowpenalty=50 % penalty for breaking a page before the last line above a display formula +\doublehyphendemerits=50 % penalty if two consecutive lines end with a hyphen +\exhyphenpenalty=10 % as last but breaking at an explicit hyphen (z. B. 'in-output') +\finalhyphendemerits=50 % penalty if the penultimate line of a paragraph ends with a hyphen +\floatingpenalty=8000 % penalty added to \insertpenalty when an insertion (e.g. footnotes) is split +\hyphenpenalty=10 % penalty for a normal hyphenation +\interdisplaylinepenalty=100 % penalty for breaking a formula set with \displaylines +\interfootnotelinepenalty=100 % penalty for breaking a page in a footnote +\interlinepenalty=10 % penalty for breaking a page between lines of a paragraph +\linepenalty=10 % penalty for each line +\looseness=0 % stetch a ideally set paragraph by \looseness-lines +\predisplaypenalty=100 % penalty placed in a vertical list above a display +\pretolerance=500 % tolerance value for a paragraph without hyphenation +\postdisplaypenalty=0 % penalty placed in a vertical list below a display +\relpenalty=500 % penalty for breaking after a binary relation +\tolerance=2000 % tolerance value for a paragraph with hyphenation +\widowpenalty=150 % penalty for breaking a page before the last line of a paragraph +\ifx \lefthyphenmin\undefined \else + \lefthyphenmin=2 + \righthyphenmin=3 + \errorcontextlines=1 + \emergencystretch=2em % assumed extra stretchability in lines of a paragraph (TeX3 only) +\fi +\hoffset=-1.0in +\textwidth6.4in +\oddsidemargin0.8in +\evensidemargin0.8in +\marginparwidth0.6in +\marginparsep0.2in +\marginparpush1ex +\topmargin0pt +\headheight3.5ex +\headsep3ex +\textheight9.25in +\columnsep10pt +\columnseprule0pt +\parindent0pt +\parskip2.5ex plus1.5ex minus1.5ex +%mehr Platz fr Bilder und Tabellen +\setcounter{topnumber}{2} +\def\topfraction{.8} +\setcounter{bottomnumber}{2} +\def\bottomfraction{.8} +\setcounter{totalnumber}{4} +\def\textfraction{0.19} +\def\floatpagefraction{.8} +\setcounter{dbltopnumber}{2} +\def\dbltopfraction{.9} +\def\dblfloatpagefraction{.9} +\long\def\@makecaption#1#2{ +% \vskip 10pt + \vskip 2pt + \setbox\@tempboxa\hbox{#1: #2} + \ifdim \wd\@tempboxa >\hsize #1: #2\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi} +\renewcommand{\arraystretch}{1.2} +\renewcommand{\baselinestretch}{1.1} +\newlength{\mylena} +\newlength{\mylenb} +\newlength{\mylenc} +\newlength{\mylend} +\newlength{\mylene} +\frenchspacing +%unterstrichene Seitenberschriften +\mark{{}{}} + +\if@twoside + \def\ps@headings{ + \let\@mkboth\markboth + \def\@oddfoot{}\def\@evenfoot{} + \def\@evenhead{\vbox{\hbox to \textwidth{\rm \thepage\hfil \sl + \leftmark}\vspace{2pt}\hbox to \textwidth{\hrulefill}}} + \def\@oddhead{\vbox{\hbox to \textwidth{\hbox{}\sl \rightmark + \hfil\rm\thepage}\vspace{2pt}\hbox to \textwidth{\hrulefill}}} + \def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\z@ + \thesection\hskip 1em\relax \fi ##1}}{}} + \def\subsectionmark##1{\markright{\ifnum \c@secnumdepth >\@ne + \thesubsection\hskip 1em\relax \fi ##1}}} +\else + \def\ps@headings{\let\@mkboth\markboth + \def\@oddfoot{}\def\@evenfoot{} + \def\@oddhead{\vbox{\hbox to \textwidth{\hbox {}\sl \rightmark \hfil + \rm\thepage}\vspace{2pt}\hbox to \textwidth{\hrulefill}}} + \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth>\z@ + \thesection\hskip 1em\relax \fi ##1}}}} +\fi +\def\ps@myheadings{\let\@mkboth\@gobbletwo + \def\@oddfoot{}\def\@evenfoot{} + \def\@oddhead{\vbox{\hbox to \textwidth{\hbox{}\sl\rightmark \hfil + \rm\thepage}\vspace{2pt}\hbox to \textwidth{\hrulefill}}} + \def\@evenhead{\vbox{\hbox to \textwidth{\rm \thepage\hfil + \sl\leftmark\hbox{}}\vspace{2pt}\hbox to \textwidth{\hrulefill}}} + \def\sectionmark##1{}\def\subsectionmark##1{}} +\def\footnoterule{\vfill\kern-3\p@ \hrule width \textwidth + \kern 2.6\p@} +\pagestyle{headings} + diff --git a/biblio/bibtex/contrib/germbib/test/gerxampl.bib b/biblio/bibtex/contrib/germbib/test/gerxampl.bib new file mode 100644 index 0000000000..8ef6df3ecc --- /dev/null +++ b/biblio/bibtex/contrib/germbib/test/gerxampl.bib @@ -0,0 +1,359 @@ +@preamble{ "\newcommand{\noopsort}[1]{} " + # "\newcommand{\printfirst}[2]{#1} " + # "\newcommand{\singleletter}[1]{#1} " + # "\newcommand{\switchargs}[2]{#2#1} " } + +@ARTICLE{article-minimal, + author = {Leslie Andrew Aamport}, + title = {Das System f{\"u}r die Vorbereitung von Dokumentationen {\"u}ber Gnats und Gnus}, + journal = {Die Haustier-Zeitschrift}, + year = 1986, + language = "german" +} + +@ARTICLE{article-full, + author = {Leslie Andrew Aamport}, + title = {Das System f{\"u}r die Vorbereitung von Dokumentationen {\"u}ber Gnats und Gnus}, + journal = {Die Haustier-Zeitschrift}, + year = 1986, + volume = 41, + number = 7, + pages = "73\,ff.", + month = jul, + note = "Dies ist ein vollst{\"a}ndiger ARTICLE-Eintrag", +} + +The KEY field is here to override the KEY field in the journal being +cross referenced (so is the NOTE field, in addition to its imparting +information). + +@ARTICLE{article-crossref, + crossref = {WHOLE-JOURNAL}, + key = "", + author = {Leslie Andrew Aamport}, + title = {Das System f{\"u}r die Vorbereitung von Dokumentationen {\"u}ber Gnats und Gnus}, + pages = "73\,ff.", + note = "Dies ist ein querverweisender ARTICLE-Eintrag", +} + +@ARTICLE{whole-journal, + key = "GAJ", + journal = {Die Haustier-Zeitschrift}, + year = 1986, + volume = 41, + number = 7, + month = jul, + note = {Dieses ganze Exemplar ist den Gnats und Gnus gewidmet + (dieser Eintrag ist ein ARTICLE (journal), auf den Verwiesen wurde)}, +} + +@INBOOK{inbook-minimal, + author = "Donald Edward Knuth", + title = "Fundamentale Algorithmen", + publisher = "Addison-Wesley", + year = "{\noopsort{1973b}}1973", + chapter = "1.2", +} + +@INBOOK{inbook-full, + author = "Donald Edward Knuth", + title = "Fundamentale Algorithmen", + volume = 1, + series = "Die Kunst der Computerprogrammierung", + publisher = "Addison-Wesley", + address = "Reading, Massachusetts", + edition = "Zweite", + month = "10.~" # jan, + year = "{\noopsort{1973b}}1973", + type = "Kapitel", + chapter = "1.2", + pages = "10--119", + note = "Dies ist ein vollst{\"a}ndiger INBOOK-Eintrag", +} + +@INBOOK{inbook-crossref, + crossref = "whole-set", + title = "Fundamentale Algorithmen", + volume = 1, + series = "Die Kunst der Computerprogrammierung", + edition = "Zweite", + year = "{\noopsort{1973b}}1973", + type = "Kapitel", + chapter = "1.2", + note = "Dies ist ein querverweisender INBOOK-Eintrag", +} + +@BOOK{book-minimal, + author = "Donald Edward Knuth", + title = "Seminumerische Algorithmen", + publisher = "Addison-Wesley", + year = "{\noopsort{1973c}}1981", +} + +@BOOK{book-full, + author = "Donald Edward Knuth", + title = "Seminumerische Algorithmen", + volume = 2, + series = "Die Kunst der Computerprogrammierung", + publisher = "Addison-Wesley", + address = "Reading, Massachusetts", + edition = "Zweite", + month = "10.~" # jan, + year = "{\noopsort{1973c}}1981", + note = "Dies ist ein vollst{\"a}ndiger BOOK-Eintrag", +} + +@BOOK{book-crossref, + crossref = "whole-set", + title = "Seminumerische Algorithmen", + volume = 2, + series = "Die Kunst der Computerprogrammierung", + edition = "Zweite", + year = "{\noopsort{1973c}}1981", + note = "Dies ist ein querverweisender BOOK-Eintrag", +} + +@BOOK{whole-set, + author = "Donald Edward Knuth", + publisher = "Addison-Wesley", + title = "Die Kunst der Computerprogrammierung", + series = "Vier B{\"a}nde", + year = "{\noopsort{1973a}}{\switchargs{--90}{1968}}", + note = "Sieben B{\"a}nde geplant (dies ist eine Reihe von BOOK(s), auf die verwiesen wird)", +} + +@BOOKLET{booklet-minimal, + key = "Kn{\printfirst{v}{1987}}", + title = "Die Programmierung von Computerkunst", +} + +@BOOKLET{booklet-full, + author = "Jill Clown Knvth", + title = "Die Programmierung von Computerkunst", + howpublished = "Kunstverein D{\"u}sseldorf", + address = "D{\"u}sseldorf, Nordrheinwestfalen", + month = feb, + year = 1988, + note = "Dies ist ein vollst{\"a}ndiger BOOKLET-Eintrag", +} + +@INCOLLECTION{incollection-minimal, + author = "Daniel David Lincoll", + title = "Semigruppen von Wiederholungen", + booktitle = "High Speed Computer und Algorithmus Organisation", + publisher = "Universit{\"a}tsdruckerei", + year = 1977, +} + +@INCOLLECTION{incollection-full, + author = "Daniel David Lincoll", + title = "Semigruppen von Wiederholungen", + editor = "David Johannes Lipcoll and Dirk Herwig Lawrie and Abraham Hans Sameh", + booktitle = "High Speed Computer und Algorithmus Organisation", + number = 23, + series = "Schnelle Computer", + chapter = 3, + type = "Teil", + pages = "179--183", + publisher = "Universit{\"a}tsdruckerei", + address = "Hintertupfingen am Bodensee", + edition = "Dritte", + month = sep, + year = 1977, + note = "Dies ist ein vollst{\"a}ndiger INCOLLECTION-Eintrag", +} + +@INCOLLECTION{incollection-crossref, + crossref = "whole-collection", + author = "Daniel Depp Lincoll", + title = "Semigruppen von Wiederholungen", + pages = "179--183", + note = "Dies ist ein querverweisender INCOLLECTION-Eintrag", +} + +@BOOK{whole-collection, + editor = "David Johannes Lipcoll and Dirk Herwig Lawrie and Abraham Hans Sameh", + title = "High Speed Computer und Algorithmus Organisation", + booktitle = "High Speed Computer und Algorithmus Organisation", + number = 23, + series = "Schnelle Computer", + publisher = "Universit{\"a}tsdruckerei", + address = "Hintertupfingen am Bodensee", + edition = "Dritte", + month = sep, + year = 1977, + note = "Dies ist ein BOOK-Eintrag (aus einer Reihe), auf den verwiesen wurde", +} + +@MANUAL{manual-minimal, + key = "Handbuchmacher", + title = "Das definitive Computer-Handbuch", +} + +@MANUAL{manual-full, + author = "Larry Manmaker", + title = "Das definitive Computer-Handbuch", + organization = "Microchips-Revelation-Deutschland", + address = "Silikontal", + edition = "Silberpfeil", + month = apr # "--" # may, + year = 1986, + note = "Dies ist ein vollst{\"a}ndiger MANUAL-Eintrag", +} + +@MASTERSTHESIS{mastersthesis-minimal, + author = "{\'{E}}douard Masterly", + title = "Wie schreibe ich eine Diplomarbeit?", + school = "Universit{\"a}t W{\"u}rzfestung", + year = 1988, +} + +@MASTERSTHESIS{mastersthesis-full, + author = "{\'{E}}douard Masterly", + title = "Wie schreibe ich eine Diplomarbeit?", + school = "Universit{\"a}t W{\"u}rzfestung", + type = "Projekt {\"u}ber Diplom- und Magisterarbeiten", + address = "Abteilung f{\"u}r Germanistik", + month = jun # "--" # aug, + year = 1988, + note = "Dies ist ein vollst{\"a}ndiger MASTERSTHESIS-Eintrag", +} + +@MISC{misc-minimal, + key = "Vermixtes", + note = "Dies ist ein minimaler MISC-Eintrag", +} + +@MISC{misc-full, + author = "Joe-Bob Missilany", + title = "Zuf{\"a}llige Verteilung von Pamphleten an Flugh{\"a}fen", + howpublished = "Ausgegeben in Frankfurt am Main", + month = oct, + year = 1984, + note = "Dies ist ein vollst{\"a}ndiger MISC-Eintrag", +} + +@STRING{STOC-key = "OX{\singleletter{stoc}}"} + +@STRING{ACM = "OX-Vereinigung f{\"u}r Computing-Maschinerie"} + +@STRING{STOC = ": Symposium {\"u}ber die Theorie des Computing"} + +@INPROCEEDINGS{inproceedings-minimal, + author = "Alfred Veit Oaho and Jeffrey Dieter Ullman and Mihalis Yannakakis", + title = "Vorstellungen {\"u}ber die Informations{\"u}bertragung in {VLSI}-Schaltkreisen", + booktitle = "Konferenz zum f{\"u}nften Jahrestag der " # ACM # STOC, + year = 1983, +} + +@INPROCEEDINGS{inproceedings-full, + author = "Alfred Veit Oaho and Jeffrey Dieter Ullman and Mihalis Yannakakis", + title = "Vorstellungen {\"u}ber die Informations{\"u}bertragung in {VLSI}-Schaltkreisen", + booktitle = "Konferenz zum f{\"u}nften Jahrestag der " # ACM # STOC, + editor = "Wizard Veit Oz and Mihalis Yannakakis", + number = 17, + series = "Alle Konferenzen der " # ACM, + pages = "133--139", + month = mar, + year = 1983, + address = "M{\"u}nchen", + organization = ACM, + publisher = "Universit{\"a}tsdruckerei", + note = "Dies ist ein vollst{\"a}ndiger INPROCEDINGS-Eintrag", +} + +@INPROCEEDINGS{inproceedings-crossref, + crossref = "whole-proceedings", + author = "Alfred Veit Oaho and Jeffrey Dieter Ullman and Mihalis Yannakakis", + title = "Vorstellungen {\"u}ber die Informations{\"u}bertragung in {VLSI}-Schaltkreisen", + organization = "", + pages = "133--139", + note = "Dies ist ein querverweisender INPROCEEDINGS-Eintrag", +} + +@PROCEEDINGS{proceedings-minimal, + key = STOC-key, + title = "Konferenz zum f{\"u}nften Jahrestag der " # ACM # STOC, + year = 1983, +} + +@PROCEEDINGS{proceedings-full, + editor = "Wizard Veit Oz and Mihalis Yannakakis", + title = "Proc. Fifteenth Annual" # STOC, + number = 17, + series = "Alle Konferenzen der " # ACM, + month = mar, + year = 1983, + address = "M{\"u}nchen", + organization = ACM, + publisher = "Universit{\"a}tsdruckerei", + note = "Dies ist ein vollst{\"a}ndiger PROCEEDINGS-Eintrag", +} + +@PROCEEDINGS{whole-proceedings, + key = STOC-key, + organization = ACM, + title = "Konferenz zum f{\"u}nften Jahrestag" # STOC, + address = "M{\"u}nchen", + year = 1983, + booktitle = "Konferenz zum f{\"u}nften Jahrestag der " # ACM # STOC, + note = "This is a cross-referenced PROCEEDINGS", +} + +@PHDTHESIS{phdthesis-minimal, + author = "Friedrich Phidias Phony-Baloney", + title = "Feuer mit Feuer bek{\"a}mpfen: Gewandte Franz{\"o}sische Redewendungen", + school = "Fanstord Universit{\"a}t", + year = 1988, +} + +@PHDTHESIS{phdthesis-full, + author = "Friedrich Phidias Phony-Baloney", + title = "Feuer mit Feuer bek{\"a}mpfen: Gewandte Franz{\"o}sische Redewendungen", + school = "Universit{\"a}t W{\"u}rzburg", + type = "Dissertation", + address = "Abteilung f{\"u}r Franz{\"o}sisch", + month = jun # "--" # aug, + year = 1988, + note = "Dies ist ein vollst{\"a}ndiger PHDTHESIS-Eintrag", +} + +@TECHREPORT{techreport-minimal, + author = "Tom von Schrecklich", + title = "An {$O(n \log n / \! \log\log n)$} Sortier Algorithmus", + institution = "Universit{\"a}t W{\"u}rzburg", + year = 1988, +} + +@TECHREPORT{techreport-full, + author = "Tom T{\'{e}}rrific", + title = "An {$O(n \log n / \! \log\log n)$} Sortier Algorithmus", + institution = "Universit{\"a}t W{\"u}rzburg", + type = "W{\"u}nschenswertes Untersuchungsergebnis", + number = "7", + address = "Abteilung f{\"u}r Computerwissenschaften, W{\"u}rzburg, Bayern", + month = oct, + year = 1988, + note = "Dies ist ein vollst{\"a}ndiger TECHREPORT-Eintrag", +} + +@UNPUBLISHED{unpublished-minimal, + author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot", + title = "Niedrigere Grenzen f{\"u}r w{\"u}nschenswerte Untersuchungsergebnisse", + note = "Colloquium an der Universit{\"a}t W{\"u}rzburg (dies ist ein minimaler UNPUBLISHED-Eintrag)", +} + +@UNPUBLISHED{unpublished-full, + author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot", + title = "Niedrigere Grenzen f{\"u}r w{\"u}nschenswerte Untersuchungsergebnisse", + month = nov # ", " # dec, + year = 1988, + note = "Colloquium an der Universit{\"a}t W{\"u}rzburg (dies ist ein vollst{\"a}ndiger UNPUBLISHED-Eintrag)", +} + +@MISC{random-note-crossref, + key = {Volume-2}, + note = "Band~2 ist unter Knuth \cite{book-full} aufgef{\"u}hrt" +} + + diff --git a/biblio/bibtex/contrib/germbib/test/schaum.bib b/biblio/bibtex/contrib/germbib/test/schaum.bib new file mode 100644 index 0000000000..e8676552b4 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/test/schaum.bib @@ -0,0 +1,531 @@ +@Book{gibson1997a, + author = {Gibson, L. J. and Ashby, M. F.}, + ALTeditor = {}, + title = {{Cellular solids}}, + publisher = {Cambridge University Press}, + year = {1997}, + OPTkey = {}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {}, + edition = {second}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + +@Article{davies1983a, + author = {Davies, G. J. and Zhen, Shu}, + title = {{Metallic foams: their production, properties and + applications}}, + journal = {Mater. Sci.}, + year = {1899}, + OPTkey = {}, + volume = {18}, + OPTnumber = {}, + pages = {1899}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + +@InProceedings{baumeister1997a, + author = {Baumeister, J.}, + title = {{\"Uberblick: Verfahren zur Herstellung von Metallsch\"aumen}}, + booktitle = {Metallsch\"aume (Beitr\"age zum Symposium Metallsch\"aume, + IFAM, Bremen, 06.\,--\,07.\,03.~1997)}, + OPTcrossref = {}, + OPTkey = {}, + OPTpages = {3}, + year = {1997}, + OPTeditor = {}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {Bremen}, + OPTmonth = {}, + OPTorganization = {}, + publisher = {Verlag MIT Bremen}, + OPTnote = {}, + OPTannote = {}, + language = {german} +} + + +@Article{simone1998a, + author = {Simone, A. E. and Gibson, L. J.}, + title = {{Aluminium foams produced by liquid-state processes}}, + journal = {Acta mater.}, + year = {1998}, + OPTkey = {}, + volume = {46}, + OPTnumber = {}, + pages = {3109}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + +@Article{banhart1994a, + author = {Banhart, J. and Baumeister, J. and Weber, M.}, + title = {{Metallschaum -- ein Werkstoff mit Perspektiven}}, + journal = {Aluminium}, + year = {1994}, + OPTkey = {}, + volume = {70}, + OPTnumber = {}, + pages = {209}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {german} +} + +@Article{banhart1997a, + author = {Banhart, J. and Baumeister, J. and Weber, M.}, + title = {{Aluminium foams for transport industry}}, + journal = {Materials \& Design}, + year = {1997}, + OPTkey = {}, + volume = {18}, + OPTnumber = {}, + pages = {221}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + +@Misc{mepura1997a, + key = {MEPURA}, + OPTauthor = {}, + title = {{MEPURA: "`Alulight"'}}, + howpublished = {Firmenschrift der MEPURA-Metallpulver GmbH}, + month = {April}, + year = {1997}, + note = {Ranshofen, \"Osterreich}, + OPTannote = {}, + language = {german} +} + + + +@Article{degischer1997a, + author = {Degischer, H. P.}, + title = {{Innovative light metals: metal matrix composites and + foamed aluminium}}, + journal = {Materials \& Design}, + year = {1997}, + OPTkey = {}, + volume = {18}, + OPTnumber = {}, + pages = {221}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + +@Article{ashby1983a, + author = {Ashby, M. F.}, + title = {{The mechanical properties of cellular solids}}, + journal = {Met. Trans.}, + year = {1983}, + OPTkey = {}, + volume = {14A}, + OPTnumber = {}, + pages = {1755}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + + +@Article{gibson1989a, + author = {Gibson, L. J.}, + title = {{Modelling the mechanical behaviour of cellular materials}}, + journal = {Mat. Sci. Eng.}, + year = {1989}, + OPTkey = {}, + volume = {A 110}, + OPTnumber = {}, + pages = {1}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + +@Article{weaire1994a, + author = {Weaire, D. and Fortes, M. A.}, + title = {{Stress and strain in liquid and solid foams}}, + journal = {Adv. in Physics}, + year = {1994}, + OPTkey = {}, + volume = {43}, + OPTnumber = {}, + pages = {685}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + +@Article{triantafillou1989a, + author = {Triantafillou, T. C. and Zhang, J. and Shercliff, T. L. and + Gibson, L. J. and Ashby, M. F.}, + title = {{Failure surfaces for cellular materials under multiaxial + loads -- II. Comparison of models with experiment}}, + journal = {Int. J. Mech. Sci.}, + year = {1997}, + OPTkey = {}, + volume = {39}, + OPTnumber = {}, + pages = {549}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + + +@Article{silva1997a, + author = {Silva, M. J. and Gibson, L. J.}, + title = {{The effect of non-periodic microstructure and defects + on the compressive strength of two-dimensional cellular + solids}}, + journal = {Int. J. Mech. Sci.}, + year = {1997}, + OPTkey = {}, + volume = {39}, + OPTnumber = {}, + pages = {549}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + +@Article{simone1998b, + author = {Simone, A. E. and Gibson, L. J.}, + title = {{Effects of solid distribution on the stiffness and + strength of metallic foams}}, + journal = {Acta mater.}, + year = {1998}, + OPTkey = {}, + volume = {46}, + OPTnumber = {}, + pages = {2139}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + + +@InProceedings{degischer1997b, + author = {Degischer, H. P. and Galovsky, U. and Gradinger, R. and + Kretz, R. and Simanc\'ik, F.}, + title = {{\"Uber mechanische Eigenschaften von Aluminiumsch\"aumen}}, + booktitle = {Metallsch\"aume (Beitr\"age zum Symposium Metallsch\"aume, IFAM, + Bremen, 06.\,--\,07.\,03.~1997}, + OPTcrossref = {}, + OPTkey = {}, + pages = {79}, + year = {1997}, + editor = {J. Banhart}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {}, + OPTmonth = {}, + OPTorganization = {}, + publisher = {Verlag MIT Bremen}, + OPTnote = {}, + OPTannote = {}, + language = {german} +} + + + +@Article{beals1997a, + author = {Beals, J. T. and Thompson, M. S.}, + title = {{Density gradient effects on aluminium foam compression + behavior}}, + journal = {J. Mater. Sci}, + year = {1997}, + OPTkey = {}, + volume = {32}, + OPTnumber = {}, + pages = {3595}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + +@Article{sugimura1997a, + author = {Sugimura, Y. and Meyer, J. and He, M. Y. and + Bart-Smith, H. and Greenstedt, J. and Evans, A. G.}, + title = {{On the mechanical performance of closed cell Al foams}}, + journal = {Acta mater.}, + year = {1997}, + OPTkey = {}, + volume = {45}, + OPTnumber = {45}, + pages = {5245}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + +@Article{banhart1997b, + author = {Banhart, J. and Baumeister, J.}, + title = {{Das Verformungsverhalten gesch\"aumter Metalle}}, + journal = {Metall}, + year = {1997}, + OPTkey = {}, + volume = {51}, + OPTnumber = {}, + pages = {19}, + OPTmonth = {}, + note = {}, + OPTannote = {}, + language = {german} +} + + + +@Article{banhart1998a, + author = {Banhart, J. and Baumeister, J.}, + title = {{Deformation characteristics of metal foams}}, + journal = {J. Mater. Sci.}, + year = {1998}, + OPTkey = {}, + volume = {33}, + OPTnumber = {}, + pages = {1431}, + OPTmonth = {}, + note = {}, + OPTannote = {}, + language = {english} +} + + + +@InProceedings{huschka1997a, + author = {Huschka, S. and Hicken, S. and Arendts, F.-J.}, + title = {{Modellierung der Spannungs-Stauchungskurven von + Aluminiumschaum unter Ber\"ucksichtigung der + Porengr\"o\ss{}enverteilung}}, + booktitle = {Metallsch\"aume (Beitr\"age zum Symposium Metallsch\"aume, IFAM, + Bremen 06.\,--\,07.\,03.~1997}, + OPTcrossref = {}, + OPTkey = {}, + pages = {189}, + year = {1997}, + editor = {J. Banhart}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {}, + OPTmonth = {}, + OPTorganization = {}, + publisher = {Verlag MIT Bremen}, + OPTnote = {}, + OPTannote = {}, + language = {german} +} + + +@Article{santosa1998a, + author = {Santosa, S. and Wierzbicki, T.}, + title = {{On the modeling of crush behavior of a closed-cell + aluminium foam structure}}, + journal = {J. Mech. Phys. Solids}, + year = {1998}, + OPTkey = {}, + volume = {46}, + OPTnumber = {}, + pages = {645}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + + +@PhdThesis{huschka1998a, + author = {Huschka, S.}, + title = {{Modellierung eines Materialgesetzes zur Beschreibung + der mechanischen Eigenschaften von Aluminiumschaum}}, + school = {Universit\"at Stuttgart}, + year = {1998}, + OPTkey = {}, + type = {Dissertation}, + address = {VDI-Verlag. Fortschrittsberichte, Reihe 5, Nr. 525}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {german} +} + + + +@Misc{dfgdaempfung2000a, + key = {Arbeitsbericht}, + OPTauthor = {}, + title = {{Arbeitsbericht zum DFG-Vorhaben Si~408/5-1 \glqq Mechanische + D\"ampfung metallischer Sch\"aume\grqq\ im + DFG"=Schwerpunktprogramm SPP~1075}}, + OPThowpublished = {}, + OPTmonth = {}, + year = {2000}, + OPTnote = {}, + OPTannote = {}, + language = {german} +} + +@Misc{akprueftechnik2000a, + key = {Protokoll}, + OPTauthor = {}, + title = {{Protokoll des Arbeitskreistreffens \glqq Mechanische + Pr\"uftechnik\grqq\ und \glqq Quantitative + Gef\"ugebeschreibung\grqq\ am 29. und 30.\,03.~2000 an der + TU Bergakademie Freiberg, Institut f\"ur Metallkunde}}, + OPThowpublished = {}, + month = {04.\,04.}, + year = {2000}, + OPTnote = {}, + OPTannote = {}, + language = {german} +} + + +@Article{sugimura1999a, + author = {Sugimura, Y. and Rabiei, A. and Evans, A. G. and + Harte, A. M. and Fleck, N. A.}, + title = {{Compression fatigue of a cellular Al alloy}}, + journal = {Materials Science \&\ Engineering}, + year = {1999}, + OPTkey = {}, + volume = {A269}, + OPTnumber = {}, + pages = {38--48}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + + +@InProceedings{schultz1999a, + author = {Schultz, O. and Ligneris A. des and + Haider, O. and Starke, P.}, + title = {{Fatigue behaviour, strength and failure of aluminium foam}}, + booktitle = {Metal Foams and Porous Metal Structures}, + OPTcrossref = {}, + OPTkey = {}, + pages = {379--386}, + year = {1999}, + editor = {Banhart, J. and Ashby, M. F. and Fleck, N. A.}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {}, + OPTmonth = {}, + OPTorganization = {}, + publisher = {MIT Verlag}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + +@InProceedings{olurin1999a, + author = {Olurin, O. B. and Fleck, N. A. and Ashby, M. F.}, + title = {{Fatigue of an aluminium alloy foam}}, + booktitle = {Metal Foams and Porous Metal Structures}, + OPTcrossref = {}, + OPTkey = {}, + pages = {365--371}, + year = {1999}, + editor = {Banhart, J. and Ashby, M. F. and Fleck, N. A.}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {}, + OPTmonth = {}, + OPTorganization = {}, + publisher = {MIT Verlag}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + +@InProceedings{zettl1999a, + author = {Zettl, B. and Stanzl-Tschegg, S.}, + title = {{Fatigue of Aluminium Foams at Ultrasonic Frequencies}}, + booktitle = {Metal Foams and Porous Metal Structures}, + OPTcrossref = {}, + OPTkey = {}, + pages = {373--378}, + year = {1999}, + editor = {Banhart, J. and Ashby, M. F. and Fleck, N. A.}, + OPTvolume = {}, + OPTnumber = {}, + OPTseries = {}, + OPTaddress = {}, + OPTmonth = {}, + OPTorganization = {}, + publisher = {MIT Verlag}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + +@Article{bart-smith1998a, + author = {Bart-Smith, H. and Bastawros, A.-F. and Mumm, D. R. and + Evans, A. G. and Sypeck, D. J. and Wadley, H. N. G.}, + title = {{Compressive Deformation and Yielding Mechanisms in + Cellular Al Alloys Determined Using X-Ray Tomography and + Surface Strain Mapping}}, + journal = {Acta mater.}, + year = {1998}, + OPTkey = {}, + volume = {46}, + number = {10}, + pages = {3583--3592}, + OPTmonth = {}, + OPTnote = {}, + OPTannote = {}, + language = {english} +} + diff --git a/biblio/bibtex/contrib/germbib/test/testbibgerm.dvi b/biblio/bibtex/contrib/germbib/test/testbibgerm.dvi Binary files differnew file mode 100644 index 0000000000..572aa87868 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/test/testbibgerm.dvi diff --git a/biblio/bibtex/contrib/germbib/test/testbibgerm.tex b/biblio/bibtex/contrib/germbib/test/testbibgerm.tex new file mode 100644 index 0000000000..e58bcfe1cd --- /dev/null +++ b/biblio/bibtex/contrib/germbib/test/testbibgerm.tex @@ -0,0 +1,21 @@ +\iffalse % true: LaTeX 2.09; false: LaTeX (2e)
+ %\documentstyle[ngerman,hhbibgerm]{article}
+ %\documentstyle[german,hhbibgerm]{article}
+ \documentstyle[bibgerm]{article}
+\else
+ \documentclass{article}
+ \listfiles
+ \usepackage{bibgerm}
+ \usepackage[english,german,ngerman]{babel}
+ %\usepackage{ngerman}
+ %\usepackage{german}
+\fi
+
+\begin{document}
+\noindent Active language: \languagename
+\nocite{mepura1997a,degischer1997b}
+\nocite{ashby1983a,banhart1997b,banhart1998a,beals1997a,
+ gibson1989a,sugimura1997a}
+\bibliographystyle{gerplain}
+\bibliography{schaum}
+\end{document}
diff --git a/biblio/bibtex/contrib/germbib/test/testgerb.tex b/biblio/bibtex/contrib/germbib/test/testgerb.tex new file mode 100644 index 0000000000..3103c8df6c --- /dev/null +++ b/biblio/bibtex/contrib/germbib/test/testgerb.tex @@ -0,0 +1,89 @@ +% macropackage lplaing +%format latexg +% This is for tests with `GERXAMPL.BIB' or `XAMPL.BIB' +% and the different style-files +\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +\documentstyle[bibgerm,mynormal% +%,apalike% +]{article} +%\nonfrenchspacing +%\originalTeX +\begin{document} + +Siehe \cite[Kapitel 3.4, S. 105\,ff.]{article-full}. + + +Aaamport schreibt in \cite[S. 77--78]{article-minimal} wie sich +die Gnats mit den Gnus vertragen. + + +Ein Artikel in \cite{article-crossref}. + +Bcher, Bcher, Bcher \cite{book-crossref}. + + +Ein volles Buch kann schwer sein, ein vielb„ndiges Werk wie die Reihe +\cite{book-full} erst recht. + +Etwas fr Leseratten zum Thema \TeX\ findet sich in \cite{book-minimal}. + +Fr weniger Leseinteressierte ein kleines Buch \cite{booklet-full}. + +Booklet heižen solche Dinger auf "`USenglish"' \cite{booklet-minimal}. + +Ein Kapitel aus einem Buch ist in \cite{inbook-crossref} angegeben, +dasselbe Kapitel noch einmal unter \cite{inbook-full}. Der n„chste +Eintrag ist glaube ich ein neuer \cite{inbook-minimal} --- oder auch nicht. + +Einzelne B„nde einer Reihe wie \cite{incollection-crossref} k”nnen so oder +auch anders wie hier \cite{incollection-full} zitiert werden. Auch die +folgende Variante kann ich ihnen anbieten \cite{incollection-minimal}. + +Konferenzen, Konferenzen \cite{inproceedings-crossref}. Und wenn auf der +Konferenz etwas ver”ffentlicht wurde wie \cite{inproceedings-full} dann kann +man es unter \cite{inproceedings-minimal} nachlesen. + +Hnadbcher gibts auch \cite{manual-full}. Auch wenn \cite{manual-minimal} ein +bl”des Beispiel dafr ist. + +Dieser Text und diese \cite{mastersthesis-full} Diplomarbeit sind wohl +ebensowenig wie die folgende \cite{mastersthesis-minimal} ganz ernst zu +nehmen. + +Vermixtes will heižen \cite{misc-full}. Gemischtes \cite{misc-minimal} ist +fr alles gut. + +Anspruschsvolelr ist da schon \cite{phdthesis-full}, eine Doktorarbeit, mit der +sich auch \cite{phdthesis-minimal} besch„ftigt. + +Schon wieder Konferenzen \cite{proceedings-full} ber Konferenzen \cite{proceedings-minimal}. + + +Diese ist ein Band mit einem zuf„lligen Querverweis \cite{random-note-crossref} --- oder so. + +Heižt es nun "`Technischer Bericht"' \cite{techreport-full} oder sind einfach +Bedienungsanleitungen damit gemeint \cite{techreport-minimal}. + +Selbst Sachen, die noch nicht publiziert sind \cite{unpublished-full} kann man +so \cite{unpublished-minimal} zitieren. + +Ein Beispiel fr eine Gesamtausgabe \cite{whole-collection}. + +Ein Beispiel fr eine Zeitschrift \cite{whole-journal}. + +Und noch mehr vollst„ndiges: Konferenzen \cite{whole-proceedings} und +ein "`Set"' \cite{whole-set}. + +\nocite{*} + +\bibliography{gerxampl} +\bibliographystyle{gerabbrv} +%\bibliographystyle{gerplain} +%\bibliographystyle{gerunsrt} +%\bibliographystyle{geralpha} +%%\bibliographystyle{gerapali} + + +\end{document} diff --git a/biblio/bibtex/contrib/germbib/test/xampl.bib b/biblio/bibtex/contrib/germbib/test/xampl.bib new file mode 100644 index 0000000000..7121774497 --- /dev/null +++ b/biblio/bibtex/contrib/germbib/test/xampl.bib @@ -0,0 +1,359 @@ +@preamble{ "\newcommand{\noopsort}[1]{} " + # "\newcommand{\printfirst}[2]{#1} " + # "\newcommand{\singleletter}[1]{#1} " + # "\newcommand{\switchargs}[2]{#2#1} " } + +@ARTICLE{article-minimal, + author = {L[eslie] A. Aamport}, + title = {The Gnats and Gnus Document Preparation System}, + journal = {\mbox{G-Animal's} Journal}, + year = 1986, + language = "english" +} + +@ARTICLE{article-full, + author = {L[eslie] A. Aamport}, + title = {The Gnats and Gnus Document Preparation System}, + journal = {\mbox{G-Animal's} Journal}, + year = 1986, + volume = 41, + number = 7, + pages = "73+", + month = jul, + note = "This is a full ARTICLE entry", +} + +The KEY field is here to override the KEY field in the journal being +cross referenced (so is the NOTE field, in addition to its imparting +information). + +@ARTICLE{article-crossref, + crossref = {WHOLE-JOURNAL}, + key = "", + author = {L[eslie] A. Aamport}, + title = {The Gnats and Gnus Document Preparation System}, + pages = "73+", + note = "This is a cross-referencing ARTICLE entry", +} + +@ARTICLE{whole-journal, + key = "GAJ", + journal = {\mbox{G-Animal's} Journal}, + year = 1986, + volume = 41, + number = 7, + month = jul, + note = {The entire issue is devoted to gnats and gnus + (this entry is a cross-referenced ARTICLE (journal))}, +} + +@INBOOK{inbook-minimal, + author = "Donald E. Knuth", + title = "Fundamental Algorithms", + publisher = "Addison-Wesley", + year = "{\noopsort{1973b}}1973", + chapter = "1.2", +} + +@INBOOK{inbook-full, + author = "Donald E. Knuth", + title = "Fundamental Algorithms", + volume = 1, + series = "The Art of Computer Programming", + publisher = "Addison-Wesley", + address = "Reading, Massachusetts", + edition = "Second", + month = "10~" # jan, + year = "{\noopsort{1973b}}1973", + type = "Section", + chapter = "1.2", + pages = "10--119", + note = "This is a full INBOOK entry", +} + +@INBOOK{inbook-crossref, + crossref = "whole-set", + title = "Fundamental Algorithms", + volume = 1, + series = "The Art of Computer Programming", + edition = "Second", + year = "{\noopsort{1973b}}1973", + type = "Section", + chapter = "1.2", + note = "This is a cross-referencing INBOOK entry", +} + +@BOOK{book-minimal, + author = "Donald E. Knuth", + title = "Seminumerical Algorithms", + publisher = "Addison-Wesley", + year = "{\noopsort{1973c}}1981", +} + +@BOOK{book-full, + author = "Donald E. Knuth", + title = "Seminumerical Algorithms", + volume = 2, + series = "The Art of Computer Programming", + publisher = "Addison-Wesley", + address = "Reading, Massachusetts", + edition = "Second", + month = "10~" # jan, + year = "{\noopsort{1973c}}1981", + note = "This is a full BOOK entry", +} + +@BOOK{book-crossref, + crossref = "whole-set", + title = "Seminumerical Algorithms", + volume = 2, + series = "The Art of Computer Programming", + edition = "Second", + year = "{\noopsort{1973c}}1981", + note = "This is a cross-referencing BOOK entry", +} + +@BOOK{whole-set, + author = "Donald E. Knuth", + publisher = "Addison-Wesley", + title = "The Art of Computer Programming", + series = "Four volumes", + year = "{\noopsort{1973a}}{\switchargs{--90}{1968}}", + note = "Seven volumes planned (this is a cross-referenced set of BOOKs)", +} + +@BOOKLET{booklet-minimal, + key = "Kn{\printfirst{v}{1987}}", + title = "The Programming of Computer Art", +} + +@BOOKLET{booklet-full, + author = "Jill C. Knvth", + title = "The Programming of Computer Art", + howpublished = "Vernier Art Center", + address = "Stanford, California", + month = feb, + year = 1988, + note = "This is a full BOOKLET entry", +} + +@INCOLLECTION{incollection-minimal, + author = "Daniel D. Lincoll", + title = "Semigroups of Recurrences", + booktitle = "High Speed Computer and Algorithm Organization", + publisher = "Academic Press", + year = 1977, +} + +@INCOLLECTION{incollection-full, + author = "Daniel D. Lincoll", + title = "Semigroups of Recurrences", + editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh", + booktitle = "High Speed Computer and Algorithm Organization", + number = 23, + series = "Fast Computers", + chapter = 3, + type = "Part", + pages = "179--183", + publisher = "Academic Press", + address = "New York", + edition = "Third", + month = sep, + year = 1977, + note = "This is a full INCOLLECTION entry", +} + +@INCOLLECTION{incollection-crossref, + crossref = "whole-collection", + author = "Daniel D. Lincoll", + title = "Semigroups of Recurrences", + pages = "179--183", + note = "This is a cross-referencing INCOLLECTION entry", +} + +@BOOK{whole-collection, + editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh", + title = "High Speed Computer and Algorithm Organization", + booktitle = "High Speed Computer and Algorithm Organization", + number = 23, + series = "Fast Computers", + publisher = "Academic Press", + address = "New York", + edition = "Third", + month = sep, + year = 1977, + note = "This is a cross-referenced BOOK (collection) entry", +} + +@MANUAL{manual-minimal, + key = "Manmaker", + title = "The Definitive Computer Manual", +} + +@MANUAL{manual-full, + author = "Larry Manmaker", + title = "The Definitive Computer Manual", + organization = "Chips-R-Us", + address = "Silicon Valley", + edition = "Silver", + month = apr # "--" # may, + year = 1986, + note = "This is a full MANUAL entry", +} + +@MASTERSTHESIS{mastersthesis-minimal, + author = "{\'{E}}douard Masterly", + title = "Mastering Thesis Writing", + school = "Stanford University", + year = 1988, +} + +@MASTERSTHESIS{mastersthesis-full, + author = "{\'{E}}douard Masterly", + title = "Mastering Thesis Writing", + school = "Stanford University", + type = "Master's project", + address = "English Department", + month = jun # "-" # aug, + year = 1988, + note = "This is a full MASTERSTHESIS entry", +} + +@MISC{misc-minimal, + key = "Missilany", + note = "This is a minimal MISC entry", +} + +@MISC{misc-full, + author = "Joe-Bob Missilany", + title = "Handing out random pamphlets in airports", + howpublished = "Handed out at O'Hare", + month = oct, + year = 1984, + note = "This is a full MISC entry", +} + +@STRING{STOC-key = "OX{\singleletter{stoc}}"} + +@STRING{ACM = "The OX Association for Computing Machinery"} + +@STRING{STOC = " Symposium on the Theory of Computing"} + +@INPROCEEDINGS{inproceedings-minimal, + author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis", + title = "On Notions of Information Transfer in {VLSI} Circuits", + booktitle = "Proc. Fifteenth Annual ACM" # STOC, + year = 1983, +} + +@INPROCEEDINGS{inproceedings-full, + author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis", + title = "On Notions of Information Transfer in {VLSI} Circuits", + editor = "Wizard V. Oz and Mihalis Yannakakis", + booktitle = "Proc. Fifteenth Annual ACM" # STOC, + number = 17, + series = "All ACM Conferences", + pages = "133--139", + month = mar, + year = 1983, + address = "Boston", + organization = ACM, + publisher = "Academic Press", + note = "This is a full INPROCEDINGS entry", +} + +@INPROCEEDINGS{inproceedings-crossref, + crossref = "whole-proceedings", + author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis", + title = "On Notions of Information Transfer in {VLSI} Circuits", + organization = "", + pages = "133--139", + note = "This is a cross-referencing INPROCEEDINGS entry", +} + +@PROCEEDINGS{proceedings-minimal, + key = STOC-key, + title = "Proc. Fifteenth Annual" # STOC, + year = 1983, +} + +@PROCEEDINGS{proceedings-full, + editor = "Wizard V. Oz and Mihalis Yannakakis", + title = "Proc. Fifteenth Annual" # STOC, + number = 17, + series = "All ACM Conferences", + month = mar, + year = 1983, + address = "Boston", + organization = ACM, + publisher = "Academic Press", + note = "This is a full PROCEEDINGS entry", +} + +@PROCEEDINGS{whole-proceedings, + key = STOC-key, + organization = ACM, + title = "Proc. Fifteenth Annual" # STOC, + address = "Boston", + year = 1983, + booktitle = "Proc. Fifteenth Annual ACM" # STOC, + note = "This is a cross-referenced PROCEEDINGS", +} + +@PHDTHESIS{phdthesis-minimal, + author = "F. Phidias Phony-Baloney", + title = "Fighting Fire with Fire: Festooning {F}rench Phrases", + school = "Fanstord University", + year = 1988, +} + +@PHDTHESIS{phdthesis-full, + author = "F. Phidias Phony-Baloney", + title = "Fighting Fire with Fire: Festooning {F}rench Phrases", + school = "Fanstord University", + type = "{PhD} Dissertation", + address = "Department of French", + month = jun # "-" # aug, + year = 1988, + note = "This is a full PHDTHESIS entry", +} + +@TECHREPORT{techreport-minimal, + author = "Tom Terrific", + title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm", + institution = "Fanstord University", + year = 1988, +} + +@TECHREPORT{techreport-full, + author = "Tom T{\'{e}}rrific", + title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm", + institution = "Fanstord University", + type = "Wishful Research Result", + number = "7", + address = "Computer Science Department, Fanstord, California", + month = oct, + year = 1988, + note = "This is a full TECHREPORT entry", +} + +@UNPUBLISHED{unpublished-minimal, + author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot", + title = "Lower Bounds for Wishful Research Results", + note = "Talk at Fanstord University (this is a minimal UNPUBLISHED entry)", +} + +@UNPUBLISHED{unpublished-full, + author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot", + title = "Lower Bounds for Wishful Research Results", + month = nov # ", " # dec, + year = 1988, + note = "Talk at Fanstord University (this is a full UNPUBLISHED entry)", +} + +@MISC{random-note-crossref, + key = {Volume-2}, + note = "Volume~2 is listed under Knuth \cite{book-full}" +} + + |