% \iffalse meta-comment % % Copyright (C) 2007 by % Joseph Wright % % Released under the GNU General Public License v2 % See http://www.gnu.org/licenses/gpl.txt % % This work consists of the main source file chemstyle.dtx % and the derived files chemstyle.sty and chemstyle.pdf % %<*driver> \documentclass{ltxdoc} \EnableCrossrefs \CodelineIndex \RecordChanges %\OnlyDescription \usepackage[T1]{fontenc} \usepackage[english,UKenglish]{babel} \usepackage{mathpazo,booktabs,array,url,graphicx,courier,unitsdef} \usepackage{upgreek} \usepackage[scaled=0.95]{helvet} \usepackage[version=3]{mhchem} \usepackage[final]{microtype} \usepackage{\jobname} \begin{document} \DocInput{\jobname.dtx} \end{document} % % \fi % % \CheckSum{481} % % \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{v1.0}{2006/08/06}{Initial release of package} % %\DoNotIndex{\@fs@capt,\@fs@cfont,\@fs@iftopcapt,\@fs@mid,\@fs@post} %\DoNotIndex{\@fs@pre,\@ifclassloaded,\@ifnextchar,\@ifpackageloaded} %\DoNotIndex{\@undefined,\abovecaptionskip,\addto,\AtBeginDocument} %\DoNotIndex{\begin,\begingroup,\belowcaptionskip,\bfseries,\bibname} %\DoNotIndex{\captionsetup,\cm,\color,\csname,\CurrentOption} %\DoNotIndex{\DeclareCaptionFormat,\DeclareCaptionLabelSeparator} %\DoNotIndex{\DeclareOption,\DeclareRobustCommand,\def} %\DoNotIndex{\documentclass,\edef,\else,\emph,\end,\endcsname} %\DoNotIndex{\endgroup,\ensuremath,\ExecuteOptions,\expandafter} %\DoNotIndex{\femtogram,\fg,\fi,\figurename,\floatc@plain} %\DoNotIndex{\floatc@ruled,\floatcontentscentre,\floatplacement} %\DoNotIndex{\floatstyle,\hertz,\hrule,\iffalse,\iftrue,\ifx,\input} %\DoNotIndex{\InputIfFileExists,\kern,\labelformat,\languagename} %\DoNotIndex{\let,\MakeUppercase,\MessageBreak,\NeedsTeXFormat} %\DoNotIndex{\newcommand,\newfloat,\newif,\newunit,\PackageInfo} %\DoNotIndex{\PackageWarning,\PassOptionsToPackage,\ProcessOptions} %\DoNotIndex{\providecommand,\ProvidesFile,\ProvidesPackage,\quad} %\DoNotIndex{\refname,\relax\renewcommand,\RequirePackage} %\DoNotIndex{\restylefloat,\rotatebox,\selectlanguage,\space} %\DoNotIndex{\tablename,\textsc,\textsuperscript,\unitsep} %\DoNotIndex{\unitsuperscript,\usepackage,\varnothing,\vspace} %\DoNotIndex{\xspace} % % \title{\texttt{chemstyle} --- Writing chemistry with style% % \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} % % The |chemstyle| package provides a ``one-stop shop'' for setting up % formatting of LaTeX documents following the editorial policies of % various chemical journals. It provides a number of handy % chemistry-related commands, and loads several support packages to % aid the chemist. % % \end{abstract} % % \section{Introduction} % % The aim of |chemstyle| is to provide a quick method to set up % various document parameters (such as caption formatting), simply % by specifying the model journal. The package has also been % designed to allow rapid addition of new journal styles. Each % style definition is a separate file, and new styles can be added % very readily. |chemstyle| has grown out of the |rsc| package, % which had a similar aim but was much more limited (and less % robustly implemented). The |chemstyle| package is also % designed with the use of |biblatex| in mind: the |rsc| package % is closely bound to traditional BibTeX use. % % As a successor to the |rsc| package, |chemstyle| provides a range % of chemistry-related additional macros. The set provided here is % an extended version of those provide by |rsc|. Everything that % can be done using the |rsc| LaTeX package is therefore possible % using the |chemstyle| package. % % The formatting system provided by |chemstyle| are intended for % writing a variety of documents. Thus the stylistic changes made % by the package do not seek to reproduce the appearance of printed % journal articles. The package aims to be suitable for use in % preparing drafts of papers, but also for writing reports, theses % and so on. % % \section{Style options for \texttt{chemstyle}} % % |chemstyle| should be loaded with a package option specifying which % journal style to follow. Currently, |chemstyle| is aware of a the % styles listed in Table~\ref{styles}. New styles can be developed % by creating a new file modelled on the existing definitions; % |chemstyle| will automatically search for % correctly-named styles. % \begin{table} % \begin{tabular}{ll} % \toprule % Option & Journals using this style \\ % \midrule % none & Not applicable\\ % angew & \emph{Angew.\ Chem.}, \emph{Chem.\ Eur.\ J.} \\ % ic & \emph{Inorg.\ Chem.} \\ % jacs & \emph{J.\ Am.\ Chem.\ Soc.} \\ % jcp & \emph{J.\ Phys.\ Chem.\ A}, \emph{J.\ Phys.\ Chem.\ B} \\ % orglett & \emph{Org.~Lett.}\\ % rsc & \emph{Chem.\ Commun.}, \emph{Org.\ Biomol.\ Chem.} \\ % & \emph{Dalton Trans.} \\ % \bottomrule % \end{tabular} % \caption{Styles provided by \texttt{chemstyle}}\label{styles} % \end{table} % The style files provided with |chemstyle| have been derived from % current practice in the target journals. It is not always easy to % pick the correct stylistic settings from (sometimes inconsistent) % real-world examples. The package author welcomes feedback on % the styles provided. % % The |none| style is notable as it is not based on a journal. % Instead this is a minimal style, which provides the additional % commands without making formatting changes. It is also the % default style if no option is given. % % \subsection{Package options} % % In addition to the style options, |chemstyle| will pass options % through to the |chemscheme| package, which is used to provide % support for schemes. Users should consult the |chemscheme| % documentation for the options applicable. % % The package recognises the |nonotes| option, which affects % how the References section is headed. By default, |chemstyle| % alters the value of \cmd{\bibname} or \cmd{\refname} (as % appropriate) to the form of words chosen by the target journal % for the ``References and Notes'' section. The |nonotes| option % prevents this, and results in only ``References'' being output. % % The ``References'' naming commands are language-aware, \emph{via} % the |babel| interface. Currently, |chemstyle| includes appropriate % labels for babel languages |english|, |UKenglish|, |ngerman| and % |french|.\footnote{The \texttt{french} option for \texttt{babel} % causes a clash with \texttt{unitsdef} concerning the command % \texttt{\textbackslash fg}. \texttt{babel} uses this for % guillemets, while \texttt{unitsdef} uses it as an abbreviation for % \texttt{\textbackslash femtogram}. The \texttt{chemstyle} package % prevents the clash, and leaves the \texttt{babel} definition intact.} % Other languages can be added if appropriate wordings are provided % to the author. % % \section{Additional macros} % % \subsection{Additional units} % % The |unitsdef| package provides a great number of easy to use unit % commands, and handles spacing between numbers and units very well. % However, it misses out a few useful units for chemistry. The % |unitsdef| package is loaded by |rsc.sty|, and is then used to % provide five additional units. % \DescribeMacro{\Hz} % The most obvious of these is \cmd{\Hz}, which simply gives \Hz. The % |unitsdef| package only defines \cmd{\hertz}, which is not as % obvious. % \DescribeMacro{\mmHg} % The command \cmd{\mmHg} has a non-breaking thin space, leading to % \mmHg. % \DescribeMacro{\molar} % \DescribeMacro{\Molar} % Two related commands are given for concentration: \cmd{\molar} % gives \molar, whilst \cmd{\Molar} gives \Molar. % \DescribeMacro{\cmc} % Finally, the command \cmd{\cmc} is provided for generating \cmc. All % space correctly with numbers, so inputting |10\cmc| gives 10\cmc, % with a non-breaking space. % %\subsection{The standard state symbol} % % \DescribeMacro{\standardstate} % Related to, but not exactly a unit is the \cmd{\standardstate} % command. This generates the tricky \standardstate\ symbol, letting % you put |$\Delta S \standardstate$| to generate $\Delta S % \standardstate$. Note that this is safe in either text or maths % mode. % % \subsection{Alkyl radicals} % % \DescribeMacro{\iPr} % \DescribeMacro{\iPr} % \DescribeMacro{\nBu} % \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. As you would expect, \cmd{\iPr} gives \iPr, \cmd{\iBu} gives % \iBu and \cmd{\tBu} gives \tBu, and so on. The style of the output % depends on the journal style specified; most journals seem to % favour one version of the abbreviation. % % \subsection{Latin phrases} % % \DescribeMacro{\latin} % \DescribeMacro{\etc} % \DescribeMacro{\eg} % \DescribeMacro{\ie} % \DescribeMacro{\etal} % \DescribeMacro{\invacuo} % The various Latin phrases commonly used in chemistry are made % available as the obvious commands. By altering the definition % of \cmd{\latin}, this allows ready switching from italic to % Roman typesetting. Notice that \cmd{\etc}, \cmd{\ie} and \cmd{\eg} % are aware of trailing periods, and so doubling-up should not occur. % % \iffalse %<*template> % \fi % \section{A template for chemical articles} % % This is a very simple template for chemistry-related documents. % Hopefully it contains a few extra hints for getting well-formatted % documents quickly. For simplicity, the template assumes that the % user is writing a thesis for a U.K.~university. Hence it uses % U.K.~defaults and RSC-based styling. % % The versatile \textsc{koma-script} bundle provides more advanced % versions of the standard document classes. If you want paragraphs % separated out, with no indents (a common style for theses), add the % |parskip| option to the font and paper size ones given here. % \begin{macrocode} \documentclass[fontsize=10pt,paper=a4]{scrreprt} % \end{macrocode} % The |babel| system is loaded to sort out hyphenation and so on, % and could be useful if there are any foreign-language quotes. % \begin{macrocode} \usepackage[english,UKenglish]{babel} % \end{macrocode} % Load |chemstyle| (of course) to give not only some easy formatting, % but also to automatically provide a float type for schemes, thanks % to the |chemscheme| package. This also loads either |bpchem| or % (optionally) |chemcompounds| to track compound numbers. % \begin{macrocode} \usepackage[rsc]{chemstyle} % \end{macrocode} % The |mhchem| package provides the \cmd{\ce} command for rapidly % typesetting formulas, so that you can type |\ce{H2SO4}| and get % \ce{H2SO4}. % \begin{macrocode} \usepackage[version=3]{mhchem} % \end{macrocode} % Greek letters should be italic if used for variables, but upright % (Roman) if used otherwise. So the standard LaTeX |$\delta$| is % fine for typesetting an NMR shift (\eg $\delta = \ldots$ ppm.), % but not for a $\upsigma$-bond or a $\uppi$-complex. The |upgreek| % package provides commands such as |$\upsigma$| and |$\uppi$| which % are ideal for this. % \begin{macrocode} \usepackage{upgreek} % \end{macrocode} % The default LaTeX table formatting is not very good. The % |booktabs| package does things properly, and has good % advice in the manual. A highly-recommended package for % those interested in formatting (\ie all (La)TeX users!). % \begin{macrocode} \usepackage{booktabs} % \end{macrocode} % The bulk of the document can then start. % \begin{macrocode} \begin{document} \end{document} % \end{macrocode} % \iffalse % % \fi % % \section{Advice for users of \texttt{rsc} and \texttt{achemso}} % % The |chemstyle| package is intended as a replacement for the |rsc| % package. As such, it covers almost everything the the |rsc| LaTeX % package does, and more. Users of |rsc| are strongly encouraged to % update to using |chemstyle|. % % Both |achemso| and |rsc| provide appropriate BibTeX styles. These % will continue to be supported, but % % \StopEventually{} % % \iffalse %<*package> % \fi % \section{The package code} % % \subsection{Setup code} % % First of all, the package identifies itself and loads other % packages needed to function. Loading |chemscheme| is deferred % until later, to allow processing of options at the correct point. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{chemstyle} [2007/08/23 v1.0a Writing chemistry with style] % \end{macrocode} % The \cmd{\fg} macro is defined in French as a \emph{guillemet} sign, % and so to avoid a clash a bit of patching is needed. A check to see % if |babel| has already defined \cmd{\fg}. If it has, the definition % is saved and deleted. % \begin{macrocode} \ifx\fg\@undefined \else \ifx\fg\relax \else \let\cst@fg\fg \let\fg\@undefined \fi \fi % \end{macrocode} % Now package loading can take place. %\changes{v1.0a}{2007/08/23}{No longer load \texttt{fixltx2e} % package} % \begin{macrocode} \RequirePackage{graphicx,amssymb,varioref,xspace,unitsdef} % \end{macrocode} % If \cmd{\cst@fg} exists, it is restored here, otherwise \cmd{\fg} % is undefined. At the beginning of the document, \cmd{\fg} is % defined as an abbreviation for a femtogram if it is not being used % by |babel|. This way there is not a problem if |babel| is loaded % after |chemstyle|. % \begin{macrocode} \ifx\cst@fg\@undefined \let\fg\@undefined \else \let\fg\cst@fg \fi \AtBeginDocument{% \ifx\fg\@undefined \newcommand{\fg}{\femtogram} \fi } % \end{macrocode} % % \subsection{Extra units and related commands} % % \begin{macro}{\cubiccentimeter} % \begin{macro}{\cmc} % \begin{macro}{\Hz} % \begin{macro}{\Molar} % \begin{macro}{\molar} % \begin{macro}{\mmHg} % A few additional unit types are provides, which the |unitsdef| % package omits for some reason. These do not change with different % journal styles, and so are declared directly. % \begin{macrocode} \newunit{\cubiccentimeter}{\cm\unitsuperscript{3}} \newcommand{\cmc}{\cubiccentimeter} \newcommand{\Hz}{\hertz} \newunit{\Molar}{\textsc{m}} \newunit{\molar}{\mole\unitsep\dm\unitsuperscript{--3}} \newunit{\mmHg}{mm\unitsep{}Hg} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\standardstate} % In a very similar vein, the ``standard state'' symbol is handy. This % is produced by rotating a symbol from the \textsc{ams} symbol set. % Note that the rotation angle here has been carefully checked, but % is set by eye. Changing the font used for \cmd{\varnothing} will % mess this up. % \begin{macrocode} \newcommand*{\standardstate}% {\textsuperscript{\rotatebox[origin=c]{140.8}% {\ensuremath{\varnothing}}}} % \end{macrocode} % \end{macro} % % \subsection{Alkyl radicals} % % Alkyl radical abbreviations are produced using the macro % \cmd{\cst@radical}. This uses a series of formatting commands, % which have default values provided here. The names are % hopefully pretty self-explanatory. % \begin{macrocode} \let\cst@emph\relax \def\cst@hyph{} \let\cst@super\relax \newif \ifcst@prefix \cst@prefixtrue % \end{macrocode} % \begin{macro}{\cst@radical} % The \cmd{\cst@radical} macro does the hard work of declaring % each abbreviation. To ensure there is no unexpected clash of % names, \cmd{\newcommand} is used first to check for any problems. % The commands are made robust so they can (hopefully) be used % anywhere. % \begin{macrocode} \def\cst@radical#1#2{% \expandafter\newcommand\expandafter{\csname #1#2\endcsname}{}% \expandafter\DeclareRobustCommand\expandafter{% \csname #1#2\endcsname}{% \ifcst@prefix \cst@super{\cst@emph{#1}}\cst@hyph#2% \else #2\cst@hyph\cst@super{\cst@emph{#1}}% \fi% \xspace } } % \end{macrocode} % \end{macro} % With a mechanism in place, the abbreviations are declared. The % format of the resulting output will depend upon the configuration % file used. % \begin{macrocode} \cst@radical{n}{Pr}% \cst@radical{i}{Pr}% \cst@radical{n}{Bu}% \cst@radical{i}{Bu}% \cst@radical{s}{Bu}% \cst@radical{t}{Bu}% % \end{macrocode} % % \subsection{Option handling} % % Firstly, the ``pass through'' options are handled, as these will be % sent through to |chemscheme|. The package option |nonotes| is also % handled here. % \begin{macrocode} \newif \ifcst@notes \cst@notestrue \DeclareOption{ch}{\ExecuteOptions{chapter}} \DeclareOption{chapter}% {\PassOptionsToPackage{chapter}{chemscheme}} \DeclareOption{chemcompounds}% {\PassOptionsToPackage{chemcompounds}{chemscheme}} \DeclareOption{nonotes}{\cst@notesfalse} % \end{macrocode} % In order to handle the loading of style definitions correctly, a % bit of care is needed. The package options need to be loaded % \emph{before} |chemscheme|, but the style definitions need to % be loaded after |chemscheme|. This is achieved by saving the % options and looking at them again once the package loading is done. % Notice that only one style definition can be used, so this is % taken care of with a warning if needed. % \begin{macrocode} \let\cst@option\relax \DeclareOption*{% \ifx\cst@option\relax\else \PackageWarning{chemstyle} {Extra option \cst@option\space ignored} \fi \edef\cst@option{\CurrentOption} } \ProcessOptions* \RequirePackage{chemscheme} % \end{macrocode} % % \subsection{Float formatting} % % The next step is to format the floats 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. The % |chemscheme| package does not load |float| when |memoir| is being % used, because creating a new float type is catered for directly % by |memoir|. Unfortunately, the |memoir| system isn't flexible % enough for what is needed by |chemstyle|, so the hard work of % |chemscheme| is undone here! For other document classes, |float| % will already have been loaded by |chemscheme|. % \begin{macrocode} \@ifclassloaded{memoir} {\let\newfloat\@undefined \RequirePackage{float}} {} % \end{macrocode} % The standard float types are now restyled to place the captions % correctly (for most journals). Normally in chemical documents % the author expects the float to be ``here'' if possible; this is % therefore set as the default. % \begin{macrocode} \floatstyle{plaintop} \restylefloat{table} \floatstyle{plain} \restylefloat{scheme} \restylefloat{figure} \floatplacement{table}{htbp} \floatplacement{scheme}{htbp} \floatplacement{figure}{htbp} % \end{macrocode} % The contents of floats are centred by default, using the hook % from the |chemstyle| package. % \begin{macrocode} \floatcontentscentre % \end{macrocode} % % \subsection{Cross-references} % % 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} % % \subsection{Latin words} % % \begin{macro}{\latin} % \begin{macro}{\latinemphon} % \begin{macro}{\latinemphoff} % A series of Latin phrases are provided, with a quick switch to % print them in Roman letters if needed. A mechanism is needed % to alter the effect of the \cmd{\latin} command \emph{only} % if the user does not have their own version. This is achieved % here. The default is then set to emphasise Latin words. % \begin{macrocode} \ifx\latin\@undefined \newcommand{\latinemphon}{\let\latin\emph} \newcommand{\latinemphoff}{\let\latin\relax} \latinemphon \else \let\latinemphon\relax \let\latinemphoff\relax \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\etc} % \begin{macro}{\invacuo} % \begin{macro}{\etal} % \begin{macro}{\eg} % \begin{macro}{\ie} % For the macros themselves, care is taken about trailing full stops. % The \cmd{\xspace} command deals with any problems of spacing. % Things could go wrong with complex punctuation, as no other checks % are performed. All of these functions use \cmd{\providecommand} % to avoid standing on the user's own versions, if they exist. % \begin{macrocode} \providecommand{\etc}{\latin{etc}\@ifnextchar.{}{.\xspace}} \providecommand{\invacuo}{\latin{in vacuo}\xspace} \providecommand{\etal}{\latin{et~al}\@ifnextchar.{}{.\xspace}} \providecommand{\eg}{\latin{e.g}\@ifnextchar.{}{.\xspace}} \providecommand{\ie}{\latin{i.e}\@ifnextchar.{}{.\xspace}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Handling section naming} % % First, a new if is needed to differentiate between ``Notes and % References'' and ``References and Notes.'' % \begin{macrocode} \newif \ifcst@notesbefore \cst@notesbeforetrue % \end{macrocode} % \begin{macro}{\cst@name@refs} % To keep life simple in the main macro, and to save on redundant % code, the ordering of ``Notes,'' ``and'' and ``References'' is % handled here. % \begin{macrocode} \def\cst@name@refs#1#2#3{% \ifcst@notesbefore #3\ #2\ #1% \else #1\ #2\ #3% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\cst@language} % The default language of the document is probably English. However, % this is alterable if needed, as it is not set in stone. % Anyone needing to mess with this is probably happy using % \cmd{\makeatletter}, so the command is kept out of user space. % \begin{macrocode} \def\cst@language{english} % \end{macrocode} % \end{macro} % \begin{macro}{\cst@refsection} % The existence of a suitable reference section name command is % checked here. Some document classes (\eg minimal) may not define % a suitable command. Assuming that is not the case, % \cmd{\cst@refsection} is used to store the name of the macro % holding the references section. % \begin{macrocode} \ifx\refname\@undefined \ifx\bibname\@undefined \PackageWarning{chemstyle}% {No bibliography name command defined in document class} \def\cst@namerefs#1#2#3#4{}% \else \def\cst@refsection{\bibname} \fi \else \def\cst@refsection{\refname} \fi % \end{macrocode} % \end{macro} % \begin{macro}{\cst@namerefs} % \begin{macro}{\cst@language@check} % The main macro of the heading-altering section takes four % parameters, \marg{language}, \marg{references}, \marg{and} % and \marg{notes}. The first is the |babel| label for the language % that the words are four, and the other three parameters and the % words ``References'', ``and'' and ``Notes'', respectively. % \begin{macrocode} \ifx\cst@namerefs\@undefined \def\cst@namerefs#1#2#3#4{% \ifcst@notes% % \end{macrocode} % The non-|babel| version of the function only does anything if the % language passed in |#1| is the default document language (probably % English). The check for this needs the macro % \cmd{\cst@language@check} to get |\ifx| to behave as desired. % \begin{macrocode} \def\cst@language@check{#1} \ifx\cst@language\cst@language@check \expandafter\renewcommand\expandafter{\cst@refsection}% {\cst@name@refs{#2}{#3}{#4}}% \fi % \end{macrocode} % To ensure that things work whether |babel| is loaded or not, a few % hoops have to be jumped through. Altering the |babel| strings is % delayed until the start of the document, in case |babel| is loaded % after |chemstyle|. There is also a complication that MikTeX % defines \cmd{\languagename} even if |babel| is not loaded. This % may contain an undesired value, and so the presence of |babel| % needs to be tested for to avoid strange errors. % \begin{macrocode} \AtBeginDocument{% \@ifpackageloaded{babel}{% \expandafter\addto\expandafter{\csname captions#1\endcsname}% {\expandafter\renewcommand\expandafter{\cst@refsection}% {\cst@name@refs{#2}{#3}{#4}}}% \expandafter\selectlanguage\expandafter{\languagename}} {}} \else% \ifx#1\cst@language \expandafter\renewcommand\expandafter{\cst@refsection}{#2}% \fi \AtBeginDocument{% \@ifpackageloaded{babel}{% \expandafter\addto\expandafter{\csname captions#1\endcsname}% {\expandafter\renewcommand\expandafter{\cst@refsection}{#2}}% \expandafter\selectlanguage\expandafter{\languagename}}% {}} \fi% } \fi % \end{macrocode} % \end{macro} % \end{macro} % Finally, default names are loaded for a range of languages. Most % journals stick to the same words, with only the order changing. % \begin{macrocode} \cst@namerefs{english}{References}{and}{Notes} \cst@namerefs{UKenglish}{References}{and}{Notes} \cst@namerefs{ngerman}{Literatur}{und}{Notizen} \cst@namerefs{french}{R\'ef\'erences}{et}{Notes} % \end{macrocode} % % \subsection{Loading the style definition} % % The style definition is loaded here, once else everything is in % place. A style must be loaded, so a default is provided to be on % the safe side. The journal style file must have extension % |.jdf|. % \begin{macrocode} \ifx\cst@option\relax \PackageWarning{chemstyle} {You didn't say which style to use \MessageBreak Defaulting to the ``no change'' style: none} \def\cst@option{none} \fi \InputIfFileExists{\cst@option.jdf} {\PackageInfo{chemstyle} {Loaded \cst@option.jdf}} {\PackageWarning{chemstyle} {Required style \cst@option\space does not exist}} % \end{macrocode} % \iffalse % % \fi % % \section{Configuration files} % % Each journal style needs slightly differing commands to get the % formatting just right. This is handled here, with each style in % a separate file. There is not a lot happening in most of these % files, as the information is by its nature quite repetitive. % % \iffalse %<*rsc> % \fi % % \subsection{RSC style} % % \begin{macrocode} \ProvidesFile{rsc.jdf}[2007/08/23 v1.0a] \renewcommand{\figurename}{Fig.} \RequirePackage[labelsep=quad,labelfont=bf]{caption} \let\cst@emph\relax \def\cst@hyph{} \let\cst@super\textsuperscript \cst@prefixfalse % \end{macrocode} % \iffalse % %<*angew> % \fi % %\subsection{\emph{Angew.~Chem.}~style} %\changes{v1.0a}{2007/08/23}{Fixed incorrect Latin formatting for % \texttt{angew} option} % \begin{macrocode} \ProvidesFile{cst-angew.def}[2007/08/23 v1.0a] \RequirePackage[labelsep=period,labelfont={bf,it},font=sf]{caption} \captionsetup[table]{labelsep=colon} \captionsetup{singlelinecheck=off} \let\cst@emph\emph \def\cst@hyph{} \let\cst@super\relax \cst@prefixtrue \latinemphoff % \end{macrocode} % \iffalse % %<*jacs> % \fi % % \subsection{\emph{J.~Am.~Chem.~Soc.}~style} % % \begin{macrocode} \ProvidesFile{jacs.jdf}[2007/08/23 v1.0a] \RequirePackage[labelfont={bf,it,sf},textfont=sf]{caption} \DeclareCaptionLabelSeparator{perquad}{.\quad} \captionsetup{labelsep=perquad} \captionsetup[figure]{textfont=rm} \captionsetup{singlelinecheck=off} \let\cst@emph\emph \def\cst@hyph{} \let\cst@super\textsuperscript \cst@prefixtrue \floatstyle{plaintop} \restylefloat{scheme} \floatstyle{plain} \latinemphoff \cst@notesbeforefalse % \end{macrocode} % \iffalse % %<*ic> % \fi % % \subsection{\emph{Inorg.~Chem.}~style} % % Almost exactly the same as for \emph{J.~Am.~Chem.~Soc.}, so most of % the work is left to |jacs.jdf|. % \begin{macrocode} \ProvidesFile{ic.jdf}[2007/08/23 v1.0a] \input {jacs.jdf} \captionsetup{textfont=rm} % \end{macrocode} %\iffalse % %<*jpc> %\fi % %\subsection{\emph{J.~Phys.~Chem.}~style} %\changes{v1.0a}{2007/08/23}{Added \emph{J.~Phys.~Chem.}~style} % % \begin{macrocode} \ProvidesFile{jpc.jdf}[2007/08/23 v1.0a] \RequirePackage[font=bf,labelsep=colon]{caption} \DeclareCaptionFormat{labelcaps}{\MakeUppercase{#1}#2#3} \captionsetup{format=labelcaps} \captionsetup[figure]{format=plain,textfont=md,labelsep=period} \captionsetup{singlelinecheck=off} \let\cst@emph\emph \def\cst@hyph{} \let\cst@super\textsuperscript \cst@prefixtrue \floatstyle{plaintop} \restylefloat{scheme} \floatstyle{plain} \latinemphoff \cst@notesbeforefalse % \end{macrocode} %\iffalse % %<*orglett> % \fi % % \subsection{\emph{Org.~Lett.}~style} %\changes{v1.0a}{2007/08/23}{Added \emph{Org.~Lett.}~style} % % \begin{macrocode} \ProvidesFile{orglett.jdf}[2007/08/23 v1.0a] \RequirePackage{xcolor} % \end{macrocode} %\begin{macro}{\OrgLettColour} % To allow the user to control the colour of the ``bars'' in this % style, an additional macro is provided. The |purple| colour looks % about right for matching the printed journal, but if anyone has a % better suggestion please let the package author know. % \begin{macrocode} \newcommand*{\OrgLettColour}{purple} % \end{macrocode} %\end{macro} % In order to get the distinctive coloured bars used by % \emph{Org.~Lett.}, a new style for floats is needed. This is based % on the |ruled| style from the |float| package. % \begin{macrocode} \newcommand\fs@orglett{\def\@fs@cfont{\bfseries} \let\@fs@capt\floatc@ruled \def\@fs@pre{\begingroup\color{\OrgLettColour} \hrule height12pt depth0pt \kern2pt\endgroup}% % \end{macrocode} % This is the same \cmd{\@fs@mid} as is used in the |float| package % for |plaintop| floats. % \begin{macrocode} \def\@fs@mid{\vspace\belowcaptionskip\relax}% \def\@fs@post{\begingroup\color{\OrgLettColour}\kern2pt \hrule height1.5pt depth0pt\endgroup}% \let\@fs@iftopcapt\iftrue} % \end{macrocode} % Figures need to be slightly different, so an almost identical % command is needed. % \begin{macrocode} \newcommand\fs@orglettfig{\def\@fs@cfont{\bfseries} \let\@fs@capt\floatc@plain \def\@fs@pre{\begingroup\color{\OrgLettColour} \hrule height12pt depth0pt \kern2pt\endgroup}% \def\@fs@mid{\vspace\abovecaptionskip\relax}% \def\@fs@post{\begingroup\color{\OrgLettColour}\kern2pt \hrule height1.5pt depth0pt\endgroup}% \let\@fs@iftopcapt\iffalse} % \end{macrocode} % The new style is now applied. Users can change back to normal % floats by changing back to the |plain| style. % \begin{macrocode} \floatstyle{orglettfig} \restylefloat{figure} \floatstyle{orglett} \restylefloat{scheme} \restylefloat{table} % \end{macrocode} % The more usual style commands now occur. % \begin{macrocode} \RequirePackage[labelfont=bf]{caption} \DeclareCaptionLabelSeparator{perquad}{.\quad} \captionsetup{labelsep=perquad} \let\cst@emph\emph \def\cst@hyph{} \let\cst@super\textsuperscript \cst@prefixtrue \latinemphoff \cst@notesbeforefalse % \end{macrocode} % \iffalse % %<*none> %\fi % % \subsection{The empty style --- none} % % To allow the user to load the extra macros provided here without % any style changes, a ``do nothing'' style is provided. It simply % makes sure that nothing changes compared to the LaTeX kernel. % This requires undoing the defaults provided above. For commands % where a default is needed (\eg the \cmd{\latin} command) the % style of the RSC is followed. % \begin{macrocode} \ProvidesFile{none.jdf}[2007/08/23 v1.0a] \RequirePackage{caption} \floatstyle{plain} \restylefloat{table} \labelformat{scheme}{#1} \labelformat{figure}{#1} \labelformat{table}{#1} \floatplacement{table}{tbp} \floatplacement{scheme}{tbp} \floatplacement{figure}{tbp} % \end{macrocode} % \iffalse % % \fi % \PrintChanges % \PrintIndex % \Finale