summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/rsc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-07-26 18:17:15 +0000
committerKarl Berry <karl@freefriends.org>2007-07-26 18:17:15 +0000
commit88bf879fc17cc3d52eafa0c4667732bbfa3bc6a7 (patch)
tree454a66c774221ffa4eff6d48ea28af3992f62b12 /Master/texmf-dist/source/latex/rsc
parent5ee1c4ab13ff3f7fd6d32a14822ef38a10e50e38 (diff)
rsc update (22jul07)
git-svn-id: svn://tug.org/texlive/trunk@4661 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/rsc')
-rw-r--r--Master/texmf-dist/source/latex/rsc/rsc.dtx1657
-rw-r--r--Master/texmf-dist/source/latex/rsc/rsc.ins4
2 files changed, 704 insertions, 957 deletions
diff --git a/Master/texmf-dist/source/latex/rsc/rsc.dtx b/Master/texmf-dist/source/latex/rsc/rsc.dtx
index c5a27526a28..961d7ac0036 100644
--- a/Master/texmf-dist/source/latex/rsc/rsc.dtx
+++ b/Master/texmf-dist/source/latex/rsc/rsc.dtx
@@ -1,32 +1,78 @@
-% \iffalse
-%<*driver>
-% ----------------------------------------------------------------
-% The rsc package - BibTeX and macro support for Royal Society
-% 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
+% \iffalse meta-comment
+%
+% Copyright (C) 2006-2007 by
+% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%
+% Released under the GNU General Public License v2
% See http://www.gnu.org/licenses/gpl.txt
-% ----------------------------------------------------------------
-\documentclass[a4paper]{ltxdoc}
+%
+% This work consists of the main source file rsc.dtx
+% and the derived files rsc.sty and rsc.pdf
+%
+%<*driver>
+\documentclass{ltxdoc}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+%\OnlyDescription
\usepackage[T1]{fontenc}
\usepackage[english,UKenglish]{babel}
-\usepackage{rsc}
-\RecordChanges
-\OnlyDescription
-\GetFileInfo{rsc.sty}
-\title{The \textsf{rsc} package --- BibTeX styles 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}
+\usepackage{mathpazo,booktabs,array,url,graphicx,unitsdef,courier}
+\usepackage[scaled=0.95]{helvet}
+\usepackage[final]{microtype}
+\usepackage{\jobname}
\begin{document}
-\DocInput{rsc.dtx}
+ \DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
-% \CheckSum{169}
-% \changes{v1.00}{2006/11/08}{Initial release of packaged rsc.bst}
+%
+% \CheckSum{183}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \GetFileInfo{\jobname.sty}
+%
+% \changes{v2.0}{2007/07/21}{Complete re-write of float support}
+% \changes{v2.0}{2007/07/21}{General tidying of code}
+% \changes{v1.0}{2006/11/08}{Initial release of packaged rsc.bst}
+
+% \DoNotIndex{\,,\@biblabel,\@citess,\@floatboxreset,\@ifclassloaded}
+% \DoNotIndex{\@undefined,\begin,\bibitem,\bibliography}
+% \DoNotIndex{\bibliographystyle,\captionsetup,\centering,\cm}
+% \DoNotIndex{\DeclareOption,\def,\dm,\documentclass,\else,\emph}
+% \DoNotIndex{\end,\ensuremath,\fi,\figurename,\floatplacement}
+% \DoNotIndex{\floatstyle,\global,\hertz,\labelformat,\let,\mole}
+% \DoNotIndex{\NAT@open,\NAT@close,\natexlab,\NeedsTeXFormat}
+% \DoNotIndex{\newblock,\newcommand,\newfloat,\newif,\newunit}
+% \DoNotIndex{\PassOptionsToPackage,\ProcessOptions,\providecommand}
+% \DoNotIndex{\ProvidesPackage,\relax,\renewcommand,\RequirePackage}
+% \DoNotIndex{\restylefloat,\rotatebox,\schemename,\tablename}
+% \DoNotIndex{\textbf,\textsc,\textsuperscript,\unitsep}
+% \DoNotIndex{\unitsuperscript,\usepackage,\varnothing}
+%
+% \title{The \texttt{rsc} package --- BibTeX styles and utilities for
+% chemical documents%
+% \thanks{This file describes version \fileversion, last revised
+% \filedate.}}
+% \author{Joseph Wright%
+% \thanks{E-mail: joseph.wright@morningstar2.co.uk}}
+% \date{Released \filedate}
+%
% \maketitle
%
% \begin{abstract}
@@ -51,12 +97,14 @@
% journals.
%
% In addition to providing the core |*.bst| files, this package also
-% generates |*-mc.bst|, |rsc.sty| |rsc.tex|. The |*-mc.bst| files
-% 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.
+% generates |*-mc.bst|, |*nat.bst|, |rsc.sty| and |rsc.tex|. The
+% |*-mc.bst| files includes support for the |mcite| package, allowing
+% the generation of multiple references. The |*nat.bst| files allow
+% the use of the |natbib| package with BibTeX style files. 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}
%
@@ -115,9 +163,10 @@
% 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.
+% \item K.~\"Ofele, \emph{J.~Organomet.~Chem.}, 1968,
+% \textbf{12}, P42--P43; C.~D.~Abernethy, A.~H.~Cowley and R.~A.\
+% Jones, \emph{J.~Organomet.~Chem.}, 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
@@ -125,6 +174,16 @@
% modifications made to |*.bst|. Note that this requires
% |\usepackage{mcite}| in your LaTeX source.
%
+% \subsection{\texttt{natbib} support}
+%
+% The files |rscnat.bst| and |angewnat.bst| provide support for the
+% generation of bibliographies for use with the |natbib| package.
+% As well as altering the |\bibliographystyle| command appropriately,
+% you also need to load |natbib|. The |rsc| package file provides
+% the option |natbib|, which loads |natbib| automatically (normally,
+% |rsc| loads the |cite| package). Note that |natbib| and |mcite|
+% are incompatible, so you must choose one or the other.
+%
% \subsection{Additional entry types}
%
% In order to ensure compatibility with the |achemso| package, the
@@ -136,13 +195,13 @@
%
% \subsection{Overview}
%
-% The macros provide by |rsc.sty| are all very simple. They simply
+% The macros provide by |rsc.sty| are in the main very simple. They
% 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. The package follows the house
% style of the RSC, by default. The |angew| option switches to the
-% Wiley house style, modelled on the approach taken in \emph{Angew.
+% Wiley house style, modelled on the approach taken in \emph{Angew.\
% Chem.}
%
% \subsection{Additional units}
@@ -174,12 +233,13 @@
% 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.
+% \standardstate$. Note that this is safe in text and maths mode.
%
% \subsection{Alkyl radicals}
%
% \DescribeMacro{\iPr}
% \DescribeMacro{\iBu}
+% \DescribeMacro{\sBu}
% \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.
@@ -189,110 +249,125 @@
% used in Wiley journals, so for example \cmd{\iPr} then gives
% \makeatletter \RSC@angewtrue \iPr \RSC@angewfalse \makeatother.
%
-% \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]
-% This is where the scheme should go%
-% \caption{An exciting reaction, placed HERE.}%
-% \label{sch1}
-% \end{scheme}
-% \end{verbatim}
-% To give:
-% \begin{quotation}
-% \noindent Some text about \ref{sch1}, which will appear directly
-% under this paragraph and will not float at all!
-% \begin{scheme}[H]
-% This is where the scheme should go%
-% \caption{An exciting reaction, placed HERE.}%
-% \label{sch1}
-% \end{scheme}
-% \end{quotation}
-%
-% 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 or Wiley house styles.
-% Note that the |angew| package option automatically sets |cl| as
-% well. Finally, schemes may be numbered within chapters by using
-% the |chapter| (|ch|) option. This is obviously provided for
-% theses and other very long documents.
+% \subsection{Floats}
%
-% \iffalse
-%<*template>
-% \fi
+% The float management section of |rsc| has been totally rewritten
+% in version 2. The provision of a float type for schemes is now
+% handled by the |chemscheme| package; this is loaded automatically
+% by |rsc|. The formatting of float types |table|, |figure| and
+% |scheme| is modified by the |rsc| package to conform to the
+% appropriate journal style. This also applies to cross-references
+% and float captions. The |rsc| package will pass any options
+% appropriate for |chemscheme| through to that package (currently,
+% these are |chapter|\footnote{Numbers schemes per chapter rather
+% than globally.} and |chemcompounds|\footnote{This option loads
+% the |chemcompounds| package, instead of the default of |bpchem|.
+% Both can be used to automatically track reference numbers given
+% to chemical compounds. See the |chemscheme| documentation for a
+% more detailed discussion of this option.}).
+%
+% \DescribeMacro{\floatcontentscentre}
+% \DescribeMacro{\floatcontentsleft}
+% By default, the contents of all floats are centred on the page.
+% This behaviour may be changed globally by using the |floatleft|
+% (or |fl|) package option. The behaviour may be changed for
+% selected floats by issuing the command \cmd{\floatcontentscentre}
+% or \cmd{\floatcontentscentre} \emph{before} the beginning of the
+% floating environment. This change remains in force until cancelled
+% using the complementary macro.
+%
+% Single line float captions are centred by default, but may
+% be left-aligned using the |captionleft| (|cl|) option. The
+% |angew| option automatically activates |captionsleft|, as this
+% is the house style in Wiley journals. All multi-line captions
+% are flush left.
+%
+% \subsection{Summary of options}
+%
+% The |rsc| package has a number of options, mainly concerned with
+% controlling formatting. The full range of options is summarised
+% in \ref{option-summary}.
+% \begin{table}
+% \begin{tabular}{>{\ttfamily}ll}
+% \toprule
+% Option & Effect \\
+% \midrule
+% angew & Use Wiley (\emph{Angew.~Chem.}) formatting \\
+% ch & Number schemes within chapters (if present) \\
+% chapter & Number schemes within chapters (if present)\\
+% chemcompounds & Use \texttt{chemcompounds} package for tracking \\
+% & chemical numbers, rather than \texttt{bpchem} \\
+% cl & All captions flush left \\
+% captionleft & All captions flush left \\
+% fl & Float contents flush left \\
+% floatleft & Float contents flush left \\
+% natbib & Use \texttt{natbib} rather than |cite| \\
+% \bottomrule
+% \end{tabular}
+% \caption{Summary of \texttt{rsc} package options}
+% \label{option-summary}
+% \end{table}
%
% \section{A LaTeX template}
%
% This is a very simple template for chemistry-related documents.
% 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. The |rsc| package loads |cite| automatically,
-% giving superscript citations which come after punctuation. With
-% the |angew| option, these are also surrounded by square brackets.
+% As well as the macros given in this package as |rsc|, the
+% |mhchem| package is loaded, as it provides useful support
+% for the chemist. The |rsc| package loads |cite| (or |natbib|)
+% automatically, giving superscript citations. The |cite| package
+% also moves citations to after punctuation. With
+% the |angew| option, references are surrounded by square brackets.
+% \iffalse
+%<*template>
+% \fi
% \begin{macrocode}
-\documentclass[12pt,a4paper]{article}
+\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[english,UKenglish]{babel}
\usepackage[version=3]{mhchem}
-\usepackage{rsc} % Package options are angew, ch, fl and cl
-\usepackage{bpchem,mcite}
+\usepackage{rsc}
+\usepackage{mcite} % Pick one or the other
+%\usepackage{natbib} % as they are incompatible
\begin{document}
-\bibliography{refs} % Change this to your reference database!
-\bibliographystyle{rsc} % Take your pick of reference style file
-%\bibliographystyle{rsc-mc}
-%\bibliographystyle{angew}
-%\bibliographystyle{angew-mc}
+\bibliography{refs} % Your reference database
+\bibliographystyle{rsc-mc} % Take your pick of styles
\end{document}
% \end{macrocode}
-%
-% \section{BibLaTeX support}
-%
-% The next area of work for the |rsc| package is support for
-% Philipp Lehman's new BibLaTeX system. This is in development,
-% although currently a release date is not certain. The aim will
-% be to reproduce the functionallity of the current BibTeX style
-% files, taking account of the slight changes that BibLaTeX
-% introduces in database entries.
-%
% \iffalse
%</template>
% \fi
%
+% \section{Known issues}
+%
+% The |memoir| class implements its own customisable float and
+% caption management. Unfortunately, this does not have flexibility
+% in the areas needed by the |rsc| package. As a result, the
+% |memoir| methods are over-written with the procedures from the
+% |float| and |caption| packages. This may cause some features to
+% fail or behave unexpectedly. The decision to use |float| and
+% |caption| came down to considering the aims of \emph{this}
+% package.
+%
+% \section{Future plans}
+%
+% The |biblatex| package, currently being developed by
+% Phillip Lehman, is likely to become the standard for
+% bibliography formatting in the future. However, currently
+% package is still in beta, and the interface is not finalised.
+% Thus at present it is too early to produce |biblatex| styles
+% for general release.
+%
+% Once |biblatex| reaches production, it is my intention to provide
+% suitable support files for chemical journals. It seems likely that
+% these will be in a separate package (probably covering a number of
+% journal styles). At that stage, the support macros provided here
+% may be moved to a more general purpose package. It is my aim
+% to implement an extendable style system, to allow more convenient
+% support for a wider range of journals. Suitable steps will be
+% taken to maintain the user interface provided here (and in the
+% |achemso| package).
+%
% \StopEventually{}
%
% \iffalse
@@ -307,38 +382,68 @@
% them. The code is all very simple, but for the interested reader
% is provided here.
%
+% \subsection{Setup code}
+%
% First of all, the package identifies itself and loads other packages
% needed to function.
-% \changes{2006-12-31}{v1.1}{Moved |cite| to package}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{rsc}[2007/01/01 v1.1
-Useful chemistry functions]
-\RequirePackage{unitsdef,graphicx,amssymb,fixltx2e,float,varioref}
-\RequirePackage[super]{cite}
-\RequirePackage[labelsep=quad,labelfont=bf]{caption}
+\ProvidesPackage{rsc}[2007/07/21 v2.0
+ Useful chemistry functions]
+\RequirePackage{unitsdef,graphicx,amssymb,fixltx2e,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}
-\DeclareOption{ch}{\global\RSC@chaptertrue}
-\newif\ifRSC@angew\RSC@angewfalse
+% The Boolean values needed to manage options are set up.
+% \begin{macrocode}
+\newif \ifRSC@fl \RSC@flfalse
+\newif \ifRSC@cl \RSC@clfalse
+\newif \ifRSC@chapter \RSC@chapterfalse
+\newif \ifRSC@angew \RSC@angewfalse
+\newif \ifRSC@natbib \RSC@natbibfalse
+% \end{macrocode}
+% The package provides several options which relate to float
+% handling, plus one for |natbib| and one for
+% \emph{Angew.~Chem.}~style formatting.
+% \begin{macrocode}
+\DeclareOption{floatleft}{\global\RSC@fltrue}
+\DeclareOption{fl}{\global\RSC@fltrue}
+\DeclareOption{captionleft}{\global\RSC@cltrue}
+\DeclareOption{cl}{\global\RSC@cltrue}
+\DeclareOption{chapter}{\global\RSC@chaptertrue%
+ \PassOptionsToPackage{chapter}{chemscheme}}
+\DeclareOption{ch}{\global\RSC@chaptertrue%
+ \PassOptionsToPackage{chapter}{chemscheme}}
\DeclareOption{angew}{\global\RSC@angewtrue%
-\global\RSC@captioncentrefalse}
+ \global\RSC@cltrue}
+\DeclareOption{natbib}{\global\RSC@natbibtrue}
+\DeclareOption{chemcompounds}%
+ {\PassOptionsToPackage{chemcompounds}{chemscheme}}
\ProcessOptions
% \end{macrocode}
+% The |chemscheme| package is loaded to provide |scheme| environment.
+% It is loaded here to ensure the options are correct.
+% \begin{macrocode}
+\RequirePackage{chemscheme}
+% \end{macrocode}
+% The choice of |natbib| or |cite| is then handled.
+% \begin{macrocode}
+\ifRSC@natbib
+ \RequirePackage[numbers,sort&compress,super]{natbib}
+\else
+ \RequirePackage[super]{cite}
+\fi
+% \end{macrocode}
+%
+% \subsection{Extra units and related commands}
%
% A few additional unit types are provides, which the |unitsdef|
% package omits for some reason.
+% \begin{macro}{\cubiccentimeter}
+% \begin{macro}{\cmc}
+% \begin{macro}{\Hz}
+% \begin{macro}{\Molar}
+% \begin{macro}{\molar}
+% \begin{macro}{mmHg}
% \begin{macrocode}
\newunit{\cubiccentimeter}{\cm\unitsuperscript{3}}
\newcommand*{\cmc}{\cubiccentimeter}
@@ -347,154 +452,169 @@ Useful chemistry functions]
\newunit{\molar}{\mole\unitsep\dm\unitsuperscript{--3}}
\newunit{\mmHg}{mm\unitsep{}Hg}
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
% 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{macro}{\standardstate}
% \begin{macrocode}
\newcommand*{\standardstate}%
{\textsuperscript{\rotatebox[origin=c]{140.8}%
{\ensuremath{\varnothing}}}}
% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Alkyl radicals}
%
% Next we provide alkyl radical symbols, in a convenient form.
% The format depends on the journal asked for.
-% \changes{2006-12-31}{v1.1}{Made formatting journal-dependent}
-% \begin{macrocode}
-\newcommand*{\iPr}{\ifRSC@angew\emph{i}Pr\else Pr\textsuperscript{i}\fi}
-\newcommand*{\iBu}{\ifRSC@angew\emph{i}Bu\else Bu\textsuperscript{i}\fi}
-\newcommand*{\tBu}{\ifRSC@angew\emph{t}Pr\else Bu\textsuperscript{t}\fi}
-% \end{macrocode}
-% If the |angew| option is set, a modification is made to
-% the citation style. This is taken directly from |cite.sty|.
+%\begin{macro}{\iPr}
+%\begin{macro}{\iBu}
+%\begin{macro}{\sBu}
+%\begin{macro}{\tBu}
+% \begin{macrocode}
+\newcommand*{\iPr}%
+ {\ifRSC@angew\emph{i}Pr\else Pr\textsuperscript{i}\fi}
+\newcommand*{\iBu}%
+ {\ifRSC@angew\emph{i}Bu\else Bu\textsuperscript{i}\fi}
+\newcommand*{\sBu}%
+ {\ifRSC@angew\emph{s}Bu\else Bu\textsuperscript{s}\fi}
+\newcommand*{\tBu}%
+ {\ifRSC@angew\emph{t}Bu\else Bu\textsuperscript{t}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Citation formatting}
+%
+% If the |angew| option is set, we have to format the citations
+% correctly. The formatting commands depend on whether we're using
+% |cite| or |natbib|. The format of the bibliography labels is also
+% altered here.
% \begin{macrocode}
\ifRSC@angew
- \def\@citess#1{\textsuperscript{[#1]}}
+ \ifRSC@natbib
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}
+ \else
+ \def\@citess#1{\textsuperscript{[#1]}}
+ \fi
+ \else
+ \def\@biblabel#1{#1}
\fi
% \end{macrocode}
-% If the |angew| option is set, then the format of float captions
-% needs to be modified. This is achieved using both the |float|
-% and |cation| packages.
+%
+% \subsection{Caption and float formatting}
+%
+% The |caption| package is used to control the appearance of
+% float captions. The macros provided by the |memoir| class do not
+% allow sufficient control, and so the functions provided by |memoir|
+% are ignored. |caption| is loaded with the correct default format
+% for almost all floats. In the case of \emph{Angew. Chem.}~style
+% formatting, tables are treated differently.
% \begin{macrocode}
\ifRSC@angew
- \floatstyle{plaintop}
- \captionsetup[Table]{labelsep=colon}
- \captionsetup[Scheme]{labelsep=period}
- \captionsetup[Figure]{labelsep=period}
-\fi
-% \end{macrocode}
-% The position of the caption on the line is set using the
-% |caption| package. Slightly confusingly, a single line
-% caption can only be moved to the left-hand side using
-% the |singlelinecheck=off| command.
-% \changes{2007-01-01}{v1.1}{Switched to |cation| package
-% for centering labels}
-% \begin{macrocode}
-\ifRSC@captioncentre
- \relax
+ \RequirePackage[labelsep=period,labelfont=bf]{caption}
+ \captionsetup[table]{labelsep=colon}
\else
- \captionsetup{singlelinecheck=off}
+ \RequirePackage[labelsep=quad,labelfont=bf]{caption}
\fi
% \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!
-% \changes{2007-01-01}{v1.1}{Altered error to package-specific}
+% By default, short (one line) captions are centred. Longer captions
+% are typeset as paragraphs. To set all captions flush left, the
+% |caption| package is instructed not to check for single line
+% captions.
% \begin{macrocode}
-\ifRSC@chapter
- \ifx\chapter\@undefined
- \PackageError{rsc}{No chapters in this document}\@eha
- \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
+\ifRSC@cl
+ \captionsetup{singlelinecheck=off}
\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.''
-% in RSC journals.
+% In RSC journals, figures are referred to as ``Fig.''~rather than
+% ``Figure.'' This is sorted out here.
% \begin{macrocode}
-\floatname{Scheme}{Scheme}
-\floatname{Table}{Table}
\ifRSC@angew
- \floatname{Figure}{Figure}
\else
- \floatname{Figure}{Fig.}
+ \renewcommand{\figurename}{Fig.}
\fi
% \end{macrocode}
-% We now test if we want centered 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
+%
+% The next step is to format the floats themselves correctly.
+% Unfortunately, |memoir| does not provide all of the commands
+% needed to achieve this. Thus the |float| package is needed;
+% in order to load it, the \cmd{\newfloat} command in |memoir|
+% is killed off. Notice that if |memoir| is not in use, the
+% |chemscheme| package will have already loaded |float|.
+% \begin{macrocode}
+\@ifclassloaded{memoir}
+ {\let\newfloat\@undefined
+ \RequirePackage{float}}
+ {}
% \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|!
+% The standard float types are now restyled to place the captions
+% correctly. The placement of captions is also altered so that they
+% default to ``here'' if possible.
% \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}}
+\floatstyle{plaintop}
+\restylefloat{table}
+\floatstyle{plain}
+\restylefloat{scheme}
+\restylefloat{figure}
+\floatplacement{table}{htbp}
+\floatplacement{scheme}{htbp}
+\floatplacement{figure}{htbp}
% \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 called
-% ``Fig.'' in RSC journals.
-% \begin{macrocode}
-\labelformat{Scheme}{Scheme~#1}
-\ifRSC@angew
- \labelformat{Figure}{Figure~#1}
+%
+% \begin{macro}{\floatcontentscentre}
+% \begin{macro}{\floatcontentsleft}
+% In order to centre the content of all floats, a method is needed
+% to break into the mechanism. None is provided by default,
+% but it can be achieved by patching \cmd{\@floatboxreset}.
+% User space switching commands are defined to turn centring on and
+% off.
+% \begin{macrocode}
+\newcommand*{\floatcontentscentre}%
+ {\let\RSC@everyfloat\centering}
+\newcommand*{\floatcontentsleft}%
+ {\let\RSC@everyfloat\relax}
+\let\RSC@floatboxreset\@floatboxreset
+\def\@floatboxreset{\RSC@everyfloat\RSC@floatboxreset}
+\ifRSC@fl
+ \floatcontentsleft
\else
- \labelformat{Figure}{Fig.~#1}
+ \floatcontentscentre
\fi
-\labelformat{Table}{Table~#1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Finally, the naming for cross-references is sorted out properly,
+% using the |varioref| package.
+% \begin{macrocode}
+\labelformat{scheme}{\schemename~#1}
+\labelformat{figure}{\figurename~#1}
+\labelformat{table}{\tablename~#1}
% \end{macrocode}
% \iffalse
%</package>
% \fi
-% \section{The style files}
+% \section{The BibTeX style files}
+%
+% A great deal of the BibTeX style file information is lifted
+% more or less directly from the standard style files, the
+% |custom-bib| package or \emph{Taming the BeaST}. The rest
+% consists of minor edits to obtain the correct format or support
+% the |natbib| and |mcite| packages. Only two functions are novel
+% to this package, and are given here for the interested reader.
%
-% 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>
-% \fi
-% \changes{2006-12-29}{v1.1}{Altered conditional code names}
% \begin{macrocode}
ENTRY
{ address
@@ -507,6 +627,7 @@ ENTRY
howpublished
institution
journal
+%<nat> key
note
number
organization
@@ -520,7 +641,13 @@ ENTRY
year
}
{}
- { label }
+%<!nat> { label }
+%<*nat>
+ { label
+ extra.label
+ short.list
+ }
+%</nat>
INTEGERS { output.state before.all mid.sentence after.sentence }
INTEGERS { after.block after.item author.or.editor }
@@ -533,10 +660,6 @@ FUNCTION {init.state.consts}
#4 'after.item :=
}
-% \end{macrocode}
-% \changes{2006-12-29}{v1.1}{Updated add.comma to remove brace "correction"}
-% \changes{2006-12-29}{v1.1}{Replaced use of literal ", " with add.comma}
-% \begin{macrocode}
FUNCTION {add.comma}
{ ", " * }
@@ -547,16 +670,7 @@ FUNCTION {output.nonnull}
output.state mid.sentence =
{ add.comma write$ }
{ output.state after.block =
-% \iffalse
-%<*rsc|angew>
-% \fi
-% \begin{macrocode}
{ add.comma write$
-% \end{macrocode}
-% \iffalse
-%</rsc|angew>
-%\fi
-% \begin{macrocode}
newline$
"\newblock " write$
}
@@ -591,6 +705,7 @@ FUNCTION {output.check}
if$
}
+%<*!nat>
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
@@ -601,36 +716,24 @@ FUNCTION {output.bibitem}
before.all 'output.state :=
}
-% \end{macrocode}
-% The |fin.entry| function is dependant on whether |mcite| is in use.
-% The correct function is produced here.
-% \iffalse
-%<*!mc>
-% \fi
-% \begin{macrocode}
+%</!nat>
FUNCTION {fin.entry}
+%<*!mc>
{ add.period$
write$
newline$
}
-% \end{macrocode}
-% \iffalse
+
%</!mc>
%<*mc>
-% \fi
-% \begin{macrocode}
-FUNCTION {fin.entry}
{ write$
"\relax" write$
newline$
"\relax" write$
}
-% \end{macrocode}
-% \iffalse
%</mc>
-% \fi
-% \begin{macrocode}
+
FUNCTION {not}
{ { #0 }
{ #1 }
@@ -677,88 +780,27 @@ FUNCTION {paren}
if$
}
-% \end{macrocode}
-% As in |custom-bib|, the bulk of the literal stings are collected up
-% here to make editing easier.
-% \changes{2006-12-29}{v1.1}{Added bbl.and function}
-% \begin{macrocode}
FUNCTION {bbl.and}
{ "and" }
FUNCTION {bbl.chapter}
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
-{ "ch." }
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
-{ "Chapter" }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
-
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
-FUNCTION {bbl.editor}
-{ "ed." }
+%<rsc>{ "ch." }
+%<angew>{ "Chapter" }
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
FUNCTION {bbl.editor}
-{ "Ed.:" }
+%<rsc>{ "ed." }
+%<angew>{ "Ed.:" }
-FUNCTION {bbl.editors}
-{ "Eds.:" }
+%<angew>FUNCTION {bbl.editors}
+%<angew>{ "Eds.:" }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
FUNCTION {bbl.edition}
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
-{ "edn." }
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
-{ "ed." }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc>{ "edn." }
+%<angew>{ "ed." }
-% \end{macrocode}
-% \changes{2006-12-29}{v1.1}{Added bbl.etal function}
-% \begin{macrocode}
FUNCTION {bbl.etal}
{ "et~al." emphasize }
-% \end{macrocode}
-% \changes{2006-12-29}{v1.1}{Added bbl.in function}
-% \begin{macrocode}
FUNCTION {bbl.in}
{ "in" }
@@ -767,51 +809,18 @@ FUNCTION {bbl.inpress}
FUNCTION {bbl.msc}
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
-{ "M.Sc. thesis" }
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
-{ "MSc thesis" }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc>{ "M.Sc. thesis" }
+%<angew>{ "MSc thesis" }
FUNCTION {bbl.page}
{ "p." }
-
FUNCTION {bbl.pages}
{ "pp." }
FUNCTION {bbl.phd}
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
-{ "Ph.D. thesis" }
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
-{ "PhD thesis" }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc>{ "Ph.D. thesis" }
+%<angew>{ "PhD thesis" }
FUNCTION {bbl.submitted}
{ "submitted for publication" }
@@ -820,24 +829,8 @@ FUNCTION {bbl.techreport}
{ "Technical Report" }
FUNCTION {bbl.volume}
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
-{ "vol." }
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
-{ "Vol." }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc>{ "vol." }
+%<angew>{ "Vol." }
FUNCTION {bbl.first}
{ "1st" }
@@ -866,10 +859,6 @@ FUNCTION {bbl.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" =
@@ -891,14 +880,7 @@ FUNCTION {eng.ord}
if$
}
-% \end{macrocode}
-% \changes{2006-12-29}{v1.1}{Added Angew. Chem. style}
-% \iffalse
%<*angew>
-% \fi
-% A number of functions to allow find and replace,
-% needed in the Angew. Chem. style
-% \begin{macrocode}
INTEGERS{ l }
FUNCTION{string.length}
@@ -932,14 +914,7 @@ FUNCTION{find.replace}
while$
}
-% \end{macrocode}
-% \iffalse
%</angew>
-% \fi
-% \changes{2006-12-29}{v1.1}{Simplified number checking}
-% Two functions from Nicolas Markey for determining whether an
-% arbitrary string is an integer.
-% \begin{macrocode}
FUNCTION{is.a.digit}
{ duplicate$ "" =
{pop$ #0}
@@ -1034,10 +1009,6 @@ FUNCTION {space.connect}
INTEGERS { nameptr namesleft numnames }
-% \end{macrocode}
-% \changes{2006-12-29}{v1.1}{Uses bbl.etal in place of literal}
-% \changes{2006-12-29}{v1.1}{Uses bbl.and in place of literal}
-% \begin{macrocode}
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
@@ -1054,26 +1025,8 @@ FUNCTION {format.names}
if$
t "others" =
{ bbl.etal space.connect }
-% \end{macrocode}
-% The format before the last name depends on
-% the journal style
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- { bbl.and space.connect t space.connect }
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- { add.comma t * }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> { bbl.and space.connect t space.connect }
+%<angew> { add.comma t * }
if$
}
if$
@@ -1095,9 +1048,11 @@ FUNCTION {format.authors}
}
% \end{macrocode}
-% The |strip.comma| function is used to "unwind"
+% \fi
+% The |strip.comma| function is used to ``unwind''
% the comma added by output.nonnull, so that editors
-% in brackets are easy to do
+% in brackets are easy to do. This is needed for the |angew|
+% option.
% \iffalse
%<*angew>
% \fi
@@ -1118,25 +1073,16 @@ FUNCTION {strip.comma}
% \end{macrocode}
% \iffalse
%</angew>
-% \fi
% \begin{macrocode}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ #2 'author.or.editor :=
-% \end{macrocode}
-% \iffalse
%<*rsc>
-% \fi
-% \begin{macrocode}
bbl.editor " " * *
editor format.names
-% \end{macrocode}
-% \iffalse
%</rsc>
%<*angew>
-% \fi
-% \begin{macrocode}
strip.comma
editor num.names$ #1 >
{ bbl.editors }
@@ -1144,19 +1090,17 @@ FUNCTION {format.editors}
if$
" " *
editor format.names * paren
-% \end{macrocode}
-% \iffalse
%</angew>
-% \fi
-% \begin{macrocode}
}
if$
}
% \end{macrocode}
+% \fi
+%
% |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
+% 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}
@@ -1191,6 +1135,9 @@ FUNCTION {n.separate.multi}
if$
}
+% \end{macrocode}
+% \iffalse
+% \begin{macrocode}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
@@ -1198,10 +1145,6 @@ FUNCTION {format.bvolume}
if$
}
-% \end{macrocode}
-% \changes{2006-12-29}{v1.1}{Restructured format.title.noemph system}
-% \changes{2006-12-29}{v1.1}{Restructured format.title system}
-% \begin{macrocode}
FUNCTION {format.title.noemph}
{ 't :=
t empty$
@@ -1218,15 +1161,7 @@ FUNCTION {format.title}
if$
}
-% \end{macrocode}
-% The volume goes with the title for Angew. Chem.,
-% so a "combined" function is useful. Note that
-% |output| cannot be used form the book volume,
-% as this leads to problems with the stack order!
-% \iffalse
%<*angew>
-% \fi
-% \begin{macrocode}
FUNCTION {format.title.vol}
{ 't :=
t empty$
@@ -1241,11 +1176,94 @@ FUNCTION {format.title.vol}
if$
}
-% \end{macrocode}
-% \iffalse
%</angew>
-% \fi
-% \begin{macrocode}
+%<*nat>
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { bbl.etal * }
+ { bbl.and space.connect t space.connect }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.full
+ { type$ "proceedings" =
+ 'editor.full
+ 'author.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem} { newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+%</nat>
FUNCTION {n.dashify} { 't :=
""
{ t empty$ not }
@@ -1273,48 +1291,16 @@ FUNCTION {n.dashify} { 't :=
FUNCTION {format.date}
{ year empty$
{ "" }
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- 'year
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- { year boldface }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> 'year
+%<angew> { year boldface }
if$
}
FUNCTION {format.bdate}
{ year empty$
{ "There's no year in " cite$ * warning$ }
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- 'year
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- { year boldface }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> 'year
+%<angew> { year boldface }
if$
}
@@ -1368,11 +1354,6 @@ FUNCTION {format.pages}
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$
{ ""
@@ -1387,11 +1368,6 @@ FUNCTION {format.pages.required}
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$
{ ""
@@ -1406,57 +1382,21 @@ FUNCTION {format.pages.nopp}
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 }
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- { pages n.separate.multi }
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- { pages }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> { pages n.separate.multi }
+%<angew> { pages }
if$
}
if$
}
FUNCTION {format.vol.pages}
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
-{ volume boldface field.or.null
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
-{ volume emphasize field.or.null
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc>{ volume boldface field.or.null
+%<angew>{ volume emphasize field.or.null
duplicate$ empty$
{ pop$ format.pages.required }
{ add.comma pages n.dashify * }
@@ -1479,22 +1419,9 @@ FUNCTION {format.chapter.pages}
if$
}
-% \end{macrocode}
-% \changes{2006-12-29}{v1.1}{Restructured format.title.in}
-% \begin{macrocode}
FUNCTION {format.title.in}
{ 's :=
-% \end{macrocode}
-% \iffalse
-%<*angew>
-% \fi
-% \begin{macrocode}
- after.item 'output.state :=
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<angew> after.item 'output.state :=
s empty$
{ "" }
{ editor empty$
@@ -1507,11 +1434,7 @@ FUNCTION {format.title.in}
if$
}
-% \end{macrocode}
-% \iffalse
%<*angew>
-% \fi
-% \begin{macrocode}
FUNCTION {format.title.vol.in}
{ 's :=
after.item 'output.state :=
@@ -1527,11 +1450,7 @@ FUNCTION {format.title.vol.in}
if$
}
-% \end{macrocode}
-% \iffalse
%</angew>
-% \fi
-% \begin{macrocode}
FUNCTION {format.pub.address}
{ publisher empty$
{ "" }
@@ -1568,45 +1487,15 @@ FUNCTION {format.thesis.type}
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 it is not really used in chemistry.
-% \begin{macrocode}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- journal emphasize "journal" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-% Wiley journals have no commas in journal names,
-% so a find and replace function is used to avoid
-% needed database modifications
+%<rsc> journal emphasize "journal" output.check
%<*angew>
-% \fi
-% \begin{macrocode}
journal "," "" find.replace emphasize
"journal" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% Changing output state suppresses the comma here
-%<*angew>
-% \fi
-% \begin{macrocode}
after.item 'output.state :=
-% \end{macrocode}
-% \iffalse
%</angew>
-% \fi
-% \begin{macrocode}
format.date "year" output.check
volume empty$
{ ""
@@ -1617,32 +1506,11 @@ FUNCTION {article}
fin.entry
}
-% \end{macrocode}
-% \changes{v1.1}{2006-12-29}{Added optional pages to book}
-% 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$
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- { title format.title "title" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- { title format.title.vol "title" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> { title format.title "title" output.check
+%<angew> { title format.title.vol "title" output.check
editor empty$
{ "Need either an author or editor for " cite$ * warning$ }
{ "" format.editors * "editor" output.check }
@@ -1650,40 +1518,14 @@ FUNCTION {book}
}
{ format.authors output
"author and editor" editor either.or.check
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- title format.title "title" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- title format.title.vol "title" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> title format.title "title" output.check
+%<angew> title format.title.vol "title" output.check
}
if$
format.pub.address "publisher" output.check
format.edition output
format.bdate "year" output.check
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- format.bvolume output
-% \end{macrocode}
-% \iffalse
-%</rsc>
-% \fi
-% \begin{macrocode}
+%<rsc> format.bvolume output
pages empty$
'skip$
{ format.pages output }
@@ -1704,141 +1546,49 @@ FUNCTION {booklet}
FUNCTION {inbook}
{ output.bibitem
author empty$
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- { title format.title "title" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- { title format.title.vol "title" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> { title format.title "title" output.check
+%<angew> { title format.title.vol "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
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- title format.title.in "title" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- title format.title.vol.in "title" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> title format.title.in "title" output.check
+%<angew> title format.title.vol.in "title" output.check
}
if$
format.pub.address "publisher" output.check
format.edition output
format.bdate "year" output.check
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- format.bvolume output
-% \end{macrocode}
-% \iffalse
-%</rsc>
-% \fi
-% \begin{macrocode}
+%<rsc> 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$
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- { booktitle format.title "booktitle" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- { booktitle format.title.vol "booktitle" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> { booktitle format.title "booktitle" output.check
+%<angew> { booktitle format.title.vol "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
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- booktitle format.title.in "booktitle" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- booktitle format.title.vol.in "booktitle" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> booktitle format.title.in "booktitle" output.check
+%<angew> booktitle format.title.vol.in "booktitle" output.check
}
if$
format.pub.address "publisher" output.check
format.edition output
format.bdate "year" output.check
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- format.bvolume output
-% \end{macrocode}
-% \iffalse
-%</rsc>
-% \fi
-% \begin{macrocode}
+%<rsc> 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
@@ -1847,30 +1597,11 @@ FUNCTION {inpress}
fin.entry
}
-% \end{macrocode}
-% \changes{v1.1}{2006-12-30}{Added optional pages to inproceedings}
-% \begin{macrocode}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- booktitle format.title.noemph "booktitle" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- booktitle format.title "booktitle" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> booktitle format.title.noemph "booktitle" output.check
+%<angew> booktitle format.title "booktitle" output.check
address output
format.date "year" output.check
pages empty$
@@ -1892,24 +1623,8 @@ FUNCTION {manual}
}
{ format.authors output }
if$
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- title format.title "title" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- title format.title.noemph "title" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> title format.title "title" output.check
+%<angew> title format.title.noemph "title" output.check
author empty$
{ organization empty$
{ address output }
@@ -1928,67 +1643,26 @@ FUNCTION {manual}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- bbl.msc emphasize format.thesis.type output
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- bbl.msc format.thesis.type output
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> bbl.msc emphasize format.thesis.type output
+%<angew> bbl.msc format.thesis.type output
school "school" output.check
address output
format.date "year" output.check
fin.entry
}
-% \end{macrocode}
-% \changes{v1.1}{2006-12-29}{Error with missing year fixed in
-% misc type}
-% \begin{macrocode}
FUNCTION {misc}
{ output.bibitem
format.authors output
title format.title output
howpublished output
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- year output
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- format.date output
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> year output
+%<angew> format.date 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$
@@ -2009,53 +1683,18 @@ FUNCTION {patent}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- bbl.phd emphasize format.thesis.type output
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- bbl.phd format.thesis.type output
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> bbl.phd emphasize format.thesis.type output
+%<angew> bbl.phd format.thesis.type output
school "school" output.check
address output
format.date "year" output.check
fin.entry
}
-% \end{macrocode}
-% \changes{v1.1}{2006-12-30}{Added optional pages to proceedings}
-% \begin{macrocode}
FUNCTION {proceedings}
{ output.bibitem
-% \end{macrocode}
-% \iffalse
-%<*rsc>
-% \fi
-% \begin{macrocode}
- title format.title.noemph "title" output.check
-% \end{macrocode}
-% \iffalse
-%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- title format.title "title" output.check
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<rsc> title format.title.noemph "title" output.check
+%<angew> title format.title "title" output.check
address output
format.date "year" output.check
pages empty$
@@ -2065,9 +1704,6 @@ FUNCTION {proceedings}
fin.entry
}
-% \end{macrocode}
-% A non-standard type, for compatibility with |achmeso|.
-% \begin{macrocode}
FUNCTION {remark}
{ output.bibitem
note "note" output.check
@@ -2081,10 +1717,6 @@ FUNCTION {submitted}
fin.entry
}
-% \end{macrocode}
-% The institution, report type and number are combined
-% as the RSC style suggests.
-% \begin{macrocode}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
@@ -2105,11 +1737,6 @@ FUNCTION {techreport}
fin.entry
}
-% \end{macrocode}
-% For unpublished works, the note is used unless
-% there is a DOI. The format of the DOI is set by
-% the journal.
-% \begin{macrocode}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
@@ -2119,35 +1746,17 @@ FUNCTION {unpublished}
if$
doi empty$
{ note output }
-% \end{macrocode}
-% \iffalse
%<*rsc>
-% \fi
-% \begin{macrocode}
{ format.date output
"DOI:" doi tie.or.space.connect output
}
-% \end{macrocode}
-% \iffalse
%</rsc>
-%<*angew>
-% \fi
-% \begin{macrocode}
- { "DOI" doi tie.or.space.connect output }
-% \end{macrocode}
-% \iffalse
-%</angew>
-% \fi
-% \begin{macrocode}
+%<angew> { "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}
@@ -2169,6 +1778,7 @@ MACRO {dec} {"December"}
READ
+%<*!nat>
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
@@ -2194,14 +1804,159 @@ EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
-% \end{macrocode}
-% Once again, there is a variation in what is needed, depending
-% on whether |mcite| is to be used. First the standard function,
-% then the modified version.
-% \iffalse
-%<*!mc>
-% \fi
-% \begin{macrocode}
+%</!nat>
+%<*nat>
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ bbl.etal space.connect }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { bbl.etal space.connect }
+ { bbl.and space.connect s #2 "{vv~}{ll}" format.name$ space.connect }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+ITERATE {calc.label}
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+%</nat>
+%<*!mc&!nat>
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
@@ -2210,12 +1965,21 @@ FUNCTION {begin.bib}
"\begin{thebibliography}{" longest.label * "}" * write$ newline$
}
-% \end{macrocode}
-% \iffalse
-%</!mc>
+%</!mc&!nat>
+%<*!mc&nat>
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+}
+
+%</!mc&nat>
%<*mc>
-% \fi
-% \begin{macrocode}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
@@ -2224,50 +1988,31 @@ FUNCTION {begin.bib}
"\begin{mcbibliography}{" longest.label * "}" * write$ newline$
}
-% \end{macrocode}
-% \iffalse
%</mc>
-% \fi
-% \begin{macrocode}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
-% \end{macrocode}
-% \iffalse
%<*!mc>
-% \fi
-% \begin{macrocode}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
-% \end{macrocode}
-% \iffalse
%</!mc>
%<*mc>
-% \fi
-% \begin{macrocode}
FUNCTION {end.bib}
{ newline$
"\end{mcbibliography}" write$ newline$
}
-% \end{macrocode}
-% \iffalse
%</mc>
-% \fi
-% \begin{macrocode}
EXECUTE {end.bib}
% \end{macrocode}
-% \iffalse
%</bib>
% \fi
-% Phew, all done!
% \PrintChanges
+% \PrintIndex
% \Finale
-% \end{document}
-\endinput
diff --git a/Master/texmf-dist/source/latex/rsc/rsc.ins b/Master/texmf-dist/source/latex/rsc/rsc.ins
index cc580058168..6a13ee1de1d 100644
--- a/Master/texmf-dist/source/latex/rsc/rsc.ins
+++ b/Master/texmf-dist/source/latex/rsc/rsc.ins
@@ -21,7 +21,7 @@
----------------------------------------------------------------
The rsc package - BibTeX and macro support for Royal Society
of Chemistry and Wiley chemistry articles
- Maintained by Joseph A. Wright
+ Maintained by Joseph Wright
E-mail: joseph.wright@morningstar2.co.uk
Released under the GNU General Public License
See http://www.gnu.org/licenses/gpl.txt
@@ -41,8 +41,10 @@
\usedir{bibtex/bst/rsc}
\generate{\usepostamble\bibtexable
\file{rsc.bst}{\from{rsc.dtx}{bib,rsc}}
+ \file{rscnat.bst}{\from{rsc.dtx}{bib,rsc,nat}}
\file{rsc-mc.bst}{\from{rsc.dtx}{bib,rsc,mc}}
\file{angew.bst}{\from{rsc.dtx}{bib,angew}}
+ \file{angewnat.bst}{\from{rsc.dtx}{bib,angew,nat}}
\file{angew-mc.bst}{\from{rsc.dtx}{bib,angew,mc}}
}
\endbatchfile