From ae9b91f93a72faaf468c54d28dc3e09fccd562d9 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Wed, 3 Jan 2007 01:19:34 +0000
Subject: rsc update (1jan07)

git-svn-id: svn://tug.org/texlive/trunk@3106 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/bibtex/bst/rsc/rsc.bst | 295 ++++++++++++++-----------------
 1 file changed, 130 insertions(+), 165 deletions(-)

(limited to 'Master/texmf-dist/bibtex/bst/rsc/rsc.bst')

diff --git a/Master/texmf-dist/bibtex/bst/rsc/rsc.bst b/Master/texmf-dist/bibtex/bst/rsc/rsc.bst
index 82b778ac3e9..012d9609d01 100644
--- a/Master/texmf-dist/bibtex/bst/rsc/rsc.bst
+++ b/Master/texmf-dist/bibtex/bst/rsc/rsc.bst
@@ -4,10 +4,10 @@
 %%
 %% The original source files were:
 %%
-%% rsc.dtx  (with options: `bib')
+%% rsc.dtx  (with options: `bib,rsc')
 %%  ----------------------------------------------------------------
 %%  The rsc package - BibTeX and macro support for Royal Society
-%%  of Chemistry style articles
+%%  of Chemistry and Wiley chemistry articles
 %%  Maintained by Joseph A. Wright
 %%  E-mail: joseph.wright@morningstar2.co.uk
 %%  Released under the GNU General Public License
@@ -51,34 +51,29 @@ FUNCTION {init.state.consts}
 }
 
 FUNCTION {add.comma}
-{ duplicate$
-  #-1 #1 substring$ "}" =
-      { #-2 #1024 substring$ ";} " * }
-      { ", " * }
-  if$
-}
+{ ", " * }
 
 STRINGS { s t }
 
 FUNCTION {output.nonnull}
 { 's :=
   output.state mid.sentence =
-    { ", " * write$ }
+    { add.comma write$ }
     { output.state after.block =
-    { add.comma write$
-      newline$
-      "\newblock " write$
-    }
-    { output.state before.all =
-        'write$
-        { output.state after.item =
-        { " " * write$ }
-          { add.period$ " " * write$ }
+      { add.comma write$
+        newline$
+        "\newblock " write$
+      }
+      { output.state before.all =
+          'write$
+          { output.state after.item =
+            { " " * write$ }
+            { add.period$ " " * write$ }
+          if$
+          }
         if$
         }
-        if$
-      }
-    if$
+      if$
       mid.sentence 'output.state :=
     }
   if$
@@ -109,6 +104,7 @@ FUNCTION {output.bibitem}
   ""
   before.all 'output.state :=
 }
+
 FUNCTION {fin.entry}
 { add.period$
   write$
@@ -160,15 +156,24 @@ FUNCTION {paren}
   if$
 }
 
+FUNCTION {bbl.and}
+{ "and" }
+
 FUNCTION {bbl.chapter}
 { "ch." }
 
-FUNCTION {bbl.ed}
-{ "ed. " }
+FUNCTION {bbl.editor}
+{ "ed." }
 
 FUNCTION {bbl.edition}
 { "edn." }
 
+FUNCTION {bbl.etal}
+{ "et~al." emphasize }
+
+FUNCTION {bbl.in}
+{ "in" }
+
 FUNCTION {bbl.inpress}
 { "in press" }
 
@@ -191,7 +196,7 @@ FUNCTION {bbl.techreport}
 { "Technical Report" }
 
 FUNCTION {bbl.volume}
-{ "vol."}
+{ "vol." }
 
 FUNCTION {bbl.first}
 { "1st" }
@@ -241,10 +246,20 @@ FUNCTION {eng.ord}
    if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
+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}
@@ -253,7 +268,7 @@ FUNCTION {extract.num}
   { t empty$ not }
   { t #1 #1 substring$
     t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
+    duplicate$ is.a.number
       { s swap$ * 's := }
       { pop$ "" 't := }
     if$
@@ -268,8 +283,7 @@ FUNCTION {extract.num}
 FUNCTION {bibinfo.check}
 { swap$
   duplicate$ missing$
-    {
-      pop$ pop$
+    { pop$ pop$
       ""
     }
     { duplicate$ empty$
@@ -296,7 +310,7 @@ FUNCTION {convert.edition}
                 { bbl.fourth 't := }
                 { s "fifth" = s "5" = or
                     { bbl.fifth 't := }
-                    { s #1 #1 substring$ is.num
+                    { s #1 #1 substring$ is.a.number
                         { s eng.ord 't := }
                         { edition 't := }
                       if$
@@ -322,9 +336,7 @@ FUNCTION {tie.or.space.connect}
 }
 
 FUNCTION {space.connect}
-{ " "
-  swap$ * *
-}
+{ " " swap$ * * }
 
 INTEGERS { nameptr namesleft numnames }
 
@@ -334,26 +346,26 @@ FUNCTION {format.names}
   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$
+      { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+        nameptr #1 >
+          { namesleft #1 >
+            { add.comma t * }
+            { numnames #2 >
+              { "" * }
+              'skip$
             if$
-          t "others" =
-          { " \emph{et~al.}" * }
-          { " and " * t * }
+            t "others" =
+              { bbl.etal space.connect }
+              { bbl.and space.connect t space.connect }
             if$
-        }
-      if$
-      }
-    't
+            }
+          if$
+          }
+        't
       if$
       nameptr #1 + 'nameptr :=
       namesleft #1 - 'namesleft :=
-    }
+      }
   while$
 }
 
@@ -369,28 +381,12 @@ FUNCTION {format.editors}
 { editor empty$
     { "" }
     { #2 'author.or.editor :=
-      bbl.ed *
+      bbl.editor " " * *
       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 :=
   ""
@@ -398,7 +394,7 @@ FUNCTION {n.separate.multi}
   t text.length$ #4 > t is.a.number and
     {
       { t empty$ not }
-      { t #-1 #1 substring$ is.num
+      { t #-1 #1 substring$ is.a.number
           { numnames #1 + 'numnames := }
           { #0 'numnames := }
         if$
@@ -419,29 +415,30 @@ FUNCTION {n.separate.multi}
   if$
 }
 
-FUNCTION {format.title.noemph}
-{ title empty$
+FUNCTION {format.bvolume}
+{ volume empty$
     { "" }
-    { title }
+    { bbl.volume volume tie.or.space.connect }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
+FUNCTION {format.title.noemph}
+{ 't :=
+  t empty$
     { "" }
-    { title emphasize }
+    { t }
   if$
 }
 
-FUNCTION {format.booktitle}
-{ booktitle title empty$
+FUNCTION {format.title}
+{ 't :=
+  t empty$
     { "" }
-    { booktitle emphasize }
+    { t emphasize }
   if$
 }
 
-FUNCTION {n.dashify}
-{ 't :=
+FUNCTION {n.dashify} { 't :=
   ""
     { t empty$ not }
     { t #1 #1 substring$ "-" =
@@ -468,7 +465,7 @@ FUNCTION {n.dashify}
 FUNCTION {format.date}
 { year empty$
     { "" }
-    { year }
+    'year
   if$
 }
 
@@ -486,33 +483,6 @@ FUNCTION {either.or.check}
   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$
@@ -570,6 +540,7 @@ FUNCTION {format.pages.required}
     }
   if$
 }
+
 FUNCTION {format.pages.nopp}
 { pages empty$
     { ""
@@ -599,7 +570,7 @@ FUNCTION {format.vol.pages}
 { volume boldface field.or.null
   duplicate$ empty$
     { pop$ format.pages.required }
-    { ", " * pages n.dashify * }
+    { add.comma pages n.dashify * }
   if$
 }
 
@@ -613,40 +584,21 @@ FUNCTION {format.chapter.pages}
       chapter tie.or.space.connect
       pages empty$
     'skip$
-    { ", " * format.pages * }
+    { add.comma 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$
+FUNCTION {format.title.in}
+{ 's :=
+  s empty$
     { "" }
     { editor empty$
-      { " in " booktitle emphasize * }
-      { " in " booktitle emphasize * ", " * format.editors * }
+      { bbl.in s format.title space.connect }
+      { bbl.in s format.title space.connect
+      add.comma format.editors *
+      }
     if$
     }
   if$
@@ -657,7 +609,7 @@ FUNCTION {format.pub.address}
     { "" }
     { address empty$
         { publisher }
-        { publisher ", " * address *}
+        { publisher add.comma address *}
       if$
     }
   if$
@@ -705,28 +657,32 @@ FUNCTION {article}
 FUNCTION {book}
 { output.bibitem
   author empty$
-    { format.title "title" output.check
+    { title format.title "title" output.check
       editor empty$
-      { "Need either an author or editor for " cite$ * warning$ }
-      { "" format.editors * "editor" output.check }
-    if$
+        { "Need either an author or editor for " cite$ * warning$ }
+        { "" format.editors * "editor" output.check }
+      if$
     }
-    { format.authors output.nonnull
+    { format.authors output
       "author and editor" editor either.or.check
-      format.title "title" output.check
+      title format.title "title" output.check
     }
   if$
   format.pub.address "publisher" output.check
   format.edition output
   format.bdate "year" output.check
   format.bvolume output
+  pages empty$
+    'skip$
+    { format.pages output }
+  if$
   fin.entry
 }
 
 FUNCTION {booklet}
 { output.bibitem
   format.authors output
-  format.title "title" output.check
+  title format.title "title" output.check
   howpublished output
   address output
   format.date output
@@ -736,14 +692,14 @@ FUNCTION {booklet}
 FUNCTION {inbook}
 { output.bibitem
   author empty$
-    { format.title "title" output.check
+    { title 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
+    { format.authors output
+      title format.title.in "title" output.check
     }
   if$
   format.pub.address "publisher" output.check
@@ -757,14 +713,14 @@ FUNCTION {inbook}
 FUNCTION {incollection}
 { output.bibitem
   author empty$
-    { format.booktitle "booktitle" output.check
+    { booktitle format.title "booktitle" output.check
       editor empty$
-      { "Need at least an author or an editor for " cite$ * warning$ }
-      { "" format.editors * "editor" output.check }
-    if$
+        { "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
+    { format.authors output
+      booktitle format.title.in "booktitle" output.check
     }
   if$
   format.pub.address "publisher" output.check
@@ -786,9 +742,13 @@ FUNCTION {inpress}
 FUNCTION {inproceedings}
 { output.bibitem
   format.authors "author" output.check
-  booktitle "booktitle" output.check
+  booktitle format.title.noemph "booktitle" output.check
   address output
   format.date "year" output.check
+  pages empty$
+    'skip$
+    { format.pages output }
+  if$
   fin.entry
 }
 
@@ -797,14 +757,14 @@ FUNCTION {manual}
   author empty$
     { organization empty$
       'skip$
-      { organization output.nonnull
+      { organization output
         address output
       }
       if$
     }
-    { format.authors output.nonnull }
+    { format.authors output }
   if$
-  format.title "title" output.check
+  title format.title "title" output.check
   author empty$
     { organization empty$
       { address output }
@@ -823,7 +783,7 @@ FUNCTION {manual}
 FUNCTION {mastersthesis}
 { output.bibitem
   format.authors "author" output.check
-  bbl.msc emphasize format.thesis.type output.nonnull
+  bbl.msc emphasize format.thesis.type output
   school "school" output.check
   address output
   format.date "year" output.check
@@ -833,9 +793,9 @@ FUNCTION {mastersthesis}
 FUNCTION {misc}
 { output.bibitem
   format.authors output
-  format.title output
+  title format.title output
   howpublished output
-  format.bdate output
+  year output
   note output
   fin.entry
   empty.misc.check
@@ -861,7 +821,7 @@ FUNCTION {patent}
 FUNCTION {phdthesis}
 { output.bibitem
   format.authors "author" output.check
-  bbl.phd emphasize format.thesis.type output.nonnull
+  bbl.phd emphasize format.thesis.type output
   school "school" output.check
   address output
   format.date "year" output.check
@@ -870,9 +830,13 @@ FUNCTION {phdthesis}
 
 FUNCTION {proceedings}
 { output.bibitem
-  format.title.noemph "title" output.check
+  title format.title.noemph "title" output.check
   address output
   format.date "year" output.check
+  pages empty$
+    'skip$
+    { format.pages output }
+  if$
   fin.entry
 }
 
@@ -892,7 +856,7 @@ FUNCTION {submitted}
 FUNCTION {techreport}
 { output.bibitem
   format.authors "author" output.check
-  format.title "title" output.check
+  title format.title "title" output.check
   institution
   type empty$
     'bbl.techreport
@@ -903,7 +867,7 @@ FUNCTION {techreport}
     { "t" change.case$ }
     { number tie.or.space.connect }
   if$
-  output.nonnull
+  output
   format.pub.address output
   format.date "year" output.check
   fin.entry
@@ -919,7 +883,8 @@ FUNCTION {unpublished}
   doi empty$
     {  note output }
     {  format.date output
-       "DOI:" doi tie.or.space.connect output }
+       "DOI:" doi tie.or.space.connect output
+    }
   if$
   fin.entry
   empty.doi.note
@@ -991,6 +956,6 @@ FUNCTION {end.bib}
 }
 
 EXECUTE {end.bib}
-\endinput
+%% 
 %%
 %% End of file `rsc.bst'.
-- 
cgit v1.2.3

