From 498a57b54b9d627acb94b05c6bcb1129b57c0310 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 16 Jul 2007 16:12:53 +0000 Subject: achemso 2.2b (9jul07) git-svn-id: svn://tug.org/texlive/trunk@4610 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/bibtex/bst/achemso/achemlnt.bst | 1395 ++++++++++++++++++++ Master/texmf-dist/bibtex/bst/achemso/achemnat.bst | 1385 +++++++++++++++++++ Master/texmf-dist/bibtex/bst/achemso/achemso.bst | 41 +- Master/texmf-dist/bibtex/bst/achemso/achemsol.bst | 41 +- Master/texmf-dist/doc/latex/achemso/README | 32 +- Master/texmf-dist/doc/latex/achemso/achemso.pdf | Bin 210345 -> 132916 bytes Master/texmf-dist/source/latex/achemso/achemso.dtx | 523 +++++++- Master/texmf-dist/source/latex/achemso/achemso.ins | 4 +- Master/texmf-dist/tex/latex/achemso/achemso.sty | 48 +- 9 files changed, 3352 insertions(+), 117 deletions(-) create mode 100644 Master/texmf-dist/bibtex/bst/achemso/achemlnt.bst create mode 100644 Master/texmf-dist/bibtex/bst/achemso/achemnat.bst diff --git a/Master/texmf-dist/bibtex/bst/achemso/achemlnt.bst b/Master/texmf-dist/bibtex/bst/achemso/achemlnt.bst new file mode 100644 index 00000000000..0bd271ac82a --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/achemso/achemlnt.bst @@ -0,0 +1,1395 @@ +%% +%% This is file `achemlnt.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% achemso.dtx (with options: `bib,list,nat') +%% ---------------------------------------------------------------- +%% The achemso package - A BibTeX style for American Chemical +%% Society publications +%% Maintained by Joseph Wright +%% E-mail: joseph.wright@morningstar2.co.uk +%% Originally developed by Mats Dahlgren +%% (c) 1996-98 by Mats Dahlgren +%% (c) 2007 Joseph Wright +%% Released under the LaTeX Project Public license v1.3 or later +%% ---------------------------------------------------------------- +ENTRY + { address + annotate + author + booktitle + chapter + doi + edition + editor + howpublished + institution + journal + key + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { + label + extra.label + short.list + } + +INTEGERS { output.state before.all mid.sentence after.sentence } +INTEGERS { after.block after.item author.or.editor } +INTEGERS { separate.by.semicolon } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.item := +} + +FUNCTION {add.comma} +{ ", " * } + +FUNCTION {add.semicolon} +{ "; " * } + + +FUNCTION {add.comma.or.semicolon} +{ #1 separate.by.semicolon = + 'add.semicolon + 'add.comma + if$ +} + +FUNCTION {add.colon} +{ ": " * } + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { add.comma write$ } + { output.state after.block = + { add.semicolon write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.item = + { " " * 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 {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {add.note} +{ annotate empty$ + 'skip$ + { new.block + "{\footnotesize " annotate * "}" * output } + if$ +} + +FUNCTION {fin.entry} +{ add.note + add.period$ + write$ + newline$ +} +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {boldface} +{ duplicate$ empty$ + { pop$ "" } + { "\textbf{" swap$ * "}" * } + if$ +} + +FUNCTION {paren} +{ duplicate$ empty$ + { pop$ "" } + { "(" swap$ * ")" * } + if$ +} + +FUNCTION {bbl.and} +{ "and" } + +FUNCTION {bbl.chapter} +{ "Chapter" } + +FUNCTION {bbl.editor} +{ "Ed." } + +FUNCTION {bbl.editors} +{ "Eds." } + +FUNCTION {bbl.edition} +{ "ed." } + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.in} +{ "In" } + +FUNCTION {bbl.inpress} +{ "in press" } + +FUNCTION {bbl.msc} +{ "M.Sc.\ thesis" } + +FUNCTION {bbl.page} +{ "p" } + +FUNCTION {bbl.pages} +{ "pp" } + +FUNCTION {bbl.phd} +{ "Ph.D.\ thesis" } + +FUNCTION {bbl.submitted} +{ "submitted for publication" } + +FUNCTION {bbl.techreport} +{ "Technical Report" } + +FUNCTION {bbl.version} +{ "version" } + +FUNCTION {bbl.volume} +{ "Vol." } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION{is.a.digit} +{ duplicate$ "" = + {pop$ #0} + {chr.to.int$ #48 - duplicate$ + #0 < swap$ #9 > or not} + if$ +} + +FUNCTION{is.a.number} +{ + { duplicate$ #1 #1 substring$ is.a.digit } + {#2 global.max$ substring$} + while$ + "" = +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.a.number + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} + +FUNCTION {convert.edition} +{ extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.a.number + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {space.connect} +{ " " swap$ * * } + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + numnames #15 > + { s #1 "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := + t bbl.etal space.connect + } + { + { namesleft #0 > } + { s nameptr "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { add.comma.or.semicolon t * } + { numnames #2 > + { "" * } + 'skip$ + if$ + t "others," = + { bbl.etal space.connect } + { add.comma.or.semicolon t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { #1 'author.or.editor := + #1 'separate.by.semicolon := + author format.names + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { #2 'author.or.editor := + #0 'separate.by.semicolon := + editor format.names + add.comma + editor num.names$ #1 > + { bbl.editors } + { bbl.editor } + if$ + * + } + if$ +} + +FUNCTION {n.separate.multi} +{ 't := + "" + #0 'numnames := + t text.length$ #4 > t is.a.number and + { + { t empty$ not } + { t #-1 #1 substring$ is.a.number + { numnames #1 + 'numnames := } + { #0 'numnames := } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames #4 = + { duplicate$ #1 #1 substring$ swap$ + #2 global.max$ substring$ + "," swap$ * * + #1 'numnames := + } + 'skip$ + if$ + } + while$ + } + { t swap$ * } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.connect } + if$ +} + +FUNCTION {format.title.noemph} +{ 't := + t empty$ + { "" } + { t } + if$ +} + +FUNCTION {format.title} +{ 't := + t empty$ + { "" } + { t emphasize } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { "There is a number but no series in " cite$ * warning$ } + { series number space.connect } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { bbl.etal * } + { bbl.and space.connect t space.connect } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "proceedings" = + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} { newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +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$ + { "" } + { year boldface } + if$ +} + +FUNCTION {format.bdate} +{ year empty$ + { "There's no year in " cite$ * warning$ } + 'year + if$ +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "Can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ + 'skip$ + { convert.edition + bbl.edition bibinfo.check + " " * bbl.edition * + } + 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 + { bbl.pages pages n.dashify tie.or.space.connect } + { bbl.page pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.pages.required} +{ pages empty$ + { "" + "There are no page numbers for " cite$ * warning$ + output + } + { pages multi.page.check + { bbl.pages pages n.dashify tie.or.space.connect } + { bbl.page pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.pages.nopp} +{ pages empty$ + { "" + "There are no page numbers for " cite$ * warning$ + output + } + { pages multi.page.check + { pages n.dashify space.connect } + { pages space.connect } + if$ + } + if$ +} + +FUNCTION {format.pages.patent} +{ pages empty$ + { "There is no patent number for " cite$ * warning$ } + { pages multi.page.check + { pages n.dashify } + { pages n.separate.multi } + if$ + } + if$ +} + +FUNCTION {format.vol.pages} +{ volume emphasize field.or.null + duplicate$ empty$ + { pop$ format.pages.required } + { add.comma pages n.dashify * } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { bbl.chapter } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { add.comma format.pages * } + if$ + } + if$ +} + +FUNCTION {format.title.in} +{ 's := + s empty$ + { "" } + { editor empty$ + { bbl.in s format.title space.connect } + { bbl.in s format.title space.connect + add.semicolon format.editors * + } + if$ + } + if$ +} + +FUNCTION {format.pub.address} +{ publisher empty$ + { "" } + { address empty$ + { publisher } + { publisher add.colon address *} + if$ + } + if$ +} + +FUNCTION {format.school.address} +{ school empty$ + { "" } + { address empty$ + { school } + { school add.colon address *} + if$ + } + if$ +} + +FUNCTION {format.organization.address} +{ organization empty$ + { "" } + { address empty$ + { organization } + { organization add.colon address *} + if$ + } + if$ +} + +FUNCTION {format.version} +{ edition empty$ + { "" } + { bbl.version edition tie.or.space.connect } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + year empty$ note empty$ + and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {empty.doi.note} +{ doi empty$ note empty$ and + { "Need either a note or DOI for " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type emphasize + } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + journal emphasize "journal" output.check + after.item 'output.state := + format.date "year" output.check + volume empty$ + { "" + format.pages.nopp output + } + { format.vol.pages output } + if$ + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { booktitle empty$ + { title format.title "title" output.check } + { booktitle format.title "booktitle" output.check } + if$ + format.edition output + new.block + editor empty$ + { "Need either an author or editor for " cite$ * warning$ } + { "" format.editors * "editor" output.check } + if$ + } + { format.authors output + after.item 'output.state := + "author and editor" editor either.or.check + booktitle empty$ + { title format.title "title" output.check } + { booktitle format.title "booktitle" output.check } + if$ + format.edition output + } + if$ + new.block + format.number.series output + new.block + format.pub.address "publisher" output.check + format.bdate "year" output.check + new.block + format.bvolume output + pages empty$ + 'skip$ + { format.pages output } + if$ + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + after.item 'output.state := + title format.title "title" output.check + howpublished output + address output + format.date output + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { title format.title "title" output.check + format.edition output + new.block + editor empty$ + { "Need at least an author or an editor for " cite$ * warning$ } + { "" format.editors * "editor" output.check } + if$ + } + { format.authors output + after.item 'output.state := + title format.title.in "title" output.check + format.edition output + } + if$ + new.block + format.number.series output + new.block + format.pub.address "publisher" output.check + format.bdate "year" output.check + new.block + format.bvolume output + format.chapter.pages "chapter and pages" output.check + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + author empty$ + { booktitle format.title "booktitle" output.check + format.edition output + new.block + editor empty$ + { "Need at least an author or an editor for " cite$ * warning$ } + { "" format.editors * "editor" output.check } + if$ + } + { format.authors output + after.item 'output.state := + title empty$ + 'skip$ + { title format.title.noemph output } + if$ + after.sentence 'output.state := + booktitle format.title.in "booktitle" output.check + format.edition output + } + if$ + new.block + format.number.series output + new.block + format.pub.address "publisher" output.check + format.bdate "year" output.check + new.block + format.bvolume output + format.chapter.pages "chapter and pages" output.check + note output + fin.entry +} + +FUNCTION {inpress} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + journal emphasize "journal" output.check + doi empty$ + { bbl.inpress output } + { after.item 'output.state := + format.date output + "DOI:" doi tie.or.space.connect output + } + if$ + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + title empty$ + 'skip$ + { title format.title.noemph output + after.sentence 'output.state := + } + if$ + booktitle format.title output + address output + format.bdate "year" output.check + pages empty$ + 'skip$ + { new.block + format.pages output } + if$ + note output + fin.entry +} + +FUNCTION {manual} +{ output.bibitem + format.authors output + after.item 'output.state := + title format.title "title" output.check + format.version output + new.block + format.organization.address output + format.bdate output + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + bbl.msc format.thesis.type output + format.school.address "school" output.check + format.bdate "year" output.check + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + after.item 'output.state := + title empty$ + 'skip$ + { title format.title output } + if$ + howpublished output + year output + note output + fin.entry + empty.misc.check +} + +FUNCTION {patent} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + journal "journal" output.check + after.item 'output.state := + format.pages.patent "pages" output.check + format.bdate "year" output.check + note output + fin.entry +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + bbl.phd format.thesis.type output + format.school.address "school" output.check + format.bdate "year" output.check + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + title format.title.noemph "title" output.check + address output + format.bdate "year" output.check + pages empty$ + 'skip$ + { new.block + format.pages output } + if$ + note output + fin.entry +} + +FUNCTION {remark} +{ output.bibitem + note "note" output.check + fin.entry +} + +FUNCTION {submitted} +{ output.bibitem + format.authors "author" output.check + bbl.submitted output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + title format.title "title" output.check + new.block + type empty$ + 'bbl.techreport + 'type + if$ + number empty$ + 'skip$ + { number tie.or.space.connect } + if$ + output + format.pub.address output + format.bdate "year" output.check + pages empty$ + 'skip$ + { new.block + format.pages output } + if$ + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + journal empty$ + 'skip$ + { journal emphasize "journal" output.check } + if$ + doi empty$ + { note output } + { after.item 'output.state := + format.date output + "DOI:" doi tie.or.space.connect output + } + if$ + fin.entry + empty.doi.note +} + +FUNCTION {conference} {inproceedings} + +FUNCTION {other} {patent} + +FUNCTION {default.type} {misc} + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"June"} +MACRO {jul} {"July"} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sept."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + +MACRO {acchemr} {"Acc.\ Chem.\ Res."} +MACRO {aacsa} {"Adv.\ {ACS} Abstr."} +MACRO {anchem} {"Anal.\ Chem."} +MACRO {bioch} {"Biochemistry"} +MACRO {bicoc} {"Bioconj.\ Chem."} % *** +MACRO {bitech} {"Biotechnol.\ Progr."} % *** +MACRO {chemeng} {"Chem.\ Eng.\ News"} +MACRO {chs} {"Chem.\ Health Safety"} % *** +MACRO {crt} {"Chem.\ Res.\ Toxicol."} % *** +MACRO {chemrev} {"Chem.\ Rev."} % *** +MACRO {cmat} {"Chem.\ Mater."} % *** +MACRO {chemtech} {"{CHEMTECH}"} % *** +MACRO {enfu} {"Energy Fuels"} % *** +MACRO {envst} {"Environ.\ Sci.\ Technol."} +MACRO {iecf} {"Ind.\ Eng.\ Chem.\ Fundam."} +MACRO {iecpdd} {"Ind.\ Eng.\ Chem.\ Proc.\ Des.\ Dev."} +MACRO {iecprd} {"Ind.\ Eng.\ Chem.\ Prod.\ Res.\ Dev."} +MACRO {iecr} {"Ind.\ Eng.\ Chem.\ Res."} % *** +MACRO {inor} {"Inorg.\ Chem."} +MACRO {jafc} {"J.~Agric.\ Food Chem."} +MACRO {jacs} {"J.~Am.\ Chem.\ Soc."} +MACRO {jced} {"J.~Chem.\ Eng.\ Data"} +MACRO {jcics} {"J.~Chem.\ Inf.\ Comput.\ Sci."} +MACRO {jmc} {"J.~Med.\ Chem."} +MACRO {joc} {"J.~Org.\ Chem."} +MACRO {jps} {"J.~Pharm.\ Sci."} +MACRO {jpcrd} {"J.~Phys.\ Chem.\ Ref.\ Data"} % *** +MACRO {jpc} {"J.~Phys.\ Chem."} +MACRO {jpca} {"J.~Phys.\ Chem.~A"} +MACRO {jpcb} {"J.~Phys.\ Chem.~B"} +MACRO {lang} {"Langmuir"} +MACRO {macro} {"Macromolecules"} +MACRO {orgmet} {"Organometallics"} +MACRO {orglett} {"Org.\ Lett."} + +MACRO {jft} {"J.~Chem.\ Soc., Faraday Trans."} +MACRO {jft1} {"J.~Chem.\ Soc., Faraday Trans.\ 1"} +MACRO {jft2} {"J.~Chem.\ Soc., Faraday Trans.\ 2"} +MACRO {tfs} {"Trans.\ Faraday Soc."} +MACRO {jcis} {"J.~Colloid Interface Sci."} +MACRO {acis} {"Adv.~Colloid Interface Sci."} +MACRO {cs} {"Colloids Surf."} +MACRO {csa} {"Colloids Surf.\ A"} +MACRO {csb} {"Colloids Surf.\ B"} +MACRO {pcps} {"Progr.\ Colloid Polym.\ Sci."} +MACRO {jmr} {"J.~Magn.\ Reson."} +MACRO {jmra} {"J.~Magn.\ Reson.\ A"} +MACRO {jmrb} {"J.~Magn.\ Reson.\ B"} +MACRO {sci} {"Science"} +MACRO {nat} {"Nature"} +MACRO {jcch} {"J.~Comput.\ Chem."} +MACRO {cca} {"Croat.\ Chem.\ Acta"} +MACRO {angew} {"Angew.\ Chem., Int.\ Ed."} +MACRO {chemeurj} {"Chem.---Eur.\ J."} + +MACRO {poly} {"Polymer"} +MACRO {ajp} {"Am.\ J.\ Phys."} +MACRO {rsi} {"Rev.\ Sci.\ Instrum."} +MACRO {jcp} {"J.~Chem.\ Phys."} +MACRO {cpl} {"Chem.\ Phys.\ Lett."} +MACRO {molph} {"Mol.\ Phys."} +MACRO {pac} {"Pure Appl.\ Chem."} +MACRO {jbc} {"J.~Biol.\ Chem."} +MACRO {tl} {"Tetrahedron Lett."} +MACRO {psisoe} {"Proc.\ SPIE-Int.\ Soc.\ Opt.\ Eng."} +MACRO {prb} {"Phys.\ Rev.\ B:\ Condens.\ Matter Mater. Phys."} +MACRO {jap} {"J.~Appl.\ Phys."} +MACRO {pnac} {"Proc.\ Natl.\ Acad.\ Sci.\ U.S.A."} +MACRO {bba} {"Biochim.\ Biophys.\ Acta"} +MACRO {nar} {"Nucleic.\ Acid Res."} + +READ + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ bbl.etal space.connect } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { bbl.etal space.connect } + { bbl.and space.connect s #2 "{vv~}{ll}" format.name$ space.connect } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + 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 + 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 + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ 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$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'label := +} + +ITERATE {calc.label} + +STRINGS { longest.label last.label next.extra } + +INTEGERS { longest.label.width last.extra.num number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +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$ + number.label #1 + 'number.label := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\providecommand{\refin}[1]{\\ \textbf{Referenced in:} #1}" + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + +%% +%% +%% End of file `achemlnt.bst'. diff --git a/Master/texmf-dist/bibtex/bst/achemso/achemnat.bst b/Master/texmf-dist/bibtex/bst/achemso/achemnat.bst new file mode 100644 index 00000000000..fb0ca064003 --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/achemso/achemnat.bst @@ -0,0 +1,1385 @@ +%% +%% This is file `achemnat.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% achemso.dtx (with options: `bib,nat') +%% ---------------------------------------------------------------- +%% The achemso package - A BibTeX style for American Chemical +%% Society publications +%% Maintained by Joseph Wright +%% E-mail: joseph.wright@morningstar2.co.uk +%% Originally developed by Mats Dahlgren +%% (c) 1996-98 by Mats Dahlgren +%% (c) 2007 Joseph Wright +%% Released under the LaTeX Project Public license v1.3 or later +%% ---------------------------------------------------------------- +ENTRY + { address + author + booktitle + chapter + doi + edition + editor + howpublished + institution + journal + key + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { + label + extra.label + short.list + } + +INTEGERS { output.state before.all mid.sentence after.sentence } +INTEGERS { after.block after.item author.or.editor } +INTEGERS { separate.by.semicolon } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.item := +} + +FUNCTION {add.comma} +{ ", " * } + +FUNCTION {add.semicolon} +{ "; " * } + + +FUNCTION {add.comma.or.semicolon} +{ #1 separate.by.semicolon = + 'add.semicolon + 'add.comma + if$ +} + +FUNCTION {add.colon} +{ ": " * } + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { add.comma write$ } + { output.state after.block = + { add.semicolon write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.item = + { " " * 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 {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {boldface} +{ duplicate$ empty$ + { pop$ "" } + { "\textbf{" swap$ * "}" * } + if$ +} + +FUNCTION {paren} +{ duplicate$ empty$ + { pop$ "" } + { "(" swap$ * ")" * } + if$ +} + +FUNCTION {bbl.and} +{ "and" } + +FUNCTION {bbl.chapter} +{ "Chapter" } + +FUNCTION {bbl.editor} +{ "Ed." } + +FUNCTION {bbl.editors} +{ "Eds." } + +FUNCTION {bbl.edition} +{ "ed." } + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.in} +{ "In" } + +FUNCTION {bbl.inpress} +{ "in press" } + +FUNCTION {bbl.msc} +{ "M.Sc.\ thesis" } + +FUNCTION {bbl.page} +{ "p" } + +FUNCTION {bbl.pages} +{ "pp" } + +FUNCTION {bbl.phd} +{ "Ph.D.\ thesis" } + +FUNCTION {bbl.submitted} +{ "submitted for publication" } + +FUNCTION {bbl.techreport} +{ "Technical Report" } + +FUNCTION {bbl.version} +{ "version" } + +FUNCTION {bbl.volume} +{ "Vol." } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION{is.a.digit} +{ duplicate$ "" = + {pop$ #0} + {chr.to.int$ #48 - duplicate$ + #0 < swap$ #9 > or not} + if$ +} + +FUNCTION{is.a.number} +{ + { duplicate$ #1 #1 substring$ is.a.digit } + {#2 global.max$ substring$} + while$ + "" = +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.a.number + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} + +FUNCTION {convert.edition} +{ extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.a.number + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {space.connect} +{ " " swap$ * * } + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + numnames #15 > + { s #1 "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := + t bbl.etal space.connect + } + { + { namesleft #0 > } + { s nameptr "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { add.comma.or.semicolon t * } + { numnames #2 > + { "" * } + 'skip$ + if$ + t "others," = + { bbl.etal space.connect } + { add.comma.or.semicolon t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { #1 'author.or.editor := + #1 'separate.by.semicolon := + author format.names + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { #2 'author.or.editor := + #0 'separate.by.semicolon := + editor format.names + add.comma + editor num.names$ #1 > + { bbl.editors } + { bbl.editor } + if$ + * + } + if$ +} + +FUNCTION {n.separate.multi} +{ 't := + "" + #0 'numnames := + t text.length$ #4 > t is.a.number and + { + { t empty$ not } + { t #-1 #1 substring$ is.a.number + { numnames #1 + 'numnames := } + { #0 'numnames := } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames #4 = + { duplicate$ #1 #1 substring$ swap$ + #2 global.max$ substring$ + "," swap$ * * + #1 'numnames := + } + 'skip$ + if$ + } + while$ + } + { t swap$ * } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.connect } + if$ +} + +FUNCTION {format.title.noemph} +{ 't := + t empty$ + { "" } + { t } + if$ +} + +FUNCTION {format.title} +{ 't := + t empty$ + { "" } + { t emphasize } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { "There is a number but no series in " cite$ * warning$ } + { series number space.connect } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { bbl.etal * } + { bbl.and space.connect t space.connect } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "proceedings" = + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} { newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +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$ + { "" } + { year boldface } + if$ +} + +FUNCTION {format.bdate} +{ year empty$ + { "There's no year in " cite$ * warning$ } + 'year + if$ +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "Can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ + 'skip$ + { convert.edition + bbl.edition bibinfo.check + " " * bbl.edition * + } + 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 + { bbl.pages pages n.dashify tie.or.space.connect } + { bbl.page pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.pages.required} +{ pages empty$ + { "" + "There are no page numbers for " cite$ * warning$ + output + } + { pages multi.page.check + { bbl.pages pages n.dashify tie.or.space.connect } + { bbl.page pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.pages.nopp} +{ pages empty$ + { "" + "There are no page numbers for " cite$ * warning$ + output + } + { pages multi.page.check + { pages n.dashify space.connect } + { pages space.connect } + if$ + } + if$ +} + +FUNCTION {format.pages.patent} +{ pages empty$ + { "There is no patent number for " cite$ * warning$ } + { pages multi.page.check + { pages n.dashify } + { pages n.separate.multi } + if$ + } + if$ +} + +FUNCTION {format.vol.pages} +{ volume emphasize field.or.null + duplicate$ empty$ + { pop$ format.pages.required } + { add.comma pages n.dashify * } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { bbl.chapter } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { add.comma format.pages * } + if$ + } + if$ +} + +FUNCTION {format.title.in} +{ 's := + s empty$ + { "" } + { editor empty$ + { bbl.in s format.title space.connect } + { bbl.in s format.title space.connect + add.semicolon format.editors * + } + if$ + } + if$ +} + +FUNCTION {format.pub.address} +{ publisher empty$ + { "" } + { address empty$ + { publisher } + { publisher add.colon address *} + if$ + } + if$ +} + +FUNCTION {format.school.address} +{ school empty$ + { "" } + { address empty$ + { school } + { school add.colon address *} + if$ + } + if$ +} + +FUNCTION {format.organization.address} +{ organization empty$ + { "" } + { address empty$ + { organization } + { organization add.colon address *} + if$ + } + if$ +} + +FUNCTION {format.version} +{ edition empty$ + { "" } + { bbl.version edition tie.or.space.connect } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + year empty$ note empty$ + and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {empty.doi.note} +{ doi empty$ note empty$ and + { "Need either a note or DOI for " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type emphasize + } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + journal emphasize "journal" output.check + after.item 'output.state := + format.date "year" output.check + volume empty$ + { "" + format.pages.nopp output + } + { format.vol.pages output } + if$ + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { booktitle empty$ + { title format.title "title" output.check } + { booktitle format.title "booktitle" output.check } + if$ + format.edition output + new.block + editor empty$ + { "Need either an author or editor for " cite$ * warning$ } + { "" format.editors * "editor" output.check } + if$ + } + { format.authors output + after.item 'output.state := + "author and editor" editor either.or.check + booktitle empty$ + { title format.title "title" output.check } + { booktitle format.title "booktitle" output.check } + if$ + format.edition output + } + if$ + new.block + format.number.series output + new.block + format.pub.address "publisher" output.check + format.bdate "year" output.check + new.block + format.bvolume output + pages empty$ + 'skip$ + { format.pages output } + if$ + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + after.item 'output.state := + title format.title "title" output.check + howpublished output + address output + format.date output + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { title format.title "title" output.check + format.edition output + new.block + editor empty$ + { "Need at least an author or an editor for " cite$ * warning$ } + { "" format.editors * "editor" output.check } + if$ + } + { format.authors output + after.item 'output.state := + title format.title.in "title" output.check + format.edition output + } + if$ + new.block + format.number.series output + new.block + format.pub.address "publisher" output.check + format.bdate "year" output.check + new.block + format.bvolume output + format.chapter.pages "chapter and pages" output.check + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + author empty$ + { booktitle format.title "booktitle" output.check + format.edition output + new.block + editor empty$ + { "Need at least an author or an editor for " cite$ * warning$ } + { "" format.editors * "editor" output.check } + if$ + } + { format.authors output + after.item 'output.state := + title empty$ + 'skip$ + { title format.title.noemph output } + if$ + after.sentence 'output.state := + booktitle format.title.in "booktitle" output.check + format.edition output + } + if$ + new.block + format.number.series output + new.block + format.pub.address "publisher" output.check + format.bdate "year" output.check + new.block + format.bvolume output + format.chapter.pages "chapter and pages" output.check + note output + fin.entry +} + +FUNCTION {inpress} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + journal emphasize "journal" output.check + doi empty$ + { bbl.inpress output } + { after.item 'output.state := + format.date output + "DOI:" doi tie.or.space.connect output + } + if$ + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + title empty$ + 'skip$ + { title format.title.noemph output + after.sentence 'output.state := + } + if$ + booktitle format.title output + address output + format.bdate "year" output.check + pages empty$ + 'skip$ + { new.block + format.pages output } + if$ + note output + fin.entry +} + +FUNCTION {manual} +{ output.bibitem + format.authors output + after.item 'output.state := + title format.title "title" output.check + format.version output + new.block + format.organization.address output + format.bdate output + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + bbl.msc format.thesis.type output + format.school.address "school" output.check + format.bdate "year" output.check + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + after.item 'output.state := + title empty$ + 'skip$ + { title format.title output } + if$ + howpublished output + year output + note output + fin.entry + empty.misc.check +} + +FUNCTION {patent} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + journal "journal" output.check + after.item 'output.state := + format.pages.patent "pages" output.check + format.bdate "year" output.check + note output + fin.entry +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + bbl.phd format.thesis.type output + format.school.address "school" output.check + format.bdate "year" output.check + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + title format.title.noemph "title" output.check + address output + format.bdate "year" output.check + pages empty$ + 'skip$ + { new.block + format.pages output } + if$ + note output + fin.entry +} + +FUNCTION {remark} +{ output.bibitem + note "note" output.check + fin.entry +} + +FUNCTION {submitted} +{ output.bibitem + format.authors "author" output.check + bbl.submitted output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + title format.title "title" output.check + new.block + type empty$ + 'bbl.techreport + 'type + if$ + number empty$ + 'skip$ + { number tie.or.space.connect } + if$ + output + format.pub.address output + format.bdate "year" output.check + pages empty$ + 'skip$ + { new.block + format.pages output } + if$ + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + after.item 'output.state := + journal empty$ + 'skip$ + { journal emphasize "journal" output.check } + if$ + doi empty$ + { note output } + { after.item 'output.state := + format.date output + "DOI:" doi tie.or.space.connect output + } + if$ + fin.entry + empty.doi.note +} + +FUNCTION {conference} {inproceedings} + +FUNCTION {other} {patent} + +FUNCTION {default.type} {misc} + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"June"} +MACRO {jul} {"July"} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sept."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + +MACRO {acchemr} {"Acc.\ Chem.\ Res."} +MACRO {aacsa} {"Adv.\ {ACS} Abstr."} +MACRO {anchem} {"Anal.\ Chem."} +MACRO {bioch} {"Biochemistry"} +MACRO {bicoc} {"Bioconj.\ Chem."} % *** +MACRO {bitech} {"Biotechnol.\ Progr."} % *** +MACRO {chemeng} {"Chem.\ Eng.\ News"} +MACRO {chs} {"Chem.\ Health Safety"} % *** +MACRO {crt} {"Chem.\ Res.\ Toxicol."} % *** +MACRO {chemrev} {"Chem.\ Rev."} % *** +MACRO {cmat} {"Chem.\ Mater."} % *** +MACRO {chemtech} {"{CHEMTECH}"} % *** +MACRO {enfu} {"Energy Fuels"} % *** +MACRO {envst} {"Environ.\ Sci.\ Technol."} +MACRO {iecf} {"Ind.\ Eng.\ Chem.\ Fundam."} +MACRO {iecpdd} {"Ind.\ Eng.\ Chem.\ Proc.\ Des.\ Dev."} +MACRO {iecprd} {"Ind.\ Eng.\ Chem.\ Prod.\ Res.\ Dev."} +MACRO {iecr} {"Ind.\ Eng.\ Chem.\ Res."} % *** +MACRO {inor} {"Inorg.\ Chem."} +MACRO {jafc} {"J.~Agric.\ Food Chem."} +MACRO {jacs} {"J.~Am.\ Chem.\ Soc."} +MACRO {jced} {"J.~Chem.\ Eng.\ Data"} +MACRO {jcics} {"J.~Chem.\ Inf.\ Comput.\ Sci."} +MACRO {jmc} {"J.~Med.\ Chem."} +MACRO {joc} {"J.~Org.\ Chem."} +MACRO {jps} {"J.~Pharm.\ Sci."} +MACRO {jpcrd} {"J.~Phys.\ Chem.\ Ref.\ Data"} % *** +MACRO {jpc} {"J.~Phys.\ Chem."} +MACRO {jpca} {"J.~Phys.\ Chem.~A"} +MACRO {jpcb} {"J.~Phys.\ Chem.~B"} +MACRO {lang} {"Langmuir"} +MACRO {macro} {"Macromolecules"} +MACRO {orgmet} {"Organometallics"} +MACRO {orglett} {"Org.\ Lett."} + +MACRO {jft} {"J.~Chem.\ Soc., Faraday Trans."} +MACRO {jft1} {"J.~Chem.\ Soc., Faraday Trans.\ 1"} +MACRO {jft2} {"J.~Chem.\ Soc., Faraday Trans.\ 2"} +MACRO {tfs} {"Trans.\ Faraday Soc."} +MACRO {jcis} {"J.~Colloid Interface Sci."} +MACRO {acis} {"Adv.~Colloid Interface Sci."} +MACRO {cs} {"Colloids Surf."} +MACRO {csa} {"Colloids Surf.\ A"} +MACRO {csb} {"Colloids Surf.\ B"} +MACRO {pcps} {"Progr.\ Colloid Polym.\ Sci."} +MACRO {jmr} {"J.~Magn.\ Reson."} +MACRO {jmra} {"J.~Magn.\ Reson.\ A"} +MACRO {jmrb} {"J.~Magn.\ Reson.\ B"} +MACRO {sci} {"Science"} +MACRO {nat} {"Nature"} +MACRO {jcch} {"J.~Comput.\ Chem."} +MACRO {cca} {"Croat.\ Chem.\ Acta"} +MACRO {angew} {"Angew.\ Chem., Int.\ Ed."} +MACRO {chemeurj} {"Chem.---Eur.\ J."} + +MACRO {poly} {"Polymer"} +MACRO {ajp} {"Am.\ J.\ Phys."} +MACRO {rsi} {"Rev.\ Sci.\ Instrum."} +MACRO {jcp} {"J.~Chem.\ Phys."} +MACRO {cpl} {"Chem.\ Phys.\ Lett."} +MACRO {molph} {"Mol.\ Phys."} +MACRO {pac} {"Pure Appl.\ Chem."} +MACRO {jbc} {"J.~Biol.\ Chem."} +MACRO {tl} {"Tetrahedron Lett."} +MACRO {psisoe} {"Proc.\ SPIE-Int.\ Soc.\ Opt.\ Eng."} +MACRO {prb} {"Phys.\ Rev.\ B:\ Condens.\ Matter Mater. Phys."} +MACRO {jap} {"J.~Appl.\ Phys."} +MACRO {pnac} {"Proc.\ Natl.\ Acad.\ Sci.\ U.S.A."} +MACRO {bba} {"Biochim.\ Biophys.\ Acta"} +MACRO {nar} {"Nucleic.\ Acid Res."} + +READ + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ bbl.etal space.connect } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { bbl.etal space.connect } + { bbl.and space.connect s #2 "{vv~}{ll}" format.name$ space.connect } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + 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 + 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 + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ 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$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'label := +} + +ITERATE {calc.label} + +STRINGS { longest.label last.label next.extra } + +INTEGERS { longest.label.width last.extra.num number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +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$ + number.label #1 + 'number.label := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\providecommand{\refin}[1]{\\ \textbf{Referenced in:} #1}" + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + +%% +%% +%% End of file `achemnat.bst'. diff --git a/Master/texmf-dist/bibtex/bst/achemso/achemso.bst b/Master/texmf-dist/bibtex/bst/achemso/achemso.bst index bf2dd563a22..f924271cb24 100644 --- a/Master/texmf-dist/bibtex/bst/achemso/achemso.bst +++ b/Master/texmf-dist/bibtex/bst/achemso/achemso.bst @@ -8,7 +8,7 @@ %% ---------------------------------------------------------------- %% The achemso package - A BibTeX style for American Chemical %% Society publications -%% Maintained by Joseph A. Wright +%% Maintained by Joseph Wright %% E-mail: joseph.wright@morningstar2.co.uk %% Originally developed by Mats Dahlgren %% (c) 1996-98 by Mats Dahlgren @@ -39,10 +39,13 @@ ENTRY year } {} - { label } + { + label + } INTEGERS { output.state before.all mid.sentence after.sentence } INTEGERS { after.block after.item author.or.editor } +INTEGERS { separate.by.semicolon } FUNCTION {init.state.consts} { #0 'before.all := @@ -58,6 +61,14 @@ FUNCTION {add.comma} FUNCTION {add.semicolon} { "; " * } + +FUNCTION {add.comma.or.semicolon} +{ #1 separate.by.semicolon = + 'add.semicolon + 'add.comma + if$ +} + FUNCTION {add.colon} { ": " * } @@ -367,22 +378,22 @@ FUNCTION {format.names} s num.names$ 'numnames := numnames 'namesleft := numnames #15 > - { s #1 "{vv~}{ll,}{~jj,}{~f.}" format.name$ 't := + { s #1 "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := t bbl.etal space.connect } { { namesleft #0 > } - { s nameptr "{vv~}{ll,}{~jj,}{~f.}" format.name$ 't := + { s nameptr "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := nameptr #1 > { namesleft #1 > - { add.semicolon t * } + { add.comma.or.semicolon t * } { numnames #2 > { "" * } 'skip$ if$ t "others," = { bbl.etal space.connect } - { add.semicolon t * } + { add.comma.or.semicolon t * } if$ } if$ @@ -401,7 +412,9 @@ FUNCTION {format.authors} { author empty$ { "" } { #1 'author.or.editor := - author format.names } + #1 'separate.by.semicolon := + author format.names + } if$ } @@ -409,6 +422,7 @@ FUNCTION {format.editors} { editor empty$ { "" } { #2 'author.or.editor := + #0 'separate.by.semicolon := editor format.names add.comma editor num.names$ #1 > @@ -486,7 +500,8 @@ FUNCTION {format.number.series} if$ } -FUNCTION {n.dashify} { 't := +FUNCTION {n.dashify} +{ 't := "" { t empty$ not } { t #1 #1 substring$ "-" = @@ -826,6 +841,11 @@ FUNCTION {incollection} } { format.authors output after.item 'output.state := + title empty$ + 'skip$ + { title format.title.noemph output } + if$ + after.sentence 'output.state := booktitle format.title.in "booktitle" output.check format.edition output } @@ -835,6 +855,7 @@ FUNCTION {incollection} new.block format.pub.address "publisher" output.check format.bdate "year" output.check + new.block format.bvolume output format.chapter.pages "chapter and pages" output.check note output @@ -1130,6 +1151,7 @@ EXECUTE {initialize.longest.label} ITERATE {longest.label.pass} + FUNCTION {begin.bib} { preamble$ empty$ 'skip$ @@ -1137,7 +1159,8 @@ FUNCTION {begin.bib} if$ "\providecommand{\refin}[1]{\\ \textbf{Referenced in:} #1}" write$ newline$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ } EXECUTE {begin.bib} diff --git a/Master/texmf-dist/bibtex/bst/achemso/achemsol.bst b/Master/texmf-dist/bibtex/bst/achemso/achemsol.bst index 52735a8cf83..341fda365a1 100644 --- a/Master/texmf-dist/bibtex/bst/achemso/achemsol.bst +++ b/Master/texmf-dist/bibtex/bst/achemso/achemsol.bst @@ -8,7 +8,7 @@ %% ---------------------------------------------------------------- %% The achemso package - A BibTeX style for American Chemical %% Society publications -%% Maintained by Joseph A. Wright +%% Maintained by Joseph Wright %% E-mail: joseph.wright@morningstar2.co.uk %% Originally developed by Mats Dahlgren %% (c) 1996-98 by Mats Dahlgren @@ -40,10 +40,13 @@ ENTRY year } {} - { label } + { + label + } INTEGERS { output.state before.all mid.sentence after.sentence } INTEGERS { after.block after.item author.or.editor } +INTEGERS { separate.by.semicolon } FUNCTION {init.state.consts} { #0 'before.all := @@ -59,6 +62,14 @@ FUNCTION {add.comma} FUNCTION {add.semicolon} { "; " * } + +FUNCTION {add.comma.or.semicolon} +{ #1 separate.by.semicolon = + 'add.semicolon + 'add.comma + if$ +} + FUNCTION {add.colon} { ": " * } @@ -377,22 +388,22 @@ FUNCTION {format.names} s num.names$ 'numnames := numnames 'namesleft := numnames #15 > - { s #1 "{vv~}{ll,}{~jj,}{~f.}" format.name$ 't := + { s #1 "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := t bbl.etal space.connect } { { namesleft #0 > } - { s nameptr "{vv~}{ll,}{~jj,}{~f.}" format.name$ 't := + { s nameptr "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := nameptr #1 > { namesleft #1 > - { add.semicolon t * } + { add.comma.or.semicolon t * } { numnames #2 > { "" * } 'skip$ if$ t "others," = { bbl.etal space.connect } - { add.semicolon t * } + { add.comma.or.semicolon t * } if$ } if$ @@ -411,7 +422,9 @@ FUNCTION {format.authors} { author empty$ { "" } { #1 'author.or.editor := - author format.names } + #1 'separate.by.semicolon := + author format.names + } if$ } @@ -419,6 +432,7 @@ FUNCTION {format.editors} { editor empty$ { "" } { #2 'author.or.editor := + #0 'separate.by.semicolon := editor format.names add.comma editor num.names$ #1 > @@ -496,7 +510,8 @@ FUNCTION {format.number.series} if$ } -FUNCTION {n.dashify} { 't := +FUNCTION {n.dashify} +{ 't := "" { t empty$ not } { t #1 #1 substring$ "-" = @@ -836,6 +851,11 @@ FUNCTION {incollection} } { format.authors output after.item 'output.state := + title empty$ + 'skip$ + { title format.title.noemph output } + if$ + after.sentence 'output.state := booktitle format.title.in "booktitle" output.check format.edition output } @@ -845,6 +865,7 @@ FUNCTION {incollection} new.block format.pub.address "publisher" output.check format.bdate "year" output.check + new.block format.bvolume output format.chapter.pages "chapter and pages" output.check note output @@ -1140,6 +1161,7 @@ EXECUTE {initialize.longest.label} ITERATE {longest.label.pass} + FUNCTION {begin.bib} { preamble$ empty$ 'skip$ @@ -1147,7 +1169,8 @@ FUNCTION {begin.bib} if$ "\providecommand{\refin}[1]{\\ \textbf{Referenced in:} #1}" write$ newline$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ } EXECUTE {begin.bib} diff --git a/Master/texmf-dist/doc/latex/achemso/README b/Master/texmf-dist/doc/latex/achemso/README index 44cce6c820d..3d48d39c88c 100644 --- a/Master/texmf-dist/doc/latex/achemso/README +++ b/Master/texmf-dist/doc/latex/achemso/README @@ -1,16 +1,16 @@ -The achemso package - A BibTeX style for American Chemical -Society publications - ----------------------------------------------------------------- -Maintained by Joseph A. Wright -E-mail: joseph.wright@morningstar2.co.uk -Originally developed by Mats Dahlgren - (c) 1996-98 by Mats Dahlgren - (c) 2007 Joseph Wright -Released under the LaTeX Project Public license v1.3 or later ----------------------------------------------------------------- - -The achemso package provides a BibTeX style in accordance with -the requirements of the journals of the American Chemical Society, -along with a supporting LaTeX package file. Also provided is a -BibTeX style file to be used for bibliography database listings. +The achemso package - A BibTeX style for American Chemical +Society publications + +---------------------------------------------------------------- +Maintained by Joseph A. Wright +E-mail: joseph.wright@morningstar2.co.uk +Originally developed by Mats Dahlgren + (c) 1996-98 by Mats Dahlgren + (c) 2007 Joseph Wright +Released under the LaTeX Project Public license v1.3 or later +---------------------------------------------------------------- + +The achemso package provides a BibTeX style in accordance with +the requirements of the journals of the American Chemical Society, +along with a supporting LaTeX package file. Also provided is a +BibTeX style file to be used for bibliography database listings. diff --git a/Master/texmf-dist/doc/latex/achemso/achemso.pdf b/Master/texmf-dist/doc/latex/achemso/achemso.pdf index d641c208391..78bb92f8f77 100644 Binary files a/Master/texmf-dist/doc/latex/achemso/achemso.pdf and b/Master/texmf-dist/doc/latex/achemso/achemso.pdf differ diff --git a/Master/texmf-dist/source/latex/achemso/achemso.dtx b/Master/texmf-dist/source/latex/achemso/achemso.dtx index 24e83c19dfa..24df719bfe5 100644 --- a/Master/texmf-dist/source/latex/achemso/achemso.dtx +++ b/Master/texmf-dist/source/latex/achemso/achemso.dtx @@ -2,7 +2,7 @@ % ---------------------------------------------------------------- % The achemso package - A BibTeX style for American Chemical % Society publications -% Maintained by Joseph A. Wright +% Maintained by Joseph Wright % E-mail: joseph.wright@morningstar2.co.uk % Originally developed by Mats Dahlgren % (c) 1996-98 by Mats Dahlgren @@ -12,33 +12,53 @@ % %\NeedsTeXFormat{LaTeX2e}[2005/12/01] %\ProvidesPackage{achemso} -% [2007/02/15 v2.1 Enhancements for ACS publications] +% [2007/07/09 v2.2b Enhancements for ACS publications] % %<*driver> -\documentclass[a4paper]{ltxdoc} -\usepackage[T1]{fontenc} -\usepackage{booktabs,array} % Used to get nice-looking tables -\usepackage{url} -\usepackage{achemso} +\documentclass{ltxdoc} \EnableCrossrefs -%\DisableCrossrefs % Say \DisableCrossrefs if index is ready -\RecordChanges % Gather update information -\CodelineIndex % Index code by line number +\CodelineIndex +\RecordChanges %\OnlyDescription -\GetFileInfo{achemso.sty} -\title{The \textsf{achemso} package --- A BibTeX style for American - Chemical Society publications\thanks{This file has version - number \fileversion, last revised \filedate.}} -\author{Joseph Wright - \thanks{E-mail: - joseph.wright@morningstar2.co.uk}} -\date{\filedate} +\usepackage[T1]{fontenc} +\usepackage[english,UKenglish]{babel} +\usepackage{mathpazo,booktabs,array} +\usepackage[final]{microtype} +\usepackage[colorlinks]{hyperref} +\usepackage{\jobname} \begin{document} - \DocInput{achemso.dtx} + \DocInput{\jobname.dtx} \end{document} % % \fi -% \CheckSum{88} +% +% \CheckSum{277} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{\jobname.sty} +% +% \title{The \textsf{achemso} package --- A BibTeX style for American +% Chemical Society publications} +% \author{Joseph Wright% +% \thanks{E-mail: joseph.wright@morningstar2.co.uk}} +% \date{\filedate} +% +% \CheckSum{118} % \changes{v1.0}{1998/06/01}{Initial release of package by Mats % Dahlgren} % \changes{v2.0}{2007/01/17}{Re-write of package by Joseph Wright} @@ -49,11 +69,19 @@ % edition of ACS Style Guide} % \changes{v2.1}{2007/02/15}{BibTeX style improved to reflect 3rd % edition of ACS Style Guide} +% \changes{v2.2}{2007/06/05}{Added \texttt{natbib} support} +% \changes{v2.2a}{2007/07/08}{Fixed separation of editor names} +% \changes{v2.2a}{2007/07/08}{Bug fixes to \texttt{natbib} and list +% support} +% \changes{v2.2a}{2007/07/08}{\texttt{title} field included in output +% for \texttt{incollection} records} +% \changes{v2.2b}{2007/07/09}{Bug fix to name formatting} % % \DoNotIndex{\def,\else,\fi,\global,\texttt,\ifx,\newif,\undefined} % \DoNotIndex{\ProcessOptions,\DeclareOption,\OptionNotUsed,\@gobble} % \DoNotIndex{\RequirePackage,\PackageWarning,\renewcommand,\@eha} -% \DoNotIndex{\@ifpackageloaded,\PackageError,\relax,\emph} +% \DoNotIndex{\@ifpackageloaded,\PackageError,\relax,\emph,\textit} +% \DoNotIndex{\newcommand,\renewcommand} % % \maketitle % @@ -178,9 +206,12 @@ % The BibTeX style files implement the bibliographic style specified % by the ACS in \emph{The ACS Style Guide} \cite{Coghill2006}, % on the ACS website \cite{ACS2007}, and in current ACS publications. -% Some of this information can be contradictory; the consensus of -% current practice in \emph{Journal of the American Chemical Society} -% has been taken as the correct approach. In addition to the problem +% Some of this information can be contradictory, and \emph{The ACS +% Style Guide} sometimes gives more than one option as a model. +% In order to resolve cases where several possibilities are available +% current editions of the \emph{Journal of the American Chemical +% Society} have been consulted; the current consensus there has been +% taken as the correct approach. In addition to the problem % of picking the correct style, some of the BibTeX record types are % difficult to match to standard references in ACS journals. The % ``best guess'' has been taken with these. @@ -211,12 +242,11 @@ % The requirements for entries in the BibTeX database are slightly % different using |achemso.bst| to the standard style files. This % is mainly because some fields are not cited in -% ACS bibliographies. In particular, journal articles do not +% ACS bibliographies. In particular, journal articles do not % require a title (the |title| field is ignored). Articles -% in books only need the title of the book; the title of the -% subunit (given in |title|) is again ignored. This is the practice -% in \emph{Journal of the American Chemical Society}: some of the -% other journals may take a different approach. +% in books and ``collections'' only need the title of the book. +% If a chapter title is given for an |incollection| record, it will +% be printed, but not in the case of an |inbook| record. % % \subsection{References to software} % @@ -228,7 +258,7 @@ % correctly: this will automatically be prefixed with ``version'' by % the style file. % -% \subsection{The \textsf{annotate} field} +% \subsection{The \texttt{annotate} field} % % The standard BibTeX styles use the |note| field for notes to be % added to the citation. However, it is common to want personal @@ -246,24 +276,31 @@ % gives the output \textbf{Referenced in: text}. % This command takes one argument (normally text) which is % preceded by the text ``\textbf{Referenced in:} \meta{text}''. -% The |\refin| command is intended for tracking citations +% The \cmd{\refin} command is intended for tracking citations % ``backward'' through the database. For example, this could be -% used to link citations in a database to the writers own papers. +% used to link citations in a database to the writer's own papers. % % \subsection{Predefined journal abbreviations} % % A number of journal abbreviations are defined in the |.bst| files. % The abbreviations cover a number ACS journals, several other % physical chemistry publications and other journals listed as -% highly cited by \emph{Chem.\ Abs.}~The interested user should +% highly cited by \emph{Chem.\ Abs.}\ The interested user should % consult the |.bst| files for full details. % +% \subsection{\texttt{natbib} support} +% +% As of version 2.2, a |natbib| compatible style file, |achemnat| is +% provided. The style file provides the appropriate option, +% |natbib|, to load this BibTeX file along with |natbib|, setting up +% the appropriate options. +% % \section{The LaTeX Package} % -% The current version of |achemso.sty| is a -% complete re-implementation of the functionality of the original -% file, designed to ensure greater compatibility with other packages. -% The only change for the user is that the bibliography section does +% The current version of |achemso.sty| is a complete +% re-implementation of the functionality of the original file, +% designed to ensure greater compatibility with other packages. The +% only change for the user is that the bibliography section does % \emph{not} start a new page when using the |article| document % class. However, the package now supports all of the standard % classes, and so the |report| class may be used to ensure a new @@ -274,13 +311,12 @@ % \cmd{\bibliographystyle} command to the LaTeX source. As a result, % subsequent \cmd{\bibliographystyle} statements will be ignored: % a suitable warning is given. The format of citations is altered -% (using the |cite| package), and the package ensures that the -% bibliography will be named ``References'' in all standard document -% types.\footnote{This only works if the |babel| package is -% \emph{not} loaded.} +% (using the |cite| or |natbib| package as appropriate), and the +% package ensures that the bibliography will be named ``References'' +% in all standard document types.\footnote{This only works if the +% |babel| package is \emph{not} loaded.} % -% The |achemso| package has four options: |note|, -% |list|, and |number|: +% The |achemso| package has five options: % \begin{description} % \item[|note|] If the bibliography contains notes as well % as citations, then the section heading should be @@ -298,10 +334,13 @@ % output, using the |showkeys| package. % \item[|notsuper|] Switches from superscript citations % (\emph{e.g.}~Author \emph{et al.}$^3$) to -% in-text ones in italics (\emph{e.g.} Author +% in-text ones in italics (\emph{e.g.}~Author % \emph{et al.}~(\emph{3})). There is a |super| % option for completeness, which simply gives the default % behaviour. +% \item[|natbib|] Uses |natbib| rather than |cite| for citation +% formatting; this also loads the |achemnat| style in place +% of |achemso|. % \end{description} % % \StopEventually{\PrintChanges% @@ -317,7 +356,7 @@ % can detect the version of achemso in use. % \begin{macrocode} %<*package> -\def\ACSver{\texttt{achemso} v2.1 (2007/02/15)} +\def\ACSver{\texttt{achemso} v2.2b (2007/07/09)} % \end{macrocode} % \end{macro} % \begin{macro}{\ACS@sctnnmbr} @@ -326,39 +365,66 @@ % \changes{v2.0}{2007/01/17}{Boolean values made internal to package} % \begin{macro}{\ACS@super} % \changes{v2.1}{2007/02/15}{New Boolean for citation control} -% Four Boolean values are used to handle the options. +% \begin{macro}{\ACS@natbib} +% \changes{v2.2a}{2007/07/08}{New Boolean for |natbib| support} +% Boolean values are used to handle the options. % \begin{macrocode} \newif \ifACS@sctnnmbr \ACS@sctnnmbrfalse -\newif \ifACS@lst \ACS@lstfalse +\newif \ifACS@list \ACS@listfalse \newif \ifACS@note \ACS@notefalse \newif \ifACS@super \ACS@supertrue +\newif \ifACS@natbib \ACS@natbibfalse % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % The options are processed. % \begin{macrocode} \DeclareOption{note}{\global\ACS@notetrue} \DeclareOption{number}{\global\ACS@sctnnmbrtrue} -\DeclareOption{list}{} +\DeclareOption{super}{\global\ACS@supertrue} +\DeclareOption{list}{\global\ACS@listtrue} \DeclareOption{notsuper}{\global\ACS@superfalse} +\DeclareOption{natbib}{\global\ACS@natbibtrue} \DeclareOption*{\OptionNotUsed} \ProcessOptions % \end{macrocode} % \changes{v2.1}{2007/02/15}{|cite| package is loaded with different % options depending on citation style requested} +% \changes{v2.2a}{2007/07/08}{|natbib| support added} % The |cite| package is loaded to sort and compress references % correctly. Depending upon the package option given, citations are % either superscript or italic and in parentheses. % \begin{macrocode} -\ifACS@super - \RequirePackage[super,nospace]{cite} +\ifACS@natbib + \ifACS@super + \RequirePackage[numbers,sort&compress,super]{natbib} + \else +% \end{macrocode} +% For in-line citations with |natbib|, we have to do a +% bit of work to get things to look right. |natbib| uses +% \cmd{\citenumfont} to format the numbers, but it is not defined +% by default, so we have to use \cmd{\newcommand}. +% \begin{macrocode} + \RequirePackage[numbers,sort&compress,round]{natbib} + \newcommand*{\citenumfont}{\textit} + \fi \else - \RequirePackage{cite} - \def\citeleft{(} - \def\citeright{)} - \def\citeform{\emph{#1}} + \ifACS@super + \RequirePackage[super,nospace]{cite} + \else +% \end{macrocode} +% Again in-line citations need some format changes. In the case of +% |cite|, everything is defined initially. Thus we can use +% \cmd{\renewcommand} for everything. +% \begin{macrocode} + \RequirePackage{cite} + \renewcommand\citeleft{(} + \renewcommand\citeright{)} + \renewcommand\citeform[1]{\emph{#1}} + \fi \fi % \end{macrocode} % If the |babel| package is loaded, the |note| option does not @@ -407,7 +473,7 @@ % \end{macro} % If the |number| option is set, the |tocbibind| package is % used to number the bibliography. -% \changes{v2.0}{2007/01/17}{Switched to using \textsf{tocbibind} +% \changes{v2.0}{2007/01/17}{Switched to using \texttt{tocbibind} % to produce number bibliography} % \begin{macrocode} \ifACS@sctnnmbr @@ -420,15 +486,24 @@ % for listing the entire database. The |list| option of the % package selects this, and for listing also generates boxed % labels for each reference. The |showkeys| package provides -% this functionality. +% this functionality. If |natbib| is asked for, then the appropriate +% style files are used in place of the standard ones. % \changes{v2.0}{2007/01/17}{Replaced custom code with -% \textsf{showkeys} package} +% \texttt{showkeys} package} % \begin{macrocode} -\ifACS@lst - \bibliographystyle{achemsol} +\ifACS@list + \ifACS@natbib + \bibliographystyle{achemlnt} + \else + \bibliographystyle{achemsol} + \fi \RequirePackage[notcite]{showkeys} \else - \bibliographystyle{achemso} + \ifACS@natbib + \bibliographystyle{achemnat} + \else + \bibliographystyle{achemso} + \fi \fi % \end{macrocode} % \end{macro} @@ -472,6 +547,7 @@ ENTRY howpublished institution journal +% key note number organization @@ -485,10 +561,15 @@ ENTRY year } {} - { label } + { + label +% extra.label +% short.list + } INTEGERS { output.state before.all mid.sentence after.sentence } INTEGERS { after.block after.item author.or.editor } +INTEGERS { separate.by.semicolon } FUNCTION {init.state.consts} { #0 'before.all := @@ -504,6 +585,18 @@ FUNCTION {add.comma} FUNCTION {add.semicolon} { "; " * } +% \end{macrocode} +% For authors/editors we need to be able to add either a semi-colon +% or a comma. This is done using a switching function, defined here. +% \begin{macrocode} + +FUNCTION {add.comma.or.semicolon} +{ #1 separate.by.semicolon = + 'add.semicolon + 'add.comma + if$ +} + FUNCTION {add.colon} { ": " * } @@ -549,6 +642,14 @@ FUNCTION {output.check} if$ } +% \end{macrocode} +% For the standard file types, |output.bibitem| can come here. +% The same is not true for styles supporting |natbib|, and so +% |output.bibitem| occurs later for those styles. +% \iffalse +%<*!nat> +% \fi +% \begin{macrocode} FUNCTION {output.bibitem} { newline$ "\bibitem{" write$ @@ -559,6 +660,11 @@ FUNCTION {output.bibitem} before.all 'output.state := } +% \end{macrocode} +% \iffalse +% +% \fi +% \begin{macrocode} FUNCTION {new.block} { output.state before.all = 'skip$ @@ -825,22 +931,22 @@ FUNCTION {format.names} s num.names$ 'numnames := numnames 'namesleft := numnames #15 > - { s #1 "{vv~}{ll,}{~jj,}{~f.}" format.name$ 't := + { s #1 "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := t bbl.etal space.connect } { { namesleft #0 > } - { s nameptr "{vv~}{ll,}{~jj,}{~f.}" format.name$ 't := + { s nameptr "{vv~}{ll,}{~f.}{,~jj}" format.name$ 't := nameptr #1 > { namesleft #1 > - { add.semicolon t * } + { add.comma.or.semicolon t * } { numnames #2 > { "" * } 'skip$ if$ t "others," = { bbl.etal space.connect } - { add.semicolon t * } + { add.comma.or.semicolon t * } if$ } if$ @@ -859,7 +965,9 @@ FUNCTION {format.authors} { author empty$ { "" } { #1 'author.or.editor := - author format.names } + #1 'separate.by.semicolon := + author format.names + } if$ } @@ -867,6 +975,7 @@ FUNCTION {format.editors} { editor empty$ { "" } { #2 'author.or.editor := + #0 'separate.by.semicolon := editor format.names add.comma editor num.names$ #1 > @@ -944,7 +1053,104 @@ FUNCTION {format.number.series} if$ } -FUNCTION {n.dashify} { 't := +% The specialised |output.bibitem| needed for |natbib| support now +% follows, along with the various support macros it needs. +% \iffalse +%<*nat> +% \fi +% \begin{macrocode} +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { bbl.etal * } + { bbl.and space.connect t space.connect } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "proceedings" = + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} { newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +% \end{macrocode} +% \iffalse +% +% \fi +% \begin{macrocode} +FUNCTION {n.dashify} +{ 't := "" { t empty$ not } { t #1 #1 substring$ "-" = @@ -1285,6 +1491,11 @@ FUNCTION {incollection} } { format.authors output after.item 'output.state := + title empty$ + 'skip$ + { title format.title.noemph output } + if$ + after.sentence 'output.state := booktitle format.title.in "booktitle" output.check format.edition output } @@ -1294,6 +1505,7 @@ FUNCTION {incollection} new.block format.pub.address "publisher" output.check format.bdate "year" output.check + new.block format.bvolume output format.chapter.pages "chapter and pages" output.check note output @@ -1564,6 +1776,13 @@ MACRO {nar} {"Nucleic.\ Acid Res."} READ +% \end{macrocode} +% The nature of the initialise code depends on whether we need to +% support |natbib|. First the simple case is handled. +% \iffalse +%<*!nat> +% \fi +% \begin{macrocode} STRINGS { longest.label } INTEGERS { number.label longest.label.width } @@ -1589,6 +1808,170 @@ EXECUTE {initialize.longest.label} ITERATE {longest.label.pass} +% \end{macrocode} +% \iffalse +% +% \fi +% Now the |natbib| system is sorted out, basically by copying from +% |plainnat.bst|. +% \iffalse +%<*nat> +% \fi +% \begin{macrocode} +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ bbl.etal space.connect } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { bbl.etal space.connect } + { bbl.and space.connect s #2 "{vv~}{ll}" format.name$ space.connect } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + 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 + 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 + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ 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$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'label := +} + +ITERATE {calc.label} + +STRINGS { longest.label last.label next.extra } + +INTEGERS { longest.label.width last.extra.num number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +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$ + number.label #1 + 'number.label := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +% \end{macrocode} +% \iffalse +% +% \fi + FUNCTION {begin.bib} { preamble$ empty$ 'skip$ @@ -1596,7 +1979,11 @@ FUNCTION {begin.bib} if$ "\providecommand{\refin}[1]{\\ \textbf{Referenced in:} #1}" write$ newline$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +% "\providecommand{\natexlab}[1]{#1}" +% write$ newline$ +% "\begin{thebibliography}{" longest.label * "}" * +% "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ } EXECUTE {begin.bib} diff --git a/Master/texmf-dist/source/latex/achemso/achemso.ins b/Master/texmf-dist/source/latex/achemso/achemso.ins index 4aea77ef341..3947bf80030 100644 --- a/Master/texmf-dist/source/latex/achemso/achemso.ins +++ b/Master/texmf-dist/source/latex/achemso/achemso.ins @@ -4,7 +4,7 @@ ---------------------------------------------------------------- The achemso package - A BibTeX style for American Chemical Society publications -Maintained by Joseph A. Wright +Maintained by Joseph Wright E-mail: joseph.wright@morningstar2.co.uk Originally developed by Mats Dahlgren (c) 1996-98 by Mats Dahlgren @@ -27,7 +27,9 @@ Released under the LaTeX Project Public license v1.3 or later \usedir{bibtex/bst/achemso} \generate{\usepostamble\bibtexable \file{achemso.bst}{\from{achemso.dtx}{bib}} + \file{achemnat.bst}{\from{achemso.dtx}{bib,nat}} \file{achemsol.bst}{\from{achemso.dtx}{bib,list}} + \file{achemlnt.bst}{\from{achemso.dtx}{bib,list,nat}} } \generate{\usepostamble\empty\usepreamble\empty \file{achemso.bib}{\from{achemso.dtx}{database}} diff --git a/Master/texmf-dist/tex/latex/achemso/achemso.sty b/Master/texmf-dist/tex/latex/achemso/achemso.sty index fc5632ab455..1afb71989b3 100644 --- a/Master/texmf-dist/tex/latex/achemso/achemso.sty +++ b/Master/texmf-dist/tex/latex/achemso/achemso.sty @@ -8,7 +8,7 @@ %% ---------------------------------------------------------------- %% The achemso package - A BibTeX style for American Chemical %% Society publications -%% Maintained by Joseph A. Wright +%% Maintained by Joseph Wright %% E-mail: joseph.wright@morningstar2.co.uk %% Originally developed by Mats Dahlgren %% (c) 1996-98 by Mats Dahlgren @@ -17,25 +17,37 @@ %% ---------------------------------------------------------------- \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{achemso} - [2007/02/15 v2.1 Enhancements for ACS publications] -\def\ACSver{\texttt{achemso} v2.1 (2007/02/15)} + [2007/07/09 v2.2b Enhancements for ACS publications] +\def\ACSver{\texttt{achemso} v2.2b (2007/07/09)} \newif \ifACS@sctnnmbr \ACS@sctnnmbrfalse -\newif \ifACS@lst \ACS@lstfalse +\newif \ifACS@list \ACS@listfalse \newif \ifACS@note \ACS@notefalse \newif \ifACS@super \ACS@supertrue +\newif \ifACS@natbib \ACS@natbibfalse \DeclareOption{note}{\global\ACS@notetrue} \DeclareOption{number}{\global\ACS@sctnnmbrtrue} -\DeclareOption{list}{} +\DeclareOption{super}{\global\ACS@supertrue} +\DeclareOption{list}{\global\ACS@listtrue} \DeclareOption{notsuper}{\global\ACS@superfalse} +\DeclareOption{natbib}{\global\ACS@natbibtrue} \DeclareOption*{\OptionNotUsed} \ProcessOptions -\ifACS@super - \RequirePackage[super,nospace]{cite} +\ifACS@natbib + \ifACS@super + \RequirePackage[numbers,sort&compress,super]{natbib} + \else + \RequirePackage[numbers,sort&compress,round]{natbib} + \newcommand*{\citenumfont}{\textit} + \fi \else - \RequirePackage{cite} - \def\citeleft{(} - \def\citeright{)} - \def\citeform{\emph{#1}} + \ifACS@super + \RequirePackage[super,nospace]{cite} + \else + \RequirePackage{cite} + \renewcommand\citeleft{(} + \renewcommand\citeright{)} + \renewcommand\citeform[1]{\emph{#1}} + \fi \fi \@ifpackageloaded{babel} {\ACS@notefalse\PackageWarning{achemso}% @@ -61,11 +73,19 @@ \ifACS@sctnnmbr \RequirePackage[numbib]{tocbibind} \fi -\ifACS@lst - \bibliographystyle{achemsol} +\ifACS@list + \ifACS@natbib + \bibliographystyle{achemlnt} + \else + \bibliographystyle{achemsol} + \fi \RequirePackage[notcite]{showkeys} \else - \bibliographystyle{achemso} + \ifACS@natbib + \bibliographystyle{achemnat} + \else + \bibliographystyle{achemso} + \fi \fi \def\@biblabel#1{#1.} \def\ACS@bibwarning{\PackageWarning{achemso}% -- cgit v1.2.3