summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-12-26 23:29:48 +0000
committerKarl Berry <karl@freefriends.org>2006-12-26 23:29:48 +0000
commit729ce53995492a87f35451ca5aa1075beca00c6b (patch)
tree30494c8c41d92c218424b0893754a1e9963cb38c /Master
parentbbd8230e72add61180e3071b90bf5c6a48908650 (diff)
rsc update
git-svn-id: svn://tug.org/texlive/trunk@2956 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/bibtex/bst/rsc/rsc-mc.bst998
-rw-r--r--Master/texmf-dist/bibtex/bst/rsc/rsc.bst857
-rw-r--r--Master/texmf-dist/doc/latex/rsc/README15
-rw-r--r--Master/texmf-dist/doc/latex/rsc/rsc.pdfbin0 -> 166334 bytes
-rw-r--r--Master/texmf-dist/doc/latex/rsc/rsc.tex29
-rw-r--r--Master/texmf-dist/source/latex/rsc/rsc.dtx1596
-rw-r--r--Master/texmf-dist/source/latex/rsc/rsc.ins37
-rw-r--r--Master/texmf-dist/tex/latex/rsc/rsc.sty93
-rw-r--r--Master/texmf-dist/tpm/rsc.tpm13
-rw-r--r--Master/texmf/lists/rsc9
10 files changed, 3049 insertions, 598 deletions
diff --git a/Master/texmf-dist/bibtex/bst/rsc/rsc-mc.bst b/Master/texmf-dist/bibtex/bst/rsc/rsc-mc.bst
new file mode 100644
index 00000000000..f865a76f0ab
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/rsc/rsc-mc.bst
@@ -0,0 +1,998 @@
+%%
+%% This is file `rsc-mc.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% rsc.dtx (with options: `bib-mc')
+%% ----------------------------------------------------------------
+%% The rsc package - BibTeX and macro support for Royal Society
+%% of Chemistry style articles
+%% Maintained by Joseph A. Wright
+%% E-mail: joseph.wright@morningstar2.co.uk
+%% Released under the GNU General Public License
+%% See http://www.gnu.org/licenses/gpl.txt
+%% ----------------------------------------------------------------
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence }
+INTEGERS { after.block after.item author.or.editor }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+ #4 'after.item :=
+}
+
+FUNCTION {add.comma}
+{ duplicate$
+ #-1 #1 substring$ "}" =
+ { #-2 #1024 substring$ ";} " * }
+ { ", " * }
+ if$
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.comma 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 {output.bibitem}
+{ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+FUNCTION {fin.entry}
+{ write$
+ "\relax" write$
+ newline$
+ "\relax" write$
+}
+
+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.chapter}
+{ "ch." }
+
+FUNCTION {bbl.ed}
+{ "ed. " }
+
+FUNCTION {bbl.edition}
+{ "edn." }
+
+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.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.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { 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.num
+ { 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 :=
+ { namesleft #0 > }
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "" * }
+ 'skip$
+ if$
+ t "others" =
+ { " \emph{et~al.}" * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { #1 'author.or.editor :=
+ author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { #2 'author.or.editor :=
+ bbl.ed *
+ editor format.names
+ }
+ 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 {n.separate.multi}
+{ 't :=
+ ""
+ #0 'numnames :=
+ t text.length$ #4 > t is.a.number and
+ {
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { 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.title.noemph}
+{ title empty$
+ { "" }
+ { title }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title emphasize }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{ booktitle title empty$
+ { "" }
+ { booktitle emphasize }
+ 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$
+ { "" }
+ { year }
+ 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.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "no." }
+ { "No." }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "There's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ 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 boldface field.or.null
+ duplicate$ empty$
+ { pop$ format.pages.required }
+ { ", " * 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$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "in " booktitle emphasize * }
+ { "in " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.title.ed}
+{ title empty$
+ { "" }
+ { editor empty$
+ { " in " title emphasize * }
+ { " in " title emphasize * ", " * format.editors * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.booktitle.ed}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { " in " booktitle emphasize * }
+ { " in " booktitle emphasize * ", " * format.editors * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.pub.address}
+{ publisher empty$
+ { "" }
+ { address empty$
+ { publisher }
+ { publisher ", " * address *}
+ if$
+ }
+ 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
+ journal emphasize "journal" output.check
+ format.date "year" output.check
+ volume empty$
+ { ""
+ format.pages.nopp output
+ }
+ { format.vol.pages output }
+ if$
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.title "title" output.check
+ editor empty$
+ { "Need either an author or editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull
+ "author and editor" editor either.or.check
+ format.title "title" output.check
+ }
+ if$
+ format.pub.address "publisher" output.check
+ format.edition output
+ format.bdate "year" output.check
+ format.bvolume output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ format.title "title" output.check
+ howpublished output
+ address output
+ format.date output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.title "title" output.check
+ editor empty$
+ { "Need at least an author or an editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull
+ format.in.title.ed "title" output.check
+ }
+ if$
+ format.pub.address "publisher" output.check
+ format.edition output
+ format.bdate "year" output.check
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ author empty$
+ { format.booktitle "booktitle" output.check
+ editor empty$
+ { "Need at least an author or an editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull
+ format.in.booktitle.ed "booktitle" output.check
+ }
+ if$
+ format.pub.address "publisher" output.check
+ format.edition output
+ format.bdate "year" output.check
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ fin.entry
+}
+
+FUNCTION {inpress}
+{ output.bibitem
+ format.authors "author" output.check
+ journal emphasize "journal" output.check
+ bbl.inpress output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ booktitle "booktitle" output.check
+ address output
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+ 'skip$
+ { organization output.nonnull
+ address output
+ }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ format.title "title" output.check
+ author empty$
+ { organization empty$
+ { address output }
+ 'skip$
+ if$
+ }
+ { organization output
+ address output
+ }
+ if$
+ format.edition output
+ format.date output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ bbl.msc emphasize format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ format.title output
+ howpublished output
+ format.bdate output
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {patent}
+{ output.bibitem
+ organization empty$
+ { format.authors "author and organization" output.check }
+ { author empty$
+ { organization }
+ { format.authors organization paren space.connect }
+ if$
+ "author and organization" output.check
+ }
+ if$
+ journal emphasize "journal" output.check
+ format.pages.patent "pages" output.check
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ bbl.phd emphasize format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.title.noemph "title" output.check
+ address output
+ format.date "year" output.check
+ 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
+ format.title "title" output.check
+ institution
+ type empty$
+ 'bbl.techreport
+ 'type
+ if$
+ space.connect
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+ output.nonnull
+ format.pub.address output
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ journal empty$
+ 'skip$
+ { journal emphasize "journal" output.check }
+ if$
+ doi empty$
+ { note output }
+ { 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} {"January"}
+MACRO {feb} {"February"}
+MACRO {mar} {"March"}
+MACRO {apr} {"April"}
+MACRO {may} {"May"}
+MACRO {jun} {"June"}
+MACRO {jul} {"July"}
+MACRO {aug} {"August"}
+MACRO {sep} {"September"}
+MACRO {oct} {"October"}
+MACRO {nov} {"November"}
+MACRO {dec} {"December"}
+
+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{mcbibliography}{" longest.label * "}" * write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{mcbibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+\endinput
+%%
+%% End of file `rsc-mc.bst'.
diff --git a/Master/texmf-dist/bibtex/bst/rsc/rsc.bst b/Master/texmf-dist/bibtex/bst/rsc/rsc.bst
index 856d6a976c2..82b778ac3e9 100644
--- a/Master/texmf-dist/bibtex/bst/rsc/rsc.bst
+++ b/Master/texmf-dist/bibtex/bst/rsc/rsc.bst
@@ -1,58 +1,18 @@
-% ----------------------------------------------------------------
-% BibTeX bibliography style `rsc' for Dalton Trans.,
-% Org. Biomol. Chem., Chem. Commun., Phys. Chem. Chem. Phys., etc.
-% ----------------------------------------------------------------
-%
-% ----------------------------------------------------------------
-% Maintained by Joseph A. Wright
-% E-mail: joseph.wright@morningstar2.co.uk
-% Released under the GNU General Public License
-% See http://www.gnu.org/licenses/gpl.txt
-% ----------------------------------------------------------------
-
-% ----------------------------------------------------------------
-% History
-% 2006-10-30 Improvements to patent number handling; automatic
-% digit grouping. Patent assignee recognised from
-% organization field. Added support for non-standard
-% types as in achemso.bst
-% 2006-10-22 Added converters for edition numbers (to change
-% 1 to 1st, 2 to 2nd, etc.) from custom-bib
-% package.
-% 2006-06-27 Substantial improvements to output consistency
-% with RSC style requirements.
-% Improved support for unpublished works, in press
-% and so on.
-% ----------------------------------------------------------------
-%
-% ----------------------------------------------------------------
-% Usage notes:
-% 1) Other than the 'article' reference type, the RSC publication
-% rules give only limited guidance. I have therefore had to
-% look at a number of real-world examples, and pick the useage
-% I am happiest with. So of the layout is therefore more of
-% a personal preference than anything else.
-% 2) Patents. Patents can be saves as type 'patent' or 'other'
-% Fill in as for article, and the correct formatting will
-% result (Authors, "Journal", Year). Any other use of 'other'
-% will give the same result. Patent numbers are automatically
-% digit-grouped if they are purely made up of digits. Assignee
-% is given in the organization field.
-% 3) Unpublished. If a journal is given (for example, for
-% submitted or in press articles), then this will be printed.
-% Use the 'note' field for the status of the references
-% (personal communication, in press, etc.)
-% 4) In press articles with DOI. If unpublished articles have
-% a DOI given, this will be given in the output, with
-% the year added as well. In this case, no 'note' is added
-% 5) Miscellaneous (e.g. software). Use the 'howpublished' field
-% for organisation, address etc.
-% 6) The non-standard types remark, inpress and submitted are
-% supported for compatibility with achemso.bst. Note that they
-% are implemented to act in the same way as the rest of this
-% style.
-% ----------------------------------------------------------------
-
+%%
+%% This is file `rsc.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% rsc.dtx (with options: `bib')
+%% ----------------------------------------------------------------
+%% The rsc package - BibTeX and macro support for Royal Society
+%% of Chemistry style articles
+%% Maintained by Joseph A. Wright
+%% E-mail: joseph.wright@morningstar2.co.uk
+%% Released under the GNU General Public License
+%% See http://www.gnu.org/licenses/gpl.txt
+%% ----------------------------------------------------------------
ENTRY
{ address
author
@@ -64,8 +24,6 @@ ENTRY
howpublished
institution
journal
- key
- month
note
number
organization
@@ -81,7 +39,8 @@ ENTRY
{}
{ label }
-INTEGERS { output.state before.all mid.sentence after.sentence after.block after.item author.or.editor }
+INTEGERS { output.state before.all mid.sentence after.sentence }
+INTEGERS { after.block after.item author.or.editor }
FUNCTION {init.state.consts}
{ #0 'before.all :=
@@ -91,14 +50,6 @@ FUNCTION {init.state.consts}
#4 'after.item :=
}
-FUNCTION {add.semicolon}
-{ duplicate$
- #-1 #1 substring$ "}" =
- { #-2 #1024 substring$ ";} " * }
- { "; " * }
- if$
-}
-
FUNCTION {add.comma}
{ duplicate$
#-1 #1 substring$ "}" =
@@ -144,7 +95,7 @@ FUNCTION {output}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
+ { pop$ "Empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
@@ -158,42 +109,11 @@ FUNCTION {output.bibitem}
""
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$
-}
-
-FUNCTION {new.item}
-{ duplicate$ empty$
- { skip$ }
- { output.state mid.sentence =
- { after.item 'output.state := }
- { skip$ }
- if$
- }
- if$
-}
-
FUNCTION {not}
{ { #0 }
{ #1 }
@@ -212,45 +132,6 @@ FUNCTION {or}
if$
}
-FUNCTION {new.block.checka}
-{ empty$
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.sentence.checka}
-{ empty$
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {new.item.checka}
-{ empty$
- 'skip$
- 'new.item
- if$
-}
-
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
@@ -279,7 +160,39 @@ FUNCTION {paren}
if$
}
-% Some functions taken from custombib.tex
+FUNCTION {bbl.chapter}
+{ "ch." }
+
+FUNCTION {bbl.ed}
+{ "ed. " }
+
+FUNCTION {bbl.edition}
+{ "edn." }
+
+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.volume}
+{ "vol."}
+
FUNCTION {bbl.first}
{ "1st" }
@@ -400,6 +313,19 @@ FUNCTION {convert.edition}
t
}
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {space.connect}
+{ " "
+ swap$ * *
+}
+
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
@@ -408,7 +334,7 @@ FUNCTION {format.names}
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
- { s nameptr "{f.~}{vv~}{ll}{ jj}" format.name$ 't :=
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
@@ -443,81 +369,12 @@ FUNCTION {format.editors}
{ editor empty$
{ "" }
{ #2 'author.or.editor :=
- editor num.names$ #1 >
- { "ed. " * }
- { "ed. " * }
- if$
+ bbl.ed *
editor format.names
}
if$
}
-INTEGERS { a b }
-
-FUNCTION {mult}
-{
- 'a := %% we store the first value
- 'b := %% we store the second value
-
- b #0 < %% We remember the sign of b, and
- {#-1 #0 b - 'b :=} %% then consider its absolute value.
- {#1} %%
- if$ %%
-
- #0 %% Put 0 on the stack.
- {b #0 >} %% While b is strictly positive,
- { %% we add a to the value on the stack
- a + %% and decrement b.
- b #1 - 'b := %%
- } %%
- while$ %%
-
- swap$ %% Last, we take the opposite
- 'skip$ %% if b was negative.
- {#0 swap$ -} %%
- if$ %%
-}
-
-FUNCTION {chr.to.value.silent} %% The ASCII code of a character
-{
- chr.to.int$ #48 - %% ASCII value of "0" -> 48
- duplicate$ duplicate$ %% "1" -> 49
- #0 < swap$ #9 > or %% ...
- { pop$ pop$ "0" #0 }
- {}
- if$
-}
-
-FUNCTION {str.to.int.aux.silent} %% The auxiliary function
-{
- {duplicate$ empty$ not} %% While the string is not empty
- { %% consider its first char
- swap$ #10 mult 'a := %% and ``add'' it at the end of
- duplicate$ #1 #1 substring$ %% the result.
- chr.to.value.silent a +
- swap$
- #2 global.max$ substring$
- }
- while$
- pop$
-}
-
-FUNCTION {str.to.int.silent}
-{ %% Handling negative values
- duplicate$ #1 #1 substring$ "-" =
- {#1 swap$ #2 global.max$ substring$}
- {#0 swap$}
- if$
- %% Initialization, and then
- #0 swap$ str.to.int.aux.silent %% call to the aux. funtion
- swap$
- {#0 swap$ -} %% And handle the sign.
- {}
- if$
-}
-
-% Two functions from Nicolas Markey
-
FUNCTION{is.a.digit}
{
duplicate$ "" =
@@ -528,20 +385,19 @@ FUNCTION{is.a.digit}
}
FUNCTION{is.a.number}
-{
+{
{duplicate$ #1 #1 substring$ is.a.digit }
{#2 global.max$ substring$}
while$
"" =
}
-
FUNCTION {n.separate.multi}
{ 't :=
""
#0 'numnames :=
- t text.length$ #4 > t is.a.number and % Test that t is both:
- { % 1) a number
- { t empty$ not } % 2) over four digits long
+ t text.length$ #4 > t is.a.number and
+ {
+ { t empty$ not }
{ t #-1 #1 substring$ is.num
{ numnames #1 + 'numnames := }
{ #0 'numnames := }
@@ -558,31 +414,29 @@ FUNCTION {n.separate.multi}
if$
}
while$
- }
+ }
{ t swap$ * }
if$
}
-% Need a different format for books with editors
-% than for editors in a collection
-
-FUNCTION {format.editors.paren}
-{ editor empty$
+FUNCTION {format.title.noemph}
+{ title empty$
{ "" }
- { editor format.names
- #2 'author.or.editor :=
- editor num.names$ #1 >
- { * " (ed.)" }
- { * " (ed.)" }
- if$
- }
+ { title }
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
- { title "t" change.case$ }
+ { title emphasize }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{ booktitle title empty$
+ { "" }
+ { booktitle emphasize }
if$
}
@@ -620,45 +474,22 @@ FUNCTION {format.date}
FUNCTION {format.bdate}
{ year empty$
- { "there's no year in " cite$ * warning$ }
+ { "There's no year in " cite$ * warning$ }
'year
if$
}
-FUNCTION {format.btitle}
-{ title emphasize
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION {space.connect}
-{ " "
- swap$ * *
-}
-
FUNCTION {either.or.check}
{ empty$
'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ { "Can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
- { "vol." volume tie.or.space.connect
- series empty$
- 'skip$
- { " of " * series emphasize * }
- if$
- "volume and number" number either.or.check
- }
+ { bbl.volume volume tie.or.space.connect }
if$
}
@@ -672,7 +503,7 @@ FUNCTION {format.number.series}
if$
number tie.or.space.connect
series empty$
- { "there's a number but no series in " cite$ * warning$ }
+ { "There's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
@@ -683,15 +514,11 @@ FUNCTION {format.number.series}
}
FUNCTION {format.edition}
-{ edition duplicate$ empty$ 'skip$
- {
- convert.edition
- output.state mid.sentence =
- { "l" }
- { "t" }
- if$ change.case$
- "edn." bibinfo.check
- " " * "edn." *
+{ edition duplicate$ empty$
+ 'skip$
+ { convert.edition
+ bbl.edition bibinfo.check
+ " " * bbl.edition *
}
if$
}
@@ -710,8 +537,8 @@ FUNCTION {multi.page.check}
swap$ duplicate$ "," =
swap$ "+" =
or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
if$
}
while$
@@ -722,27 +549,44 @@ FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
- { "pp." pages n.dashify tie.or.space.connect }
- { "p." pages tie.or.space.connect }
- if$
+ { 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$
+ { pages n.dashify space.connect }
+ { pages space.connect }
+ if$
}
if$
}
FUNCTION {format.pages.patent}
{ pages empty$
- { "there is no patent number for " cite$ * warning$ }
+ { "There is no patent number for " cite$ * warning$ }
{ pages multi.page.check
{ pages n.dashify }
{ pages n.separate.multi }
@@ -751,36 +595,11 @@ FUNCTION {format.pages.patent}
if$
}
-FUNCTION {format.vol.num.pages}
-{ volume boldface 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.vol.pages}
{ volume boldface field.or.null
- pages empty$
- 'skip$
- { duplicate$ empty$
- { pop$ format.pages }
+ duplicate$ empty$
+ { pop$ format.pages.required }
{ ", " * pages n.dashify * }
- if$
- }
if$
}
@@ -788,7 +607,7 @@ FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
- { "ch." }
+ { bbl.chapter }
{ type "l" change.case$ }
if$
chapter tie.or.space.connect
@@ -811,14 +630,14 @@ FUNCTION {format.in.ed.booktitle}
if$
}
-FUNCTION {format.title.incoll}
+FUNCTION {format.in.title.ed}
{ title empty$
{ "" }
- { author empty$
- { title emphasize *}
- { ", " * title emphasize *}
- if$
- }
+ { editor empty$
+ { " in " title emphasize * }
+ { " in " title emphasize * ", " * format.editors * }
+ if$
+ }
if$
}
@@ -826,10 +645,10 @@ FUNCTION {format.in.booktitle.ed}
{ booktitle empty$
{ "" }
{ editor empty$
- { " in " booktitle emphasize * }
- { " in " booktitle emphasize * ", " * format.editors * }
- if$
- }
+ { " in " booktitle emphasize * }
+ { " in " booktitle emphasize * ", " * format.editors * }
+ if$
+ }
if$
}
@@ -840,298 +659,157 @@ FUNCTION {format.pub.address}
{ publisher }
{ publisher ", " * address *}
if$
- }
+ }
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
- month empty$ year empty$ note empty$
- and and and and and
+ year empty$ note empty$
+ and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
-FUNCTION {format.thesis.type}
-{ type empty$
+FUNCTION {empty.doi.note}
+{ doi empty$ note empty$ and
+ { "Need either a note or DOI for " cite$ * warning$ }
'skip$
- { pop$
- type "t" change.case$
- }
if$
}
-FUNCTION {format.tr.number}
+FUNCTION {format.thesis.type}
{ type empty$
- { "Technical Report" }
- 'type
- if$
- number empty$
- { "t" change.case$ }
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION {format.article.crossref}
-{ key empty$
- { journal empty$
- { "need key or journal for " cite$ * " to crossref " * crossref *
- warning$
- ""
- }
- { "In \emph{" journal * "\/}" * }
- if$
- }
- { "In " key * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.crossref.editor}
-{ editor #1 "{vv~}{ll}" format.name$
- editor num.names$ duplicate$
- #2 >
- { pop$ " \emph{et~al.}" * }
- { #2 <
'skip$
- { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " \emph{et~al.}" * }
- { " and " * editor #2 "{vv~}{ll}" format.name$ * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.book.crossref}
-{ volume empty$
- { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
- "In "
- }
- { "Volume" volume tie.or.space.connect
- " of " *
- }
- 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$
- "" *
- }
- { "\emph{" * series * "\/}" * }
- if$
- }
- { key * }
- 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$
- ""
- }
- { "In \emph{" booktitle * "\/}" * }
- if$
- }
- { "In " key * }
- if$
+ { pop$
+ type emphasize
}
- { "In " format.crossref.editor * }
if$
- " \cite{" * crossref * "}" *
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
- crossref missing$
- { journal emphasize "journal" output.check
- format.date "year" output.check
- volume empty$
- { ""
- format.pages.nopp output
- }
- { format.vol.pages output }
- if$
- }
- { format.article.crossref output.nonnull
- format.pages output
- }
- if$
- fin.entry
-}
-
-FUNCTION {patent}
-{ output.bibitem
- organization empty$
- { format.authors "author" output.check }
- { format.authors
- " (" organization ")" * * *
- "author" output.check
- }
- if$
journal emphasize "journal" output.check
- format.pages.patent "pages" output.check
format.date "year" output.check
+ volume empty$
+ { ""
+ format.pages.nopp output
+ }
+ { format.vol.pages output }
+ if$
fin.entry
}
-FUNCTION { other } { patent }
-
FUNCTION {book}
{ output.bibitem
author empty$
- { format.editors.paren "author and editor" output.check }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
+ { format.title "title" output.check
+ editor empty$
+ { "Need either an author or editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
}
- if$
- format.btitle "title" output.check
- crossref missing$
- { % Suspect these are not needed
- % But hold on to just in case!
- % format.bvolume output
- % format.number.series output
- format.pub.address "publisher" output.check
+ { format.authors output.nonnull
+ "author and editor" editor either.or.check
+ format.title "title" output.check
}
- { format.book.crossref output.nonnull }
if$
+ format.pub.address "publisher" output.check
format.edition output
format.bdate "year" output.check
- new.block
+ format.bvolume output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
- format.authors output new.item
+ format.authors output
format.title "title" output.check
- howpublished address new.block.checkb
howpublished output
address output
format.date output
- new.block
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
author empty$
- { format.editors "author and editor" output.check }
- { format.authors output.nonnull }
- if$
- format.in.booktitle.ed "title" output.check
- crossref missing$
- { format.pub.address "publisher" output.check
- format.bdate "year" output.check
- new.block
- format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.number.series output
+ { format.title "title" output.check
+ editor empty$
+ { "Need at least an author or an editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
}
- { format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
+ { format.authors output.nonnull
+ format.in.title.ed "title" output.check
}
if$
+ format.pub.address "publisher" output.check
format.edition output
- new.block
+ format.bdate "year" output.check
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
- format.authors "" output
- format.title.incoll output
- crossref missing$
- { format.in.booktitle.ed "booktitle" output.check
- format.number.series output
- new.block
- format.pub.address "publisher" output.check
- format.edition output
- format.bdate "year" output.check
- new.block
- format.bvolume output
- format.chapter.pages output
+ author empty$
+ { format.booktitle "booktitle" output.check
+ editor empty$
+ { "Need at least an author or an editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
}
- { format.incoll.inproc.crossref output.nonnull
- format.chapter.pages output
+ { format.authors output.nonnull
+ format.in.booktitle.ed "booktitle" output.check
}
if$
- new.block
+ format.pub.address "publisher" output.check
+ format.edition output
+ format.bdate "year" output.check
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
fin.entry
}
-FUNCTION {inproceedings}
+FUNCTION {inpress}
{ output.bibitem
- format.authors "author" output.check new.item
- crossref missing$
- { format.btitle "title" output.check
- format.number.series output
- format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.pages output
- address empty$
- { organization publisher new.sentence.checkb
- organization output
- publisher output
- format.bdate "year" output.check
- }
- { address output.nonnull
- format.bdate "year" output.check
- new.sentence
- organization output
- publisher output
- }
- if$
- }
- { format.incoll.inproc.crossref output.nonnull
- format.pages output
- }
- if$
- new.block
+ format.authors "author" output.check
+ journal emphasize "journal" output.check
+ bbl.inpress output
fin.entry
}
-FUNCTION {conference} { inproceedings }
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ booktitle "booktitle" output.check
+ address output
+ format.date "year" output.check
+ fin.entry
+}
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
- 'skip$
- { organization output.nonnull
- address output
- }
+ 'skip$
+ { organization output.nonnull
+ address output
+ }
if$
}
- {format.authors output.nonnull}
+ { format.authors output.nonnull }
if$
- format.btitle "title" output.check
+ format.title "title" output.check
author empty$
{ organization empty$
- { address output
- }
- 'skip$
- if$
+ { address output }
+ 'skip$
+ if$
}
{ organization output
address output
@@ -1139,87 +817,95 @@ FUNCTION {manual}
if$
format.edition output
format.date output
- new.block
fin.entry
}
-
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
- "M.Sc.~thesis" emphasize format.thesis.type output.nonnull
+ bbl.msc emphasize format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
- new.block
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
- format.title emphasize output
+ format.title output
howpublished output
format.bdate output
- new.block
+ note output
fin.entry
empty.misc.check
}
+FUNCTION {patent}
+{ output.bibitem
+ organization empty$
+ { format.authors "author and organization" output.check }
+ { author empty$
+ { organization }
+ { format.authors organization paren space.connect }
+ if$
+ "author and organization" output.check
+ }
+ if$
+ journal emphasize "journal" output.check
+ format.pages.patent "pages" output.check
+ format.date "year" output.check
+ fin.entry
+}
+
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
- "Ph.D.~thesis" emphasize format.thesis.type output.nonnull
+ bbl.phd emphasize format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
- new.block
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
- editor empty$
- { organization output }
- { format.editors output.nonnull new.item }
- if$
- new.block
- 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
+ format.title.noemph "title" output.check
+ address output
+ format.date "year" output.check
+ 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 new.item
- format.title "title" output.check new.item
- format.tr.number output.nonnull
- institution "institution" output.check
- address output
+ format.authors "author" output.check
+ format.title "title" output.check
+ institution
+ type empty$
+ 'bbl.techreport
+ 'type
+ if$
+ space.connect
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+ output.nonnull
+ format.pub.address output
format.date "year" output.check
- new.block
fin.entry
}
@@ -1227,45 +913,23 @@ FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
journal empty$
- {}
+ 'skip$
{ journal emphasize "journal" output.check }
if$
doi empty$
{ note output }
- { format.date "year" output.check
+ { format.date output
"DOI:" doi tie.or.space.connect output }
if$
fin.entry
+ empty.doi.note
}
-% The next three dunctions are taken from
-% achemso to provide compatiblity. They have
-% been modified to conform to the approach taken by
-% the rest of this style.
-
-FUNCTION { submitted }
-{ output.bibitem
- format.authors "author" output.check
- "submitted for publication in"
- journal emphasize space.connect "journal" output.check
- fin.entry
-}
+FUNCTION {conference} {inproceedings}
-FUNCTION { inpress }
-{ output.bibitem
- format.authors "author" output.check
- journal emphasize "journal" output.check
- "in press" output
- fin.entry
-}
-
-FUNCTION { remark }
-{ output.bibitem
- note "note" output.check
- fin.entry
-}
+FUNCTION {other} {patent}
-FUNCTION {default.type} { misc }
+FUNCTION {default.type} {misc}
MACRO {jan} {"January"}
MACRO {feb} {"February"}
@@ -1327,3 +991,6 @@ FUNCTION {end.bib}
}
EXECUTE {end.bib}
+\endinput
+%%
+%% End of file `rsc.bst'.
diff --git a/Master/texmf-dist/doc/latex/rsc/README b/Master/texmf-dist/doc/latex/rsc/README
new file mode 100644
index 00000000000..3640961b8e7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/rsc/README
@@ -0,0 +1,15 @@
+The rsc package - BibTeX and macro support for Royal Society
+of Chemistry style articles
+
+----------------------------------------------------------------
+Maintained by Joseph A. Wright
+E-mail: joseph.wright@morningstar2.co.uk
+Released under the GNU General Public License
+See http://www.gnu.org/licenses/gpl.txt
+----------------------------------------------------------------
+
+The rsc package provides a BibTeX style in accordance with the
+requirements of the Royal Society of Chemistry. It was originally
+based on the file pccp.bst, but also implements a number of styles
+from the achemso package. It also provides a small number of
+chemistry-related macros. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/rsc/rsc.pdf b/Master/texmf-dist/doc/latex/rsc/rsc.pdf
new file mode 100644
index 00000000000..bf79c437e15
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/rsc/rsc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/rsc/rsc.tex b/Master/texmf-dist/doc/latex/rsc/rsc.tex
new file mode 100644
index 00000000000..609b304d932
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/rsc/rsc.tex
@@ -0,0 +1,29 @@
+%%
+%% This is file `rsc.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% rsc.dtx (with options: `template')
+%% ----------------------------------------------------------------
+%% The rsc package - BibTeX and macro support for Royal Society
+%% of Chemistry style articles
+%% Maintained by Joseph A. Wright
+%% E-mail: joseph.wright@morningstar2.co.uk
+%% Released under the GNU General Public License
+%% See http://www.gnu.org/licenses/gpl.txt
+%% ----------------------------------------------------------------
+\documentclass[12pt,a4paper]{article}
+\usepackage[T1]{fontenc}
+\usepackage[english,UKenglish]{babel}
+\usepackage[super]{cite}
+\usepackage[version=3]{mhchem}
+\usepackage{rsc} % Package options are chapter, fl and cl
+\usepackage{bpchem,mcite}
+\begin{document}
+\bibliography{refs} % Change this to your reference database!
+\bibliographystyle{rsc-mc} % Change to rsc if you don't
+\end{document} % want multiple citations
+\endinput
+%%
+%% End of file `rsc.tex'.
diff --git a/Master/texmf-dist/source/latex/rsc/rsc.dtx b/Master/texmf-dist/source/latex/rsc/rsc.dtx
new file mode 100644
index 00000000000..750a3aaf83f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/rsc/rsc.dtx
@@ -0,0 +1,1596 @@
+% \iffalse
+%<*driver>
+% ----------------------------------------------------------------
+% The rsc package - BibTeX and macro support for Royal Society
+% of Chemistry style articles
+% Maintained by Joseph A. Wright
+% E-mail: joseph.wright@morningstar2.co.uk
+% Released under the GNU General Public License
+% See http://www.gnu.org/licenses/gpl.txt
+% ----------------------------------------------------------------
+\documentclass[a4paper]{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[english,UKenglish]{babel}
+\usepackage{rsc}
+\RecordChanges
+\OnlyDescription
+\GetFileInfo{rsc.sty}
+\title{The \textsf{rsc} package --- A \BibTeX\ style and utilities for
+ chemical documents\thanks{This file has version number \fileversion,
+ last revised \filedate.}}
+\author{Joseph Wright\thanks{E-mail: joseph.wright@morningstar2.co.uk}}
+\date{\filedate}
+\begin{document}
+\DocInput{rsc.dtx}
+\end{document}
+%</driver>
+% \fi
+% \CheckSum{169}
+% \changes{v1.00}{2006/11/08}{Initial release of packaged rsc.bst}
+% \maketitle
+%
+% \begin{abstract}
+%
+% The |rsc| package provides a \BibTeX\ style in accordance with the
+% requirements of the Royal Society of Chemistry. It was originally
+% based on the file |pccp.bst|, but also implements a number of styles
+% from the |achemso| package. It also provides a small number of
+% chemistry-related macros.
+%
+% \end{abstract}
+%
+% \section{Introduction}
+%
+% Although synthetic chemists do not, in the main, use \LaTeX\ for the
+% preparation of journal articles, it would be nice to be able to use
+% it for reports. The package |achemso| provides for a \BibTeX\ style
+% and other support for reports in the style of the American Chemical
+% Society. The aim of the |rsc| package is to provide similar support
+% for the style favoured by the Royal Society of Chemistry.
+%
+% In addition to providing the core |rsc.bst| file, this package also
+% generates |rsc-mc.bst|, |rsc.sty| |rsc.tex|. The file |rsc-mc.bst|
+% includes support for the |mcite| package, allowing the generation of
+% multiple references. The macro collection |rsc.sty| provides a few
+% useful features not catered for by other chemistry-related packages.
+% Finally, |rsc.tex| is a simple template for using the \BibTeX\
+% styles, including loading some other very useful chemistry packages.
+%
+% \section{Bibliography design decisions}
+%
+% Along with almost every \BibTeX\ style file, much of |rsc.bst| is
+% inherited from the original \BibTeX\ style files provided by Oren
+% Patashnik. However, while the original styles were designed to be
+% flexible, |rsc.bst| is designed to do a single job. Thus much of the
+% original flexibility has been stripped out to give a clearer design.
+% This has many be achieved by removing unused functions.
+%
+% The RSC give only minimal guidance on the design of references other
+% than for journal articles. Much of the format of other types of
+% reference is therefore based on current practice in \emph{Dalton
+% Trans.}, \emph{Chem. Commun.} and \emph{Org. Biomol. Chem.} Some of
+% this can be contradictory, so I have gone with what I feel is best.
+% Please e-mail me if you feel I have got things wrong!
+%
+% \section{Bibliography usage information}
+%
+% \subsection{Cross-references}
+%
+% Unlike most \BibTeX\ styles, |rsc.bst| does not support
+% cross-referencing between references. Using |crossref| will still
+% fill in missing information, but will not output ``see ref.~X''.
+% The reasoning is simple: this is not what the RSC do. It is not
+% really useful in chemical documents, and adds to the complexity of
+% the implementation.
+%
+% \subsection{Notes}
+%
+% As in |pccp.bst|, notes are not output for most reference types.
+% The reasoning here is that it is difficult to predict how people will
+% want to use notes. In chemistry, they may be used in several forms,
+% for example:
+% \begin{itemize}
+% \item See for example: I. V. Gostunskaya, V. S. Petrova, A. I.
+% Leonava, V. A. Mironava, M. Abubaker, and B. Kazanski,
+% \emph{Neftekhimiya}, 1967, \textbf{7}, 3--8.
+% \item I. V. Gostunskaya, V. S. Petrova, A. I. Leonava, V. A.
+% Mironava, M. Abubaker, and B. Kazanski, \emph{Neftekhimiya}, 1967,
+% \textbf{7}, 3--8 and references therein.
+% \item I. V. Gostunskaya, V. S. Petrova, A. I. Leonava, V. A.
+% Mironava, M. Abubaker, and B. Kazanski, \emph{Neftekhimiya}, 1967,
+% \textbf{7}, 3--8 (\emph{Chem. Abs.}, 1967, \textbf{67}, 21276t).
+% \end{itemize}
+% This is pretty much impossible to handle automatically, especially as
+% the format you want might change depending on the report you are
+% writing. So I would recommend using the |misc| type, and doing the
+% formatting by hand. If other people feel the behaviour is not the
+% best solution, please e-mail me.
+%
+% \subsection{Multiple citations}
+%
+% By default, \BibTeX\ does not handle producing compound references.
+% Although it is not perfect, the package |mcite| allows you to
+% produce references of the format:
+% \begin{enumerate}
+% \item K.~{\"O}fele, \emph{{J}. {O}rganomet. {C}hem.}, 1968,
+% \textbf{12}, P42--P43; C.~D. Abernethy, A.~H. Cowley and R.~A.
+% Jones, \emph{{J}. {O}rganomet. {C}hem.}, 2000, \textbf{596}, 3--5.
+% \end{enumerate}
+% Although the package only requires a minor modification of the
+% \BibTeX\ style file, it seems a good idea to provide one
+% automatically. The file |rsc-mc.bst| is produced with the necessary
+% modifications made to |rsc.bst|. Note that this requires
+% |\usepackage{mcite}| in your \LaTeX\ source.
+%
+% \subsection{Additional entry types}
+%
+% In order to ensure compatibility with the |achemso| package, the
+% non-standard entry types |remark|, |inpress| and |submitted| are
+% supported. The implementation is modelled on |achemso.bst|, but the
+% |notes| field is not used for |inpress| and |submitted|.
+%
+% \section{Additional macros}
+%
+% \subsection{Overview}
+%
+% The macros provide by |rsc.sty| are all very simple. They simply
+% fill in a few gaps in the available support for chemists in \LaTeX.
+% Most are built on other, more powerful, packages. As a result, it
+% is best to read the documents for the ``parent'' package to alter the
+% handling of the macros given here.
+%
+% \subsection{Additional units}
+%
+% The |unitsdef| package provides a great number of easy to use unit
+% commands, and handles spacing between numbers and units very well.
+% However, it misses out a few useful units for chemistry. The
+% |unitsdef| package is loaded by |rsc.sty|, and is then used to
+% provide 5 additional units.
+% \DescribeMacro{\Hz}
+% The most obvious of these is \cmd{\Hz}, which simply gives \Hz. The
+% |unitsdef| package only defines \cmd{\hertz}, which is not as
+% obvious.
+% \DescribeMacro{\mmHg}
+% The command \cmd{\mmHg} has a non-breaking thin space, leading to
+% \mmHg.
+% \DescribeMacro{\molar}
+% \DescribeMacro{\Molar}
+% Two related commands are given for concentration: \cmd{\molar}
+% gives \molar, whilst \cmd{\Molar} gives \Molar.
+% \DescribeMacro{\cmc}
+% Finally, the command \cmd{\cmc} is provided for generating \cmc. All
+% space correctly with numbers, so inputting |10\cmc| gives 10\cmc,
+% with a non-breaking space.
+%
+%\subsection{The standard state symbol}
+%
+% \DescribeMacro{\standardstate}
+% Related to, but not exactly a unit is the \cmd{\standardstate}
+% command. This generates the tricky \standardstate\ symbol, letting
+% you put |$\Delta S \standardstate$| to generate $\Delta S
+%\standardstate$. Note that this is safe in text and maths mode.
+%
+% \subsection{Alkyl radicals}
+%
+% \DescribeMacro{\iPr}
+% \DescribeMacro{\iBu}
+% \DescribeMacro{\tBu}
+% There are a few alkyl radicals, that come up all of the time. No one
+% seems to have put these into a package, so they are provided here.
+% As you would expect, \cmd{\iPr} gives \iPr, \cmd{iBu} gives \iBu\ and
+% \cmd{\tBu} gives \tBu. These are in the style most commonly seen in
+% RSC journals.
+%
+% \subsection{Floating schemes}
+%
+% A number of approaches can be taken to redefining all float
+% types in a consistent manner (I know, I've tried several!).
+% In the end, the easiest method seems to be to use an ``internal''
+% float type in the package, and then define a related environment to
+% present to the user. As a result, this part of the package is by
+% far the most complex.
+%
+% \DescribeEnv{scheme}
+% The |float| package allows new float types to be defined. This is
+% used to create a |scheme| environment, which works very much like the
+% |figure| environment. In contrast to the \LaTeX\ default, all
+% float types are defined to be ``here'' if possible by default,
+% then float to the top of the page. This is usually what chemists
+% expect to happen. All the float types are also defined to take one
+% optional argument to over-ride the provided placement behaviour.
+% The most likely use is to put |[H]| to force a float to be ``here'',
+% absolutely. So for example, we might have:
+% \begin{verbatim}
+% Some text about \ref{sch1}, which will appear directly under this
+% paragraph and will not float at all!
+% \begin{scheme}[H]
+% \includegraphics{scheme1}%
+% \caption{An exciting reaction, placed HERE}.%
+% \label{sch1}
+% \end{scheme}
+% \end{verbatim}
+%
+% In addition to providing the floats, referencing to schemes, figures
+% and tables is formatted using the |varioref| package, to give
+% references such as ``Scheme 1'', ``Table 2'', \emph{etc.} from
+% simple \cmd{\ref} commands.
+%
+% \DescribeMacro{\listofschemes}
+% A listing command for schemes \cmd{\lisofschemes}, is provided in
+% analogy to \cmd{\listoffigures}. It takes one optional argument to
+% alter the title of the list. The \cmd{\listoffigures} and
+%\cmd{\listoftables} commands are redefined to act in the same way.
+%
+% A number of package options are provided to alter the handling of
+% the floating environments. By default, the float contents are
+% centred on the page. The option |floatleft| (also shortened to |fl|)
+% is available to produce the standard \LaTeX\ behaviour of
+% left-aligned floats. Captions are also centred by default, but may
+% be left-aligned using the |captionleft| (|cl|) option. The format of
+% the labels once again follows the RSC house style. Finally, schemes
+% may be numbered within chapters by using the |chapter| option.
+% This is obviously provided for theses and other very long documents.
+%
+% \iffalse
+%<*template>
+% \fi
+%
+% \section{A \LaTeX\ template}
+%
+% This is a very simple template for chemistry-related documents. The
+% |cite| package is loaded to give the correct appearance for
+% reference numbers. The |babel| system is used to give UK hyphenation.
+% As well as the macros given in this package as |rsc|, the packages
+% |bpchem| and |mhchem| are loaded, as both provide useful support for
+% the chemist.
+% \begin{macrocode}
+\documentclass[12pt,a4paper]{article}
+\usepackage[T1]{fontenc}
+\usepackage[english,UKenglish]{babel}
+\usepackage[super]{cite}
+\usepackage[version=3]{mhchem}
+\usepackage{rsc} % Package options are chapter, fl and cl
+\usepackage{bpchem,mcite}
+\begin{document}
+\bibliography{refs} % Change this to your reference database!
+\bibliographystyle{rsc-mc} % Change to rsc if you don't
+\end{document} % want multiple citations
+% \end{macrocode}
+% \iffalse
+%</template>
+% \fi
+%
+% \StopEventually{}
+%
+% \iffalse
+%<*package>
+% \fi
+% \section{The package code}
+%
+% The style file |rsc.bst| stands on its own, and |rsc-mc.bst| only
+% needs the |mcite| in order to function correctly. However, a few
+% extra commands are useful for chemists, and are not available
+% elsewhere (to my knowledge). So this seems a good place to define
+% them. The code is all very simple, but for the interested reader
+% is provided here.
+%
+% First of all, the package identifies itself and loads other packages
+% needed to function.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{rsc}[2006/11/08 v1.0 Useful chemistry functions]
+\RequirePackage{unitsdef,graphicx,amssymb,fixltx2e,float,varioref}
+% \end{macrocode}
+%
+% The package provides three options, all of which relate to float
+% handling. The necessary precautions are taken here.
+% \begin{macrocode}
+\newif\ifRSC@floatcentre\RSC@floatcentretrue
+\DeclareOption{floatleft}{\global\RSC@floatcentrefalse}
+\DeclareOption{fl}{\global\RSC@floatcentrefalse}
+\newif\ifRSC@captioncentre\RSC@captioncentretrue
+\DeclareOption{captionleft}{\global\RSC@captioncentrefalse}
+\DeclareOption{cl}{\global\RSC@captioncentrefalse}
+\newif\ifRSC@chapter\RSC@chapterfalse
+\DeclareOption{chapter}{\global\RSC@chaptertrue}
+\ProcessOptions
+% \end{macrocode}
+%
+% A few additional unit types are provides, which the |unitsdef|
+% package omits for some reason.
+% \begin{macrocode}
+\newunit{\cubiccentimeter}{\cm\unitsuperscript{3}}
+\newcommand*{\cmc}{\cubiccentimeter}
+\newcommand*{\Hz}{\hertz}
+\newunit{\Molar}{\textsc{m}}
+\newunit{\molar}{\mole\unitsep\dm\unitsuperscript{--3}}
+\newunit{\mmHg}{mm\unitsep{}Hg}
+% \end{macrocode}
+% In a very similar vein, the ``standard state'' symbol is handy. This
+% is produced by rotating a symbol from the AMS set. Note that the
+% rotation angle here has been carefully checked, but is set by eye!
+% \begin{macrocode}
+\newcommand*{\standardstate}%
+ {\textsuperscript{\rotatebox[origin=c]{140.8}%
+ {\ensuremath{\varnothing}}}}
+% \end{macrocode}
+%
+% Next we provide alkyl radical symbols, in a convenient form.
+% \begin{macrocode}
+\newcommand*{\iPr}{Pr\textsuperscript{i}}
+\newcommand*{\iBu}{Bu\textsuperscript{i}}
+\newcommand*{\tBu}{Bu\textsuperscript{t}}
+% \end{macrocode}
+%
+% The final task is to create a new float for chemical schemes.
+% In order to maintain consistency, we also redefine the table and
+% figure environments. This is done by first creating ``internal''
+% float types, then formatting these. The need for numbering
+% within chapters is also handled at this stage.
+% If there are no chapters the fall-back is simply to ignore the
+% request!
+% \begin{macrocode}
+\ifRSC@chapter
+ \ifx\chapter\@undefined
+ \@latex@warning{No chapters in this document}
+ \newfloat{Scheme}{htbp}{los}
+ \newfloat{Figure}{htbp}{lof}
+ \newfloat{Table}{htbp}{lot}
+ \else
+ \newfloat{Scheme}{htbp}{los}[chapter]
+ \newfloat{Figure}{htbp}{lof}[chapter]
+ \newfloat{Table}{htbp}{lot}[chapter]
+ \fi
+\else
+ \newfloat{Scheme}{htbp}{los}
+ \newfloat{Figure}{htbp}{lof}
+ \newfloat{Table}{htbp}{lot}
+\fi
+% \end{macrocode}
+% Next the correct naming is set up for the captions.
+% Note that figures are referred to simply as ``Fig.''
+% \begin{macrocode}
+\floatname{Scheme}{Scheme}
+\floatname{Table}{Table}
+\floatname{Figure}{Fig.}
+% \end{macrocode}
+% The format of the captions needs to be altered to look
+% right. This is achieved by redefining \cmd{\floatc@plain}.
+% We first check if we are asked for left-aligned labels, and act
+% accordingly.
+% \begin{macrocode}
+\ifRSC@captioncentre
+ \renewcommand\floatc@plain[2]%
+ {\setbox\@tempboxa\hbox{\textbf{{\@fs@cfont #1}}\quad #2}%
+ \ifdim\wd\@tempboxa>\hsize {\textbf{\@fs@cfont #1}}\quad #2\par
+ \else\hbox to\hsize{\hfil\box\@tempboxa\hfil}\fi}
+\else
+ \renewcommand\floatc@plain[2]{\textbf{{\@fs@cfont #1}}\quad #2}
+\fi
+% \end{macrocode}
+% We now test if we want centred or left-aligned floating content.
+% This is achieved by using environments with the correct alignment
+% options. We allow an optional argument to cover the use of the |[H]|
+% placement option.
+% \begin{macrocode}
+\ifRSC@floatcentre
+ \newenvironment{scheme}[1][htbp]{\begin{Scheme}[#1]\centering}
+ {\end{Scheme}}
+ \renewenvironment{figure}[1][htbp]{\begin{Figure}[#1]\centering}
+ {\end{Figure}}
+ \renewenvironment{table}[1][htbp]{\begin{Table}[#1]\centering}
+ {\end{Table}}
+\else
+ \newenvironment{scheme}[1][htbp]{\begin{Scheme}[#1]\flushleft}
+ {\end{Scheme}}
+ \renewenvironment{figure}[1][htbp]{\begin{Figure}[#1]\flushleft}
+ {\end{Figure}}
+ \renewenvironment{table}[1][htbp]{\begin{Table}[#1]\flushleft}
+ {\end{Table}}
+\fi
+% \end{macrocode}
+% A new |\listofschemes| command is needed, in analogy to
+% |\listoffigures|. An optional argument is provided so the
+% list can be renamed easily. The related commands for tables and
+% figures are redefined, as we are using |Figure| not |figure| and
+% |Table| not |table|!
+% \begin{macrocode}
+\newcommand*{\listofschemes}[1][List of Schemes]%
+ {\listof{Scheme}{#1}}
+\renewcommand*{\listoffigures}[1][List of Figures]%
+ {\listof{Figure}{#1}}
+\renewcommand*{\listoftables}[1][List of Tables]%
+ {\listof{Table}{#1}}
+% \end{macrocode}
+% Finally, the naming for cross-references is sorted out properly,
+% using the |varioref| package. The correct format is that the
+% references start with capital letters. Notice that figures are a bit
+% different from everything else!
+% \begin{macrocode}
+\labelformat{Scheme}{Scheme~#1}
+\labelformat{Figure}{Fig.~#1}
+\labelformat{Table}{Table~#1}
+% \end{macrocode}
+% \iffalse
+%</package>
+% \fi
+% \section{The style files}
+%
+% Much of the following is lifted more or less directly from
+% the standard style files, the |custom-bib| package or \emph{Taming
+% the BeaST}. Commenting is therefore limited to the notable
+% alterations. Note that most of the code is shared by |rsc.bst| and
+% |rsc-mc.bst|.
+% \iffalse
+%<*bib|bib-mc>
+% \fi
+% \begin{macrocode}
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence }
+INTEGERS { after.block after.item author.or.editor }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+ #4 'after.item :=
+}
+
+FUNCTION {add.comma}
+{ duplicate$
+ #-1 #1 substring$ "}" =
+ { #-2 #1024 substring$ ";} " * }
+ { ", " * }
+ if$
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.comma 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 {output.bibitem}
+{ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+% \end{macrocode}
+% \iffalse
+%</bib|bib-mc>
+% \fi
+% The |fin.entry| function is dependant on whether |mcite| is in use.
+% First the standard function is given.
+% \iffalse
+%<*bib>
+% \fi
+% \begin{macrocode}
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+% \end{macrocode}
+% \iffalse
+%</bib>
+% \fi
+% Then the alternative for use in |rsc-mc|.
+% \iffalse
+%<*bib-mc>
+% \fi
+% \begin{macrocode}
+FUNCTION {fin.entry}
+{ write$
+ "\relax" write$
+ newline$
+ "\relax" write$
+}
+
+% \end{macrocode}
+% \iffalse
+%</bib-mc>
+% \fi
+% The shared code now continues.
+% \iffalse
+%<*bib|bib-mc>
+% \fi
+% \begin{macrocode}
+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$
+}
+
+% \end{macrocode}
+% As in |custom-bib|, the bulk of the literal stings are collected up
+% here to make editing easier.
+% \begin{macrocode}
+FUNCTION {bbl.chapter}
+{ "ch." }
+
+FUNCTION {bbl.ed}
+{ "ed. " }
+
+FUNCTION {bbl.edition}
+{ "edn." }
+
+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.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" }
+
+% \end{macrocode}
+% The following is lifted from |custom-bib|, and gives automatic
+% ordinal numbers from plain input.
+% \begin{macrocode}
+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$
+}
+% \end{macrocode}
+% The next two functions are again from |custom-bib|. They are used
+% later for formatting patent numbers.
+% \begin{macrocode}
+
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { 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.num
+ { 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 :=
+ { namesleft #0 > }
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "" * }
+ 'skip$
+ if$
+ t "others" =
+ { " \emph{et~al.}" * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { #1 'author.or.editor :=
+ author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { #2 'author.or.editor :=
+ bbl.ed *
+ editor format.names
+ }
+ if$
+}
+
+% \end{macrocode}
+% Two functions from Nicolas Markey for determining whether an
+% arbitrary string is an integer.
+% \begin{macrocode}
+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$
+ "" =
+}
+% \end{macrocode}
+% |n.separate| is given in the |custom-bib| package. The following
+% function is modified to separate out a number of any length into
+% digit groups, \emph{e.g.} 12345 turns into 12\,345, 1234567 in
+% 1\,234\,567 but 1234 or a12345 are left alone.
+% \begin{macrocode}
+FUNCTION {n.separate.multi}
+{ 't :=
+ ""
+ #0 'numnames :=
+% \end{macrocode}
+% This is the key line: the test is that the sting is both
+% at least 5 digits long and is an integer.
+% \begin{macrocode}
+ t text.length$ #4 > t is.a.number and
+ {
+ { t empty$ not }
+ { t #-1 #1 substring$ is.num
+ { 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.title.noemph}
+{ title empty$
+ { "" }
+ { title }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title emphasize }
+ if$
+}
+
+
+FUNCTION {format.booktitle}
+{ booktitle title empty$
+ { "" }
+ { booktitle emphasize }
+ 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$
+ { "" }
+ { year }
+ 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.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "no." }
+ { "No." }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "There's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ 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$
+}
+
+% \end{macrocode}
+% The next function is used for page numbers which be be present and
+% have ``p.'' or ``pp.'' added.
+% \begin{macrocode}
+
+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$
+}
+% \end{macrocode}
+% Even if no volume is given, the RSC does not use ``p.'' or
+% ``pp.'' for journal articles. So two page formatting functions
+% are needed.
+% \begin{macrocode}
+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$
+}
+
+% \end{macrocode}
+% Patent numbers have special formatting, including
+% digit grouping.
+% \begin{macrocode}
+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 boldface field.or.null
+ duplicate$ empty$
+ { pop$ format.pages.required }
+ { ", " * 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$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "in " booktitle emphasize * }
+ { "in " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.title.ed}
+{ title empty$
+ { "" }
+ { editor empty$
+ { " in " title emphasize * }
+ { " in " title emphasize * ", " * format.editors * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.booktitle.ed}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { " in " booktitle emphasize * }
+ { " in " booktitle emphasize * ", " * format.editors * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.pub.address}
+{ publisher empty$
+ { "" }
+ { address empty$
+ { publisher }
+ { publisher ", " * address *}
+ if$
+ }
+ 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$
+}
+
+% \end{macrocode}
+% The main style functions are now given in alphabetical
+% order. Cross-referenced functions are given at the end.
+% Notice that the \BibTeX\ |crossref| system is not used, as
+% this is not how the RSC give references (it is not really needed
+% for chemistry).
+% \begin{macrocode}
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ journal emphasize "journal" output.check
+ format.date "year" output.check
+ volume empty$
+ { ""
+ format.pages.nopp output
+ }
+ { format.vol.pages output }
+ if$
+ fin.entry
+}
+
+% \end{macrocode}
+% For a book, we have to have an editor or an author. This is
+% tested for here. If both are present, only the author is used.
+% \begin{macrocode}
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.title "title" output.check
+ editor empty$
+ { "Need either an author or editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull
+ "author and editor" editor either.or.check
+ format.title "title" output.check
+ }
+ if$
+ format.pub.address "publisher" output.check
+ format.edition output
+ format.bdate "year" output.check
+ format.bvolume output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ format.title "title" output.check
+ howpublished output
+ address output
+ format.date output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.title "title" output.check
+ editor empty$
+ { "Need at least an author or an editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull
+ format.in.title.ed "title" output.check
+ }
+ if$
+ format.pub.address "publisher" output.check
+ format.edition output
+ format.bdate "year" output.check
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ fin.entry
+}
+
+% \end{macrocode}
+% As the RSC do not use chapter titles, this is almost
+% identical to inbook. We only have to swap the field 'title'
+% for 'booktitle'.
+% \begin{macrocode}
+FUNCTION {incollection}
+{ output.bibitem
+ author empty$
+ { format.booktitle "booktitle" output.check
+ editor empty$
+ { "Need at least an author or an editor for " cite$ * warning$ }
+ { "" format.editors * "editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull
+ format.in.booktitle.ed "booktitle" output.check
+ }
+ if$
+ format.pub.address "publisher" output.check
+ format.edition output
+ format.bdate "year" output.check
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ fin.entry
+}
+
+% \end{macrocode}
+% A non-standard type, for compatibility with |achmeso|.
+% \begin{macrocode}
+FUNCTION {inpress}
+{ output.bibitem
+ format.authors "author" output.check
+ journal emphasize "journal" output.check
+ bbl.inpress output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ booktitle "booktitle" output.check
+ address output
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+ 'skip$
+ { organization output.nonnull
+ address output
+ }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ format.title "title" output.check
+ author empty$
+ { organization empty$
+ { address output }
+ 'skip$
+ if$
+ }
+ { organization output
+ address output
+ }
+ if$
+ format.edition output
+ format.date output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ bbl.msc emphasize format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ format.title output
+ howpublished output
+ format.bdate output
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+% \end{macrocode}
+% Although patent is not a standard \BibTeX\ entry type, it is
+% very useful to have it available. It is also aliased as
+% ``other''.
+% \begin{macrocode}
+FUNCTION {patent}
+{ output.bibitem
+ organization empty$
+ { format.authors "author and organization" output.check }
+ { author empty$
+ { organization }
+ { format.authors organization paren space.connect }
+ if$
+ "author and organization" output.check
+ }
+ if$
+ journal emphasize "journal" output.check
+ format.pages.patent "pages" output.check
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ bbl.phd emphasize format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.title.noemph "title" output.check
+ address output
+ format.date "year" output.check
+ fin.entry
+}
+
+% \end{macrocode}
+% A non-standard type, for compatibility with |achmeso|.
+% \begin{macrocode}
+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
+ format.title "title" output.check
+ institution
+% \end{macrocode}
+% At this point, we combined the institution,
+% report type and number as the RSC style suggests.
+% \begin{macrocode}
+ type empty$
+ 'bbl.techreport
+ 'type
+ if$
+ space.connect
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+ output.nonnull
+ format.pub.address output
+ format.date "year" output.check
+ fin.entry
+}
+
+% \end{macrocode}
+% For unpublished works, the note is used unless
+% there is a DOI.
+% \begin{macrocode}
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ journal empty$
+ 'skip$
+ { journal emphasize "journal" output.check }
+ if$
+ doi empty$
+ { note output }
+ { format.date output
+ "DOI:" doi tie.or.space.connect output }
+ if$
+ fin.entry
+ empty.doi.note
+}
+
+% \end{macrocode}
+% The following are all cross-referenced to
+% other types, so are grouped in one block.
+% \begin{macrocode}
+FUNCTION {conference} {inproceedings}
+
+FUNCTION {other} {patent}
+
+FUNCTION {default.type} {misc}
+
+MACRO {jan} {"January"}
+MACRO {feb} {"February"}
+MACRO {mar} {"March"}
+MACRO {apr} {"April"}
+MACRO {may} {"May"}
+MACRO {jun} {"June"}
+MACRO {jul} {"July"}
+MACRO {aug} {"August"}
+MACRO {sep} {"September"}
+MACRO {oct} {"October"}
+MACRO {nov} {"November"}
+MACRO {dec} {"December"}
+
+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}
+
+% \end{macrocode}
+% \iffalse
+%</bib|bib-mc>
+% \fi
+% Once again, there is a variation in what is needed, depending
+% on whether |mcite| is to be used. First the standard functon.
+% \iffalse
+%<*bib>
+% \fi
+% \begin{macrocode}
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" * write$ newline$
+}
+
+% \end{macrocode}
+% \iffalse
+%</bib>
+% \fi
+% Then the alternative for |mcite|.
+% \iffalse
+%<*bib-mc>
+% \fi
+% \begin{macrocode}
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{mcbibliography}{" longest.label * "}" * write$ newline$
+}
+
+% \end{macrocode}
+% \iffalse
+%</bib-mc>
+% \fi
+% Back with shared code.
+% \iffalse
+%<*bib|bib-mc>
+%\fi
+% \begin{macrocode}
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+% \end{macrocode}
+% \iffalse
+%</bib|bib-mc>
+% \fi
+% The final variations for |mcite|.
+% \iffalse
+%<*bib>
+% \fi
+% \begin{macrocode}
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+% \end{macrocode}
+% \iffalse
+%</bib>
+% \fi
+% |mcite| version.
+% \iffalse
+%<*bib-mc>
+% \fi
+% \begin{macrocode}
+FUNCTION {end.bib}
+{ newline$
+ "\end{mcbibliography}" write$ newline$
+}
+
+% \end{macrocode}
+% \iffalse
+%</bib-mc>
+% \fi
+% Finish off
+% \iffalse
+%<*bib|bib-mc>
+% \fi
+% \begin{macrocode}
+EXECUTE {end.bib}
+% \end{macrocode}
+% \iffalse
+%</bib|bib-mc>
+% \fi
+% Phew, all done!
+% \PrintChanges
+% \Finale
+% \end{document}
+\endinput
diff --git a/Master/texmf-dist/source/latex/rsc/rsc.ins b/Master/texmf-dist/source/latex/rsc/rsc.ins
new file mode 100644
index 00000000000..4f2c40b815a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/rsc/rsc.ins
@@ -0,0 +1,37 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% rsc is free software; you can redistribute it and/or modify it
+% under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2, or (at your option)
+% any later version.
+%
+% rsc is distributed in the hope that it will be useful, but
+% WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\input docstrip.tex
+\preamble
+ ----------------------------------------------------------------
+ The rsc package - BibTeX and macro support for Royal Society
+ of Chemistry style articles
+ Maintained by Joseph A. Wright
+ E-mail: joseph.wright@morningstar2.co.uk
+ Released under the GNU General Public License
+ See http://www.gnu.org/licenses/gpl.txt
+ ----------------------------------------------------------------
+\endpreamble
+\Msg{Generating package file rsc.bst:}
+\generateFile{rsc.bst}{f}{\from{rsc.dtx}{bib}}
+\Msg{Generating package file rsc-mc.bst:}
+\generateFile{rsc-mc.bst}{f}{\from{rsc.dtx}{bib-mc}}
+\Msg{Generating package file rsc.sty:}
+\generateFile{rsc.sty}{f}{\from{rsc.dtx}{package}}
+\Msg{Generating package file rsc.tex:}
+\generateFile{rsc.tex}{f}{\from{rsc.dtx}{template}}
+\endbatchfile
diff --git a/Master/texmf-dist/tex/latex/rsc/rsc.sty b/Master/texmf-dist/tex/latex/rsc/rsc.sty
new file mode 100644
index 00000000000..30d162cfa96
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/rsc/rsc.sty
@@ -0,0 +1,93 @@
+%%
+%% This is file `rsc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% rsc.dtx (with options: `package')
+%% ----------------------------------------------------------------
+%% The rsc package - BibTeX and macro support for Royal Society
+%% of Chemistry style articles
+%% Maintained by Joseph A. Wright
+%% E-mail: joseph.wright@morningstar2.co.uk
+%% Released under the GNU General Public License
+%% See http://www.gnu.org/licenses/gpl.txt
+%% ----------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{rsc}[2006/11/08 v1.0 Useful chemistry functions]
+\RequirePackage{unitsdef,graphicx,amssymb,fixltx2e,float,varioref}
+\newif\ifRSC@floatcentre\RSC@floatcentretrue
+\DeclareOption{floatleft}{\global\RSC@floatcentrefalse}
+\DeclareOption{fl}{\global\RSC@floatcentrefalse}
+\newif\ifRSC@captioncentre\RSC@captioncentretrue
+\DeclareOption{captionleft}{\global\RSC@captioncentrefalse}
+\DeclareOption{cl}{\global\RSC@captioncentrefalse}
+\newif\ifRSC@chapter\RSC@chapterfalse
+\DeclareOption{chapter}{\global\RSC@chaptertrue}
+\ProcessOptions
+\newunit{\cubiccentimeter}{\cm\unitsuperscript{3}}
+\newcommand*{\cmc}{\cubiccentimeter}
+\newcommand*{\Hz}{\hertz}
+\newunit{\Molar}{\textsc{m}}
+\newunit{\molar}{\mole\unitsep\dm\unitsuperscript{--3}}
+\newunit{\mmHg}{mm\unitsep{}Hg}
+\newcommand*{\standardstate}%
+ {\textsuperscript{\rotatebox[origin=c]{140.8}%
+ {\ensuremath{\varnothing}}}}
+\newcommand*{\iPr}{Pr\textsuperscript{i}}
+\newcommand*{\iBu}{Bu\textsuperscript{i}}
+\newcommand*{\tBu}{Bu\textsuperscript{t}}
+\ifRSC@chapter
+ \ifx\chapter\@undefined
+ \@latex@warning{No chapters in this document}
+ \newfloat{Scheme}{htbp}{los}
+ \newfloat{Figure}{htbp}{lof}
+ \newfloat{Table}{htbp}{lot}
+ \else
+ \newfloat{Scheme}{htbp}{los}[chapter]
+ \newfloat{Figure}{htbp}{lof}[chapter]
+ \newfloat{Table}{htbp}{lot}[chapter]
+ \fi
+\else
+ \newfloat{Scheme}{htbp}{los}
+ \newfloat{Figure}{htbp}{lof}
+ \newfloat{Table}{htbp}{lot}
+\fi
+\floatname{Scheme}{Scheme}
+\floatname{Table}{Table}
+\floatname{Figure}{Fig.}
+\ifRSC@captioncentre
+ \renewcommand\floatc@plain[2]%
+ {\setbox\@tempboxa\hbox{\textbf{{\@fs@cfont #1}}\quad #2}%
+ \ifdim\wd\@tempboxa>\hsize {\textbf{\@fs@cfont #1}}\quad #2\par
+ \else\hbox to\hsize{\hfil\box\@tempboxa\hfil}\fi}
+\else
+ \renewcommand\floatc@plain[2]{\textbf{{\@fs@cfont #1}}\quad #2}
+\fi
+\ifRSC@floatcentre
+ \newenvironment{scheme}[1][htbp]{\begin{Scheme}[#1]\centering}
+ {\end{Scheme}}
+ \renewenvironment{figure}[1][htbp]{\begin{Figure}[#1]\centering}
+ {\end{Figure}}
+ \renewenvironment{table}[1][htbp]{\begin{Table}[#1]\centering}
+ {\end{Table}}
+\else
+ \newenvironment{scheme}[1][htbp]{\begin{Scheme}[#1]\flushleft}
+ {\end{Scheme}}
+ \renewenvironment{figure}[1][htbp]{\begin{Figure}[#1]\flushleft}
+ {\end{Figure}}
+ \renewenvironment{table}[1][htbp]{\begin{Table}[#1]\flushleft}
+ {\end{Table}}
+\fi
+\newcommand*{\listofschemes}[1][List of Schemes]%
+ {\listof{Scheme}{#1}}
+\renewcommand*{\listoffigures}[1][List of Figures]%
+ {\listof{Figure}{#1}}
+\renewcommand*{\listoftables}[1][List of Tables]%
+ {\listof{Table}{#1}}
+\labelformat{Scheme}{Scheme~#1}
+\labelformat{Figure}{Fig.~#1}
+\labelformat{Table}{Table~#1}
+\endinput
+%%
+%% End of file `rsc.sty'.
diff --git a/Master/texmf-dist/tpm/rsc.tpm b/Master/texmf-dist/tpm/rsc.tpm
index adea065cf1b..375f082070e 100644
--- a/Master/texmf-dist/tpm/rsc.tpm
+++ b/Master/texmf-dist/tpm/rsc.tpm
@@ -12,10 +12,21 @@
<TPM:Size>26808</TPM:Size>
<TPM:License></TPM:License>
<TPM:Build/>
- <TPM:RunFiles size="26808">
+ <TPM:RunFiles size="39341">
+texmf-dist/bibtex/bst/rsc/rsc-mc.bst
texmf-dist/bibtex/bst/rsc/rsc.bst
+texmf-dist/tex/latex/rsc/rsc.sty
texmf-dist/tpm/rsc.tpm
</TPM:RunFiles>
+ <TPM:DocFiles size="168060">
+texmf-dist/doc/latex/rsc/README
+texmf-dist/doc/latex/rsc/rsc.pdf
+texmf-dist/doc/latex/rsc/rsc.tex
+ </TPM:DocFiles>
+ <TPM:SourceFiles size="42227">
+texmf-dist/source/latex/rsc/rsc.dtx
+texmf-dist/source/latex/rsc/rsc.ins
+ </TPM:SourceFiles>
<TPM:Provides>Package/rsc</TPM:Provides>
</rdf:Description>
</rdf:RDF>
diff --git a/Master/texmf/lists/rsc b/Master/texmf/lists/rsc
index 157b74e2afa..63515ec080e 100644
--- a/Master/texmf/lists/rsc
+++ b/Master/texmf/lists/rsc
@@ -1,6 +1,11 @@
-
-
+texmf-dist/doc/latex/rsc/README
+texmf-dist/doc/latex/rsc/rsc.pdf
+texmf-dist/doc/latex/rsc/rsc.tex
+texmf-dist/source/latex/rsc/rsc.dtx
+texmf-dist/source/latex/rsc/rsc.ins
+texmf-dist/bibtex/bst/rsc/rsc-mc.bst
texmf-dist/bibtex/bst/rsc/rsc.bst
+texmf-dist/tex/latex/rsc/rsc.sty
texmf-dist/tpm/rsc.tpm
texmf/lists/rsc