diff options
author | Karl Berry <karl@freefriends.org> | 2007-07-26 18:17:15 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-07-26 18:17:15 +0000 |
commit | 88bf879fc17cc3d52eafa0c4667732bbfa3bc6a7 (patch) | |
tree | 454a66c774221ffa4eff6d48ea28af3992f62b12 /Master/texmf-dist/source | |
parent | 5ee1c4ab13ff3f7fd6d32a14822ef38a10e50e38 (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')
-rw-r--r-- | Master/texmf-dist/source/latex/rsc/rsc.dtx | 1657 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/rsc/rsc.ins | 4 |
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 |