% \iffalse meta-comment % % Copyright (C) 2007-08 by % Joseph Wright % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either % version 1.3c of this license or (at your option) any later % version. The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of % LaTeX version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The current maintainer of this work is Joseph Wright. % % This work consists of the source file chemscheme.dtx % and the derived files chemstyle.ins, % chemstyle.sty, % chemstyle.pdf, % chemstyle-manual.pdf, % chemstyle-demo.ltx, % rsc.jdf, % angew.jdf, % tetlett.jdf, % jomc.jdf, % jacs.jdf, % ic.jdf, % jpc.jdf, % orglett.jdf, % none.jdf, % jawltxdoc.sty and % README % % TDS-ready files: % The compressed file chemstyle.tds.zip contains an unpacked % version of all of the files included here, and pre-compiled % documentation in PDF format. Simply decompress % chemstyle.tds.dtx in your local TeX directory, run your hash % program (texhash, initexmf --update-fndb, etc.) and everything % will be ready to go. The user documentation for the package is % called chemstyle-manual.pdf; the file chemstyle.pdf includes the % user manual and the fully-indexed source code. % % Unpacking: % (a) If chemstyle.ins is present: % tex chemstyle.ins % (b) Without chemstyle.ins: % tex chemstyle.dtx % (c) If you use LaTeX to generate files: % latex \let\install=y\input{chemstyle.dtx} % % Documentation: % (a) Without write18 enabled: % pdflatex chemstyle.dtx % makeindex -s gind.ist chemstyle.idx % makeindex -s gglo.ist -o chemstyle.gls chemstyle.glo % pdflatex chemstyle.dtx % pdflatex chemstyle.dtx % (b) With write18 enabled: % pdflatex chemstyle.dtx % pdflatex chemstyle.dtx % pdflatex chemstyle.dtx % % Installation: % Copy chemstyle.sty to a location searched by TeX, and if % required by your TeX installation, run the appropriate command % to build a hash of files (texhash, initexmf --update-fndb, % etc.) % % Note: % The jawltxdoc.sty file is not needed for installation, % only for building the documentation; it may be deleted % after producing the documentation (if necessary). % %<*ignore> % This is all taken verbatim from Heiko Oberdiek's packages \begingroup \def\x{LaTeX2e}% \expandafter\endgroup \ifcase 0\ifx\install y1\fi\expandafter \ifx\csname processbatchFile\endcsname\relax\else1\fi \ifx\fmtname\x\else 1\fi\relax \else\csname fi\endcsname % %<*install> \input docstrip.tex \keepsilent \askforoverwritefalse \preamble ---------------------------------------------------------------- The chemstyle bundle --- Schemes and style for chemistry Maintained by Joseph Wright E-mail: joseph.wright@morningstar2.co.uk Released under the LaTeX Project Public License v1.3c or later See http://www.latex-project.org/lppl.txt ---------------------------------------------------------------- \endpreamble \Msg{Generating chemstyle files:} \generate{\file{jawltxdoc.sty}{\from{\jobname.dtx}{jawltxdoc}} } \usedir{tex/latex/chemstyle} \generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}} \file{chemscheme.sty}{\from{chemscheme.dtx}{package}} } \usedir{source/latex/chemstyle} \generate{\file{\jobname.ins}{\from{\jobname.dtx}{install}} } \usedir{tex/latex/chemstyle/config} \generate{\file{rsc.jdf}{\from{chemstyle.dtx}{rsc}} \file{angew.jdf}{\from{chemstyle.dtx}{angew}} \file{tetlett.jdf}{\from{chemstyle.dtx}{tetlett}} \file{jomc.jdf}{\from{chemstyle.dtx}{jomc}} \file{jacs.jdf}{\from{chemstyle.dtx}{jacs}} \file{ic.jdf}{\from{chemstyle.dtx}{ic}} \file{jpc.jdf}{\from{chemstyle.dtx}{jpc}} \file{orglett.jdf}{\from{chemstyle.dtx}{orglett}} } \generate{\file{none.jdf}{\from{chemstyle.dtx}{none}} } \nopreamble\nopostamble \usedir{doc/latex/chemstyle} \generate{\file{chemstyle-demo.ltx}{\from{\jobname.dtx}{demo}} \file{README.txt}{\from{\jobname.dtx}{readme}} } \endbatchfile % %<*readme> ---------------------------------------------------------------- The chemstyle bundle --- Schemes and style for chemistry Maintained by Joseph Wright E-mail: joseph.wright@morningstar2.co.uk Released under the LaTeX Project Public License v1.3 or later See http://www.latex-project.org/lppl.txt ---------------------------------------------------------------- The chemstyle bundle provides two packages: chemstyle and chemscheme. Both are intended to help chemists create floating graphics and match published styles. The chemscheme package consists of two parts, both related to chemical schemes. The package adds a scheme float type to the LaTeX default types figure and table. The scheme float type acts in the same way as those defined by the LaTeX kernel, but is intended for chemical schemes. The package also provides a method for adding automatic chemical numbering to schemes. 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. % %<*ignore> \fi % Will Robertson's trick \immediate\write18{makeindex -s gind.ist -o \jobname.ind \jobname.idx} \immediate\write18{makeindex -s gglo.ist -o \jobname.gls \jobname.glo} % %<*driver> \PassOptionsToClass{a4paper}{article} \documentclass[german,english,UKenglish]{ltxdoc} \EnableCrossrefs \CodelineIndex \RecordChanges %\OnlyDescription \usepackage[final]{graphicx} \usepackage[journal=none,xspace=true]{chemstyle} \usepackage{jawltxdoc} % To show the features of \eg, \ie and so on, a bit of work is % required, as they are defined by jawltxdoc and by chemstyle \let\eg\undefined \let\ie\undefined \let\latin\undefined \let\etc\undefined \begin{document} \DocInput{\jobname.dtx} \end{document} % % \fi % %\CheckSum{645} % % \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} %\changes{v1.0b}{2007/09/04}{Added \pkg{microtype} and % \pkg{notes2bib} to template} %\changes{v1.1}{2007/09/17}{License changed from \textsc{gpl} to % \textsc{lppl}} %\changes{v1.1}{2007/09/17}{Phrases modified to better avoid clash % with user's own commands} %\changes{v1.1}{2007/09/17}{Fixed error with spacing after % \emph{e.g.}~and \emph{i.e.}} %\changes{v1.1}{2007/09/17}{Added \opt{phrases} option} %\changes{v1.1}{2007/09/17}{Added \opt{siunits} option} %\changes{v1.1}{2007/09/17}{Added \opt{xspace} option} %\changes{v1.1a}{2007/09/18}{Fixed error in documentation compilation % under \LaTeX} %\changes{v1.1c}{2007/09/23}{Fixed problems with capitalisation % of \pkg{SIunits}} %\changes{v1.1c}{2007/09/23}{Documentation improved} %\changes{v1.1c}{2007/09/23}{Added \pkg{SIunits} option} %\changes{v1.1e}{2007/10/07}{Fixed packaging problem} %\changes{v1.2}{2008/03/07}{Various internal tweaks} %\changes{v1.2}{2008/03/07}{Removed obsolete \opt{ch} and % \opt{chapter} options} %\changes{v1.2a}{2008/03/21}{Fixed error with restyling % \texttt{scheme} floats, caused by change in \pkg{chemscheme}} % %\setkeys{lst}{language=[LaTeX]{TeX},moretexcs={mmHg,Molar, % molar,cmc,Hz,SI,standardstate,iPr,nPr,nBu,sBu,tBu,iBu, % cstsetup,latin,eg,ie,etc,invacuo,etal,floatstyle,restylefloat, % upsigma,uppi}} % %\DoNotIndex{\@fs@capt,\@fs@cfont,\@fs@iftopcapt,\@fs@mid,\@fs@post} %\DoNotIndex{\@fs@pre,\@gobblefour,\@ifclassloaded,\@ifnextchar} %\DoNotIndex{\@ifpackagelater,\@ifpackageloaded,\@ifundefined} %\DoNotIndex{\@nameuse,\@undefined,\abovecaptionskip,\addto} %\DoNotIndex{\AtBeginDocument,\begingroup,\belowcaptionskip} %\DoNotIndex{\bfseries,\bibname,\captionsetup,\centi,\cm,\color} %\DoNotIndex{\csgappto,\csname,\cubed,\CurrentOption,\deci} %\DoNotIndex{\DeclareCaptionFormat,\DeclareCaptionLabelSeparator} %\DoNotIndex{\DeclareMathSymbol,\DeclareOptionX} %\DoNotIndex{\DeclareRobustCommand,\DeclareSymbolFont,\def} %\DoNotIndex{\define@boolkey,\define@choicekey,\define@cmdkeys} %\DoNotIndex{\define@key,\dm,\edef,\else,\emph,\endcsname} %\DoNotIndex{\endgroup,\endinput,\ensuremath,\ExecuteOptionsX} %\DoNotIndex{\expandafter,\fi,\figurename,\floatc@plain} %\DoNotIndex{\floatc@ruled,\floatcontentscentre,\floatplacement} %\DoNotIndex{\floatstyle,\futurelet,\gdef,\hertz,\hrule,\iffalse} %\DoNotIndex{\ifnum,\iftrue,\ifx,\input,\InputIfFileExists} %\DoNotIndex{\kern,\labelformat,\languagename,\let,\makeatletter} %\DoNotIndex{\makeatother,\MakeUppercase,\mathord,\MessageBreak} %\DoNotIndex{\metre,\milli,\mmHg,\mole,\NeedsTeXFormat,\newcommand} %\DoNotIndex{\newcounter,\newfloat,\newif,\newunit,\OrgLettColour} %\DoNotIndex{\PackageError,\PackageInfo,\PackageWarning} %\DoNotIndex{\PassOptionsToPackage,\ProcessOptionsX,\providecommand} %\DoNotIndex{\ProvidesFile,\ProvidesPackage,\quad,\refname,\relax} %\DoNotIndex{\renewcommand,\RequirePackage,\restylefloat,\rotatebox} %\DoNotIndex{\rpcubed,\schemename,\selectlanguage,\setkeys} %\DoNotIndex{\requiresiconfigs,\space,\spacefactor,\tablename,\textsc} %\DoNotIndex{\textsuperscript,\the,\unitsep,\unitsuperscript,\usk} %\DoNotIndex{\value,\vspace,\xspace,\z@} % %\DoNotIndex{\',\begin,\end,\documentclass,\usepackage} % % \title{\currpkg\ --- Writing chemistry with style^^A % \thanks{This file describes version \fileversion, last revised % \filedate.}} % \author{Joseph Wright^^A % \thanks{E-mail: joseph.wright@morningstar2.co.uk}} % \date{Released \filedate} % % \maketitle % %\begin{abstract} % The \currpkg 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} % %\begin{multicols}{2} %\tableofcontents %\end{multicols} % %\section{Introduction} % The aim of \currpkg 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. \currpkg has grown out of the \pkg{rsc} package, which had % a similar aim but was much more limited (and less robustly % implemented). The \currpkg package is also designed with the use % of \pkg{biblatex} in mind: the \pkg{rsc} package is closely bound % to traditional \BibTeX\ use. % % As a successor to the \pkg{rsc} package, \currpkg provides a range % of chemistry-related additional macros. The set provided here is % an extended version of those provide by \pkg{rsc}. Everything that % can be done using the \pkg{rsc} \LaTeX\ package is therefore % possible using the \currpkg package. % % The formatting system provided by \currpkg 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 \currpkg} %\DescribeOption{journal} % \currpkg should be loaded with a package option specifying which % journal style to follow. Currently, \currpkg is aware of a the % styles listed in \ref{styles}. New styles can be developed by % creating a new file modelled on the existing definitions; \currpkg % 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.} \\ % jomc & \emph{J.\ Organomet.\ Chem.}, % \emph{Coord.\ Chem.\ Rev.} \\ % 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.} \\ % tetlett & \emph{Tetrahedron}, \emph{Tetrahedron Lett.} \\ % \bottomrule % \end{tabular} % \caption{Styles provided by \currpkg}\label{styles} %\end{table} % The style files provided with \currpkg 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 \opt{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. This document has been compiled % implicity using the \opt{none} option, for example. % %\subsection{Creating styles} % The process of creating a new styles for \currpkg is intended to be % relatively easy. New styles should be saved as files with the % extension \ext{jdf} (standing for for Journal Definition File), and % should be saved somewhere in the path searched by % \TeX.\footnote{Depending on your \TeX\ distribution, you may need % to rebuild your file database after creating a new style. For % Mik\TeX\ users, this can be done graphically or by typing % \texttt{mpm --update-db} at the command line; for TeXLive, run % \texttt{texhash}.} The definition files included in the package % should provide a guide to the basic options available for producing % new styles. Arbitrary \TeX\ commands can be included, if they are % necessary for a particular style. For example, other packages can % be loaded in \cs{usepackage}. % % The maintainer of \currpkg is happy to add new styles to the % package, either by contribution by users or on request (when he has % sufficient time!). If you have a new style to add (or corrections % to an existing one), please contact the package author. % %\subsection{Package options} %\DescribeOption{journal} % As of version 1.2, \currpkg uses the \pkg{keyval} system for % option management. The choice of journal style can therefore be % given as a normal option or by using the key \opt{journal=}. The % other package options provided by the package are described as they % arise in the documentation. % %\DescribeMacro{\cstsetup} % Some of the package options can only be set when loading the % package. The choice of journal style is one of these. Others can % be altered anywhere in the document, using the \cs{cstsetup} macro. % This accepts a \pkg{keyval} list and processes it as needed. % %\DescribeOption{chemcompounds} %\DescribeOption{floatrow} % \currpkg loads the \pkg{chemscheme} package, and therefore will % pass through the \opt{chemcompounds} option. It can also request % floats are created either by \pkg{float} or \pkg{floatrow}; this is % controlled by the \opt{floatrow} option. Setting % \opt{floatrow=false} means that \pkg{float} is used to generate % floats; the default value is \defaultopt{true}. % %\section{Naming of the references section} % \currpkg alters the naming of the references section of a document. % By default, \currpkg alters the value of \cs{bibname} or % \cs{refname} (as appropriate) to the form of words chosen by the % target journal for the ``References'' section. % % The ``\refname'' naming commands are language-aware, \emph{via} the % \pkg{babel} interface. Currently, \currpkg includes appropriate % labels for \pkg{babel} languages \opt{english}, \opt{UKenglish}, % \opt{ngerman} and \opt{french}. Other languages can be added if % appropriate wordings are provided to the author. The naming system % is designed to work correctly with both \pkg{natbib} and % \pkg{biblatex}. % %\DescribeOption{notes} %\DescribeOption{nonotes} % The package recognises the \opt{notes} option for controlling how % the references section is named. The accepts the values % \opt{true}, \opt{false} and \opt{auto}. The Boolean values either % enable or disable the addition of ``Notes and'' to the % ``References'' of the section title. The \opt{auto} option works % in conjunction with the \pkg{notes2bib} package. If notes are % added, ``Notes and'' is included in the section title, whereas if % no notes are given the section title remains as ``References''. % The \opt{nonotes} option is equivalent to \opt{notes=false}. % %\DescribeOption{notesbefore} % The second option for this area is \opt{notesbefore}. This takes % \opt{true} and \opt{false} only, and sets whether ``Notes and % References'' or ``References and Notes'' is produced. % %\section{Additional macros} %\subsection{Additional units} %\DescribeMacro{\Hz} %\DescribeMacro{\mmHg} %\DescribeMacro{\molar} %\DescribeMacro{\Molar} %\DescribeMacro{\cmc} % Both the \pkg{SIunits} and \pkg{unitsdef} packages provide methods % for handling a range of units, but do not include a small number of % unit macros useful to chemists. In contrast, the \pkg{siunitx} % package provides all of these using the \opt{synchem} module. If % \pkg{SIunits} or \pkg{unitsdef} are loaded, \currpkg provides the % missing units. On the other hand, if no unit package is loaded, % \pkg{siunitx} is loaded and provides the units itself. %\begin{LaTeXexample} % \SI{10}{\Hz}\\ % \SI{20}{\mmHg}\\ % \SI{30}{\molar}\\ % \SI{40}{\Molar}\\ % \SI{50}{\cmc} %\end{LaTeXexample} % %\subsection{The standard state symbol} %\DescribeMacro{\standardstate} % Related to the above, but not exactly a unit is the % \cs{standardstate} command.\footnote{The \cs{standardstate} macro % is only defined if the user does not have their own version.} This % generates the tricky \cs{standardstate} symbol. The symbol will % adapt to local sizing. %\begin{LaTeXexample} % the standard conditions are indicated: \standardstate\\ % Common but not correct: % $\Delta G_\mathrm{f}^\standardstate$ or % $\Delta G_\mathrm{f}{}^\standardstate$ \\ % Better: % $\Delta_\mathrm{f}G^\standardstate$\\ % Sizing: % $\int^{T_{\mathrm{out}}}_{T^\standardstate}$ %\end{LaTeXexample} % %\subsection{Alkyl radicals} %\DescribeMacro{\nPr} %\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, \cs{iPr} gives \iPr, \cs{iBu} gives \iBu % and \cs{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. %\begin{LaTeXexample} % The alkyl group could be \nPr, \iPr\\ % or \nBu without affecting the selectivity. %\end{LaTeXexample} % %\DescribeOption{xspace} % When \currpkg is loaded using the \opt{xspace} option, the % \pkg{xspace} package is automatically used to add space after the % command names, so that |\iPr group| will result in ``\iPr\ group'' % being typeset. % %\DescribeOption{radhyphen} %\DescribeOption{rademph} %\DescribeOption{radsuper} %\DescribeOption{radprefix} % The appearance of these radical abbreviations is controlled by the % package options \opt{radhyphen}, \opt{rademph}, \opt{radsuper} and % \opt{radprefix}. The journal styles set these automatically, but % they can be redefined at any point. The options work as might be % expected, and are Boolean switches. %\begin{LaTeXexample} % \cstsetup{radhyphen=false,radsuper=true}\\ % \iPr \tBu % \cstsetup{radhyphen=true,radsuper=false,% % radprefix=false,rademph=false}\\ % \iBu \sBu %\end{LaTeXexample} % %\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 % \cs{latin}, this allows ready switching from italic to Roman % typesetting. Notice that \cs{etc}, \cs{ie} and \cs{eg} are aware % of trailing periods, and so doubling-up should not occur. Once % again, these macros use \pkg{xspace} when given as a package option % to handle automatic addition of spaces after these phrases. % %\DescribeOption{abbremph} % The use of italic for these abbreviations is set by altering the % package option \opt{abbremph}, which takes values \opt{true} and % \opt{false}. %\begin{LaTeXexample} % \etal or \invacuo plus \latin{some text}\\ % \cstsetup{abbremph=false} % \ie equals \eg perhaps \etc %\end{LaTeXexample} % %\DescribeOption{abbrcomma} % For American journals, where it is obligatory to follow ``\eg'' and % ``\ie'' with a comma, the package provides a mechanism for handling % this automatically. Thus, when using an appropriate journal style, % |\eg|, |\eg.| and |\eg,| will all result in typesetting ``\eg,''. % The Boolean package option \opt{abbrcomma} controls this. %\begin{LaTeXexample} % \eg this\\ % \cstsetup{abbrcomma=true} % \ie that %\end{LaTeXexample} % % The \cs{etc} and \cs{etal} commands are set up on the % assumption that they come at the end of a sentence. Hence the % spacing after these will default to an inter-sentence space. If % you desire an inter-word space, use the normal methods %\begin{LaTeXexample} % \etc\ more text \\ % \etal~have shown %\end{LaTeXexample} % %\DescribeOption{nophrases} % The definitions of all of the phrases are designed not to overwrite % any given by the user \emph{in the preamble}. So, if you have your % own \cs{latin} macro, it will be used even if you load \currpkg. If % you encounter any problems, try loading the package with the % \opt{nophrases} option; this option prevents the package even % trying to define any of the phrase macros. % %\DescribeMacro{\latinemphon} %\DescribeMacro{\latinemphoff} % For backward-compatibiltiy with previous versions of \currpkg, the % macros \cs{latinemphon} and \cs{latinemphoff} are provided. These % work as would be expected, to alter the formatting produced by % \cs{latin}. The more general \pkg{keyval} method is now preferred % for making this change. % %\section{Additional information} %\subsection{Advice for users of the \pkg{rsc} package} % The \currpkg package is intended as a replacement for the \pkg{rsc} % package. As such, it covers almost everything the the \pkg{rsc} % \LaTeX\ package does, and more. Users of \pkg{rsc} are strongly % encouraged to update to using \currpkg. The bibliography styles % provided by \pkg{rsc} will continue to be required, of course. % Migration of these styles to \pkg{biblatex} is an on-going project. % %\subsection{Interactions with other packages} % The \currpkg package has been designed to avoid, as far as % possible, clashes with other packages. The package requires the % presence of the standard \pkg{graphicx} and \pkg{varioref} % packages. If these packages need to be loaded with explicit % options, this should be done \emph{before} loading \currpkg. The % \pkg{chemscheme} package is also needed, as it provides the % floating \texttt{scheme} environment essential in synthetic % chemistry documents. % %\subsection{Captions above floats} % The \texttt{scheme} float type is generated using either the % \pkg{float} or \pkg{floatrow} package. This has the side-effect % that the placement of captions for floats does not depended on % where the \cs{caption} command comes inside the floating % environment.\footnote{Normally this is a good thing.} If you wish % to alter the placement of captions, the mechanism of the underlying % package will be needed. There are some subtle differences between % the two: altough \pkg{floatrow} provides the \pkg{float} macros, % they are not all 100\% compatible. This document is compiled using % \pkg{floatrow}, and so to fix the position of captions the % following code is appropriate. % %\begin{LaTeXexample}[float] % \begin{table}[ht] % The float contents % \caption{A caption below the float contents in the source} % \end{table} % \floatsetup[table]{style=plain} % When using floatrow % % \floatstyle{plain} % % \restylefloat{table} When using float % \begin{table}[ht] % The second float contents, which should be above the caption % \caption{A second caption below the float contents % in the source} % \end{table} %\end{LaTeXexample} % %\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. Most of the packages used have % good documentation, but a brief summary of why they are recommend % follows. %\iffalse %<*demo> %\fi % \begin{macrocode} \documentclass[fontsize=10pt,paper=a4,english,UKenglish] {scrreprt} \usepackage{geometry,upgreek,booktabs,babel} \usepackage[journal=rsc,xspace=true]{chemstyle} \usepackage[version=3]{mhchem} \usepackage[footnotes]{notes2bib} \usepackage[final]{microtype} \usepackage[final,inactive]{pst-pdf} \usepackage[colorlinks]{hyperref} \begin{document} Document contents go here \end{document} % \end{macrocode} %\iffalse % %\fi % % 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 % \opt{parskip} option to the font and paper size ones given here. % % The \pkg{babel} system is loaded to sort out hyphenation and so on, % and could be useful if there are any foreign-language quotes. % % \pkg{geometry} allows the users to alter page layout with ease: % much better than trying to hack the raw \LaTeX\ system. % \pkg{booktabs} gives much nicer looking tables than the \LaTeXe\ % default. \pkg{upgreek} provides non-italic lowercase Greek letters, % which should be used for things such as bond descriptions. %\begin{LaTeXexample} % $\uppi$-bond $\upsigma^*$-orbital %\end{LaTeXexample} % % Load \currpkg (of course) to give not only some easy formatting, % but also to automatically provide a float type for schemes, thanks % to the \pkg{chemscheme} package. This also loads either % \pkg{chemcompounds} or (optionally) \pkg{bpchem} to track compound % numbers. % % The \pkg{mhchem} package provides the \cs{ce} command for rapidly % typesetting formulas, so that you can type |\ce{H2SO4}| and get % $\ce{H2SO4}$.\footnote{There is a slight cheat here, as this % document uses lower-case numerals in the text. The example is % written as \texttt{\$\textbackslash ce\{H2SO4\}\$}.} % % The \pkg{microtype} package improves formatting when used with the % pdf\TeX\ engine. By giving the \opt{final} option, it is active % even when using \opt{draft} as a global option. % % Using \pkg{notes2bib} allows the user to automatically add notes to % the bibliography from within the document body. So you can put % |\bibnote{A note}| in the source, and this will move into the % References section without any further effort. The \opt{footnotes} % option means that footnotes do the same. % % Finally, the \pkg{hyperref} package makes headings, citations and % so on into hyperlinks. % %\StopEventually{} % %\iffalse %<*package> %\fi %\section{The package code} %\subsection{Setup code} %\begin{macro}{\cst@id} %\begin{macro}{\cst@ver} % First of all, the package identifies itself and loads other % packages needed to function. Loading \pkg{chemscheme} is deferred % until later, to allow processing of options at the correct point. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \def\cst@id$#1: #2.#3 #4 #5-#6-#7 #8 #9${% \def\cst@ver{#5/#6/#7\space v1.3c\space}} \cst@id $Id: chemstyle.dtx 50 2008-08-18 16:21:24Z joseph $ \ProvidesPackage{chemstyle} [\cst@ver Writing chemistry with style] % \end{macrocode} %\end{macro} %\end{macro} %\changes{v1.1d}{2007/10/04}{Require caption in all cases} %\changes{v1.0a}{2007/08/23}{No longer load \texttt{fixltx2e} % package} %\changes{v1.2}{2008/03/05}{Added \pkg{xkeyval} interface} % Packages that are needed under all circumstances are loaded here. % There are some limitations on the age of \pkg{xkeyval}. % \begin{macrocode} \RequirePackage{xkeyval}[2005/05/07] \RequirePackage{graphicx,varioref,caption,xspace} % \end{macrocode} %\begin{macro}{\cst@tempa} %\changes{v1.2}{2008/03/05}{New macro} %\begin{macro}{\cst@tempb} %\changes{v1.2}{2008/03/05}{New macro} % A couple of temporary private macros. % \begin{macrocode} \newcommand*{\cst@tempa}{} \newcommand*{\cst@tempb}{} % \end{macrocode} %\end{macro} %\end{macro} % %\subsection{Option handling} %\begin{macro}{\cst@boolkey} % Option handling is processed using \pkg{xkeyval}. As a number of % Boolean keys are needed, a shortcut is handy. % \begin{macrocode} \newcommand*{\cst@boolkey}[1]{ \define@boolkey[cst]{opt}[cst@]{#1}[true]{}} % \end{macrocode} %\end{macro} %\begin{macro}{\ifcst@chemcompounds} %\begin{macro}{\ifcst@floatrow} %\begin{macro}{\ifcst@xspace} %\begin{macro}{\ifcst@phrases} %\begin{macro}{\ifcst@radprefix} %\begin{macro}{\ifcst@rademph} %\begin{macro}{\ifcst@radsuper} %\begin{macro}{\ifcst@radhyphen} %\begin{macro}{\ifcst@abbremph} %\begin{macro}{\ifcst@abbrcomma} %\begin{macro}{\ifcst@notesbefore} % The Boolean keys are now defined. % \begin{macrocode} \cst@boolkey{chemcompounds} \cst@boolkey{floatrow} \cst@boolkey{xspace} \cst@boolkey{phrases} \cst@boolkey{radprefix} \cst@boolkey{rademph} \cst@boolkey{radsuper} \cst@boolkey{radhyphen} \cst@boolkey{abbremph} \cst@boolkey{abbrcomma} \cst@boolkey{notesbefore} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\ifcst@notes} %\begin{macro}{\ifcst@autonotes} %\begin{macro}{\cst@tempa} %\begin{macro}{\cst@tempb} % For notes, some choices are available. These need a bit of % testing. % \begin{macrocode} \newif\ifcst@notes \newif\ifcst@autonotes \define@choicekey*[cst]{opt}{notes}[\cst@tempa] {true,false,auto}[true] {\cst@notesfalse \cst@autonotesfalse \edef\cst@tempb{auto} \ifx\cst@tempa\cst@tempb \cst@notestrue \cst@autonotestrue \fi \edef\cst@tempb{true} \ifx\cst@tempa\cst@tempb \cst@notestrue \fi} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} % Some old options are no longer needed at all. % \begin{macrocode} \DeclareOptionX[cst]{siunits} {\PackageInfo{chemstyle}{Option siunits no longer required}} \DeclareOptionX[cst]{SIunits} {\PackageInfo{chemstyle}{Option siunits no longer required}} \DeclareOptionX[cst]{nonotes} {\ExecuteOptionsX[cst]{notes=false}} \DeclareOptionX[cst]{nophrases} {\ExecuteOptionsX[cst]{phrases=false}} % \end{macrocode} %\begin{macro}{\cst@journal} %\begin{macro}{\cst@language} % The \opt{journal} option can be given with or without % \opt{journal=}. % \begin{macrocode} \define@cmdkeys[cst]{opt}[cst@]{journal,language} \DeclareOptionX*{\edef\cst@journal{\CurrentOption}} % \end{macrocode} %\end{macro} %\end{macro} % The default options are executed, and the user options are % processed. % \begin{macrocode} \setkeys[cst]{opt}{ notes=true, phrases=true, chemcompounds=true, xspace=true, floatrow=true, journal=none, radprefix=true, rademph=true, radsuper=false, radhyphen=true, abbremph=true, abbrcomma=false, language=english, notesbefore=true} \ProcessOptionsX[cst] % \end{macrocode} % With the options processed, those to be passed to \pkg{chemscheme} % are sorted out. % \begin{macrocode} \ifcst@chemcompounds \PassOptionsToPackage{chemcompounds}{chemscheme} \fi \ifcst@floatrow \RequirePackage[floats=floatrow]{chemscheme} \else \RequirePackage[floats=float]{chemscheme} \fi % \end{macrocode} %\begin{macro}{\cst@disablekey} % Some of the options are no longer relevant once the package is % loaded. These are disabled here with a suitable message. % \begin{macrocode} \newcommand*{\cst@disablekey}[1]{ \define@key[cst]{opt}{#1}{\PackageWarning{chemstyle} {Option `#1' only valid when loading package}}} \AtBeginDocument{ \cst@disablekey{floatrow} \cst@disablekey{journal} \cst@disablekey{phrases} \cst@disablekey{nophrases} \cst@disablekey{notes} \cst@disablekey{nonotes} \cst@disablekey{chemcompounds}} % \end{macrocode} %\end{macro} %\begin{macro}{\cstsetup} % A macro for changing the settings at run-time without needing to % know the internals of the package. % \begin{macrocode} \newcommand*{\cstsetup}[1]{% \iffalse{\fi\ifnum0=`}\fi \setkeys[cst]{opt}{#1}% \ifnum0=`{\fi\iffalse}\fi} % \end{macrocode} %\end{macro} % %\subsection{Extra units} %\changes{v1.2}{2008/03/06}{Re-write of units section} %\changes{v1.2b}{2008/04/14}{Change due to name change of \pkg{si} % package to \pkg{siunitx}} %\changes{v1.2c}{2008/06/10}{Altered call to \pkg{siunitx} % function} %\changes{v1.3b}{2008/06/24}{Default to loading \pkg{siunitx}} %\begin{macro}{\cmc} %\begin{macro}{\Hz} %\begin{macro}{\cubiccentimeter} %\begin{macro}{\Molar} %\begin{macro}{\molar} %\begin{macro}{\mmHg} %\begin{macro}{\mol} % The \pkg{siunitx} package provides all of the units desired here. % So if it is loaded, the module \opt{synchem} is all that needs to % be loaded. Otherwise, a series of tests are needed for % \pkg{SIunits} and \pkg{unitsdef}. If either of these are loaded, % they are used; if not, then \pkg{siunitx} is loaded in any case. % \begin{macrocode} \@ifpackageloaded{siunitx} {\requiresiconfigs{synchem}} {\@ifpackageloaded{SIunits} {\newcommand*{\cubiccentimeter}{\centi\metre\cubed} \newcommand*{\Molar}{\textsc{m}} \newcommand*{\molar}{\mole\usk\deci\metre\rpcubed} \newcommand*{\mmHg}{\milli\metre Hg} \newcommand*{\mol}{\mole} \newcommand*{\cmc}{\cubiccentimeter} \newcommand*{\Hz}{\hertz}} {\@ifpackageloaded{unitsdef} {\newunit{\cubiccentimeter}{% \cm\unitsuperscript{3}} \newunit{\Molar}{\textsc{m}} \newunit{\molar}{% \mole\unitsep\dm\unitsuperscript{--3}} \newunit{\mmHg}{mmHg} \newunit{\mol}{\mole} \newcommand*{\cmc}{\cubiccentimeter} \newcommand*{\Hz}{\hertz}} {\RequirePackage[alsoload=synchem]{siunitx}}}} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} % %\subsection{Standard state symbol} %\begin{macro}{\standardstate} %\changes{v1.3a}{2008/07/21}{Completely new definition} %\begin{macro}{\cst@sstate} %\begin{macro}{\cst@s@state} % The ``standard state'' symbol is handy. This definition % is adapted from one posted several times to % \texttt{comp.text.tex} by Donald Arseneau. % \begin{macrocode} \providecommand*{\standardstate}{% {\ensuremath{\protect\cst@sstate}}} \newcommand*{\cst@sstate}{\mathpalette\cst@s@state\circ} \newcommand*{\cst@s@state}[2]{% \ooalign{\hfil$#1-$\hfil\cr\hfil$#1#2$\hfil\cr}} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} % %\subsection{Alkyl radicals} %\begin{macro}{\cst@radical} %\changes{v1.2}{2008/03/07}{Re-write to allow definition to change at % run-time} % The \cs{cst@radical} macro does the hard work of declaring each % abbreviation. The commands are made robust so they can (hopefully) % be used anywhere. % \begin{macrocode} \newcommand*{\cst@radical}[2]{% \expandafter\DeclareRobustCommand\expandafter*\expandafter{% \csname #1#2\endcsname}{% % \end{macrocode} %\begin{macro}{\cst@emph} %\begin{macro}{\cst@hyphen} %\begin{macro}{\cst@super} % To allow redefinition while running, the various component parts of % the system are defined each time an abbreviation is used. % \begin{macrocode} \ifcst@radhyphen \def\cst@hyphen{-}% \else \let\cst@hyphen\relax \fi \ifcst@radsuper \let\cst@super\textsuperscript \else \let\cst@super\relax \fi \ifcst@rademph \let\cst@emph\emph \else \let\cst@emph\relax \fi % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} % The final check is for a prefix, which is easiest to do here. % \begin{macrocode} \ifcst@radprefix \cst@super{\cst@emph{#1}}\cst@hyphen#2% \else #2\cst@hyphen\cst@super{\cst@emph{#1}}% \fi \cst@xspace}} % \end{macrocode} %\end{macro} %\begin{macro}{\cst@xspace} %\changes{v1.2}{2008/03/07}{New definition} % A re-useable \cs{xspace}-based macro. % \begin{macrocode} \newcommand*{\cst@xspace}{% \ifcst@xspace \expandafter\xspace% \fi} % \end{macrocode} %\end{macro} %\begin{macro}{\nPr} %\begin{macro}{\iPr} %\begin{macro}{\nBu} %\begin{macro}{\iBu} %\begin{macro}{\sBu} %\begin{macro}{\tBu} % 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} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\end{macro} % %\subsection{Float formatting} % The next step is to format the floats correctly. 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{figure} \floatplacement{table}{htbp} \floatplacement{figure}{htbp} % \end{macrocode} % Work with |scheme|s needs to be done after \pkg{hyperref} might be % loaded. % \begin{macrocode} \AtBeginDocument{ \restylefloat{scheme} \floatplacement{scheme}{htbp}} % \end{macrocode} % The contents of floats are centred by default, using the hook % from the \pkg{chemscheme} package. % \begin{macrocode} \floatcontentscentre % \end{macrocode} % %\subsection{Cross-references} %\changes{v1.1g}{2007/10/19}{Fixed problem with cross-referencing % when \pkg{babel} is not loaded} % The naming for cross-references is sorted out properly using the % \pkg{varioref} package. % \begin{macrocode} \labelformat{figure}{\figurename~#1} \labelformat{table}{\tablename~#1} \AtBeginDocument{\labelformat{scheme}{\schemename~#1}} % \end{macrocode} % % \subsection{Latin phrases} %\begin{macro}{\latin} %\begin{macro}{\cst@latin} %\changes{v1.1}{2007/09/17}{New macro} %\changes{v1.2}{2008/03/07}{Change of definition to allow better % working with run-time options} %\begin{macro}{\latinemphon} %\changes{v1.2}{2008/03/07}{New definition to work with \pkg{xkeyval} % system} %\begin{macro}{\latinemphoff} %\changes{v1.2}{2008/03/07}{New definition to work with \pkg{xkeyval} % system} % 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 \cs{latin} command \emph{only} if the user % does not have their own version. This is achieved here, with % precautions taken to ensure the user can define their own % \cs{latin} command \emph{after} loading \currpkg and still have % everything work properly. % \begin{macrocode} \newcommand*{\cst@latin}{% \ifcst@abbremph \expandafter\emph% \fi} \newcommand*{\latinemphon}{\cstsetup{abbremph=true}} \newcommand*{\latinemphoff}{\cstsetup{abbremph=false}} \AtBeginDocument{\providecommand*\latin{\cst@latin}} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\etc} %\begin{macro}{\invacuo} %\begin{macro}{\etal} %\changes{v1.1f}{2007/10/14}{Fixed problem with full stop spacing} %\begin{macro}{\eg} %\changes{v1.1}{2007/09/17}{Adds comma for \textsc{acs} journals} %\changes{v1.1f}{2007/10/14}{Fixed problem with full stop spacing} %\changes{v1.1f}{2007/10/14}{Definition comma-mode dependent} %\changes{v1.2}{2008/03/07}{Dynamic definition for comma mode} %\begin{macro}{\ie} %\changes{v1.1}{2007/09/17}{Adds comma for \textsc{acs} journals} %\changes{v1.1f}{2007/10/14}{Fixed problem with full stop spacing} %\changes{v1.1f}{2007/10/14}{Definition comma-mode dependent} %\changes{v1.2}{2008/03/07}{Dynamic definition for comma mode} % For the macros themselves, care is taken about trailing full stops. % The \cs{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 \cs{providecommand} % to avoid standing on the user's own versions, if they exist. % \begin{macrocode} \ifcst@phrases \AtBeginDocument{ \providecommand*{\etc} {\@ifnextchar.{\cst@etc}{\cst@etc.\cst@xspace}} \providecommand*{\invacuo} {\latin{in vacuo}\cst@xspace} \providecommand*{\etal} {\@ifnextchar.{\cst@etal}{\cst@etal.\cst@xspace}} \providecommand*{\eg} {\ifcst@abbrcomma \expandafter\cst@commaabbr% \else \expandafter\cst@nocommaabbr% \fi {eg}} \providecommand*{\ie} {\ifcst@abbrcomma \expandafter\cst@commaabbr% \else \expandafter\cst@nocommaabbr% \fi {ie}}} \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} %\begin{macro}{\cst@etal} %\changes{v1.1f}{2007/10/14}{New macro} %\begin{macro}{\cst@etc} %\changes{v1.1f}{2007/10/14}{New macro} %\begin{macro}{\cst@eg} %\changes{v1.1f}{2007/10/14}{New macro} %\begin{macro}{\cst@ie} %\changes{v1.1f}{2007/10/14}{New macro} % Internal macros are used for items ending in a full stop, to allow % clean handling of spacing. Notice that \cs{ie} and \cs{eg} % cannot come at the end of a sentence, they are designed to give % only an inter-word space. % \begin{macrocode} \newcommand*{\cst@etal}{\latin{et~al}} \newcommand*{\cst@etc}{\latin{etc}} \newcommand*{\cst@ie}{\latin{i.e\spacefactor999\relax}} \newcommand*{\cst@eg}{\latin{e.g\spacefactor999\relax}} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\cst@commaabbr} %\changes{v1.2}{2008/03/07}{New macro} %\begin{macro}{\cst@nocommaabbr} %\changes{v1.2}{2008/03/07}{New macro} % To handle the comma issue, two general macros are used. % \begin{macrocode} \newcommand*{\cst@commaabbr}[1]{% \csname cst@#1\endcsname% \cst@addpunct} \newcommand*{\cst@nocommaabbr}[1]{% \@ifnextchar.% {\csname cst@#1\endcsname} {\csname cst@#1\endcsname.\cst@xspace}} % \end{macrocode} %\end{macro} %\end{macro} %\begin{macro}{\cst@addpunct} %\changes{v1.1}{2007/09/17}{New macro} %\changes{v1.1f}{2007/10/14}{No longer used when comma not required} % The following macros are very closely based on those in the % \pkg{cite} package used for moving citations after punctuation. % The first macro is used as an initial hook. Notice that % \cs{relax} is essential here, as it provides an argument for % \cs{cst@add@punct} in the first round of checking. % \begin{macrocode} \newcommand*{\cst@addpunct}{% \cst@add@punct\relax} % \end{macrocode} %\end{macro} %\begin{macro}{\cst@add@punct} %\changes{v1.1}{2007/09/17}{New macro} % Here, a plain \TeX\ \cs{futurelet} is used to test the next % character. Notice that this macro takes a single argument, which is % used to recursively gobble up punctuation. % \begin{macrocode} \newcommand*{\cst@add@punct}[1]{% \futurelet\cst@tempa\cst@add@punct@} % \end{macrocode} %\end{macro} %\begin{macro}{\cst@add@punct@} %\changes{v1.1}{2007/09/17}{New macro} %\changes{v1.2}{2008/03/07}{Internal tweaks} %\begin{macro}{\cst@tempa} %\begin{macro}{\cst@tempb} % The checking occurs here. If a match is made, then the process is % repeated to allow the punctuation to be gobbled. % \begin{macrocode} \newcommand*{\cst@add@punct@}{% \ifx.\cst@tempa \let\cst@tempb\cst@add@punct \else \ifx,\cst@tempa \let\cst@tempb\cst@add@punct % \end{macrocode} % No match, and so new punctuation is to be added and the loop ended. % \begin{macrocode} \else \let\cst@tempb\cst@commapunct \fi \fi \cst@tempb} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\cst@commapunct} %\changes{v1.2}{2008/03/07}{Name change from \cs{cst@punct}} % The \cs{cst@punct} macro holds the comma-containing punctuation to % be added. % \begin{macrocode} \newcommand*{\cst@commapunct}{.,\cst@xspace} % \end{macrocode} %\end{macro} % %\subsection{Loading the style definition} % The style definition is loaded here, once everything necessary 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 % \ext{jdf}. %\changes{v1.1b}{2007/09/19}{Load \pkg{caption} even when % journal style does not exist} % \begin{macrocode} \InputIfFileExists{\cst@journal.jdf} {\PackageInfo{chemstyle} {Loaded \cst@journal.jdf}} {\PackageWarning{chemstyle} {Requested style `\cst@journal' does not exist\MessageBreak Loading default style} \InputIfFileExists{none.jdf}{} {\PackageError{chemstyle}{Failed to load none.jdf} {The default journal definition file was not found\MessageBreak This is a core part of chemstyle\MessageBreak Something is wrong with the installation}}} % \end{macrocode} % % \subsection{Handling reference section naming} %\changes{v1.2}{2008/03/07}{Re-write of reference-section renaming % code} %\begin{macro}{\cst@refsec} %\changes{v1.2}{2008/03/07}{New macro} % To enable the renaming of \cs{bibname} or \cs{refname} to the % desired value, some work is needed. Both \pkg{natbib} and % \pkg{biblatex} alter the behaviour here subtly. The \pkg{babel} % package also requires careful handling. The initial step is to fin % whether the document class defines chapters, as this affects % whether \cs{refname} or \cs{bibname} should be changed. This is % done inside a group so that a false definition is not left % around.\footnote{If \cs{@undefined} is ever fixed, this will no % longer be needed. If \eTeX\ was required, the \cs{ifdefined} would be % a choice here; however, \eTeX\ is not going to be required just for % this.} A second check is needed, in case the document class does not % define any reference section at all (for example, minimal does % not). % \begin{macrocode} \begingroup \@ifundefined{chapter} {\@ifundefined{refname} {\PackageInfo{chemstyle} {No bibliography name command found} \cstsetup{notes=false}} {\gdef\cst@refsec{\refname}}} {\gdef\cst@refsec{\bibname}} \endgroup % \end{macrocode} %\end{macro} %\begin{macro}{\c@bibnote} % The business-end of the work is only carried out if the \opt{notes} % option is set to \opt{true} or \opt{auto}. The check above means % that a reference section is also defined. First, some checking for % the \opt{auto} option occurs; the counter used by \pkg{notes2bib} % needs to be defined even if the package is not loaded. % \begin{macrocode} \ifcst@autonotes \AtBeginDocument{ \@ifpackageloaded{notes2bib}{} {\newcounter{bibnote}}} \fi % \end{macrocode} %\end{macro} %\begin{macro}{\cst@refname} %\changes{v1.2}{2008/03/07}{New macro} %\begin{macro}{\cst@ref@name} %\changes{v1.2}{2008/03/07}{New macro} %\begin{macro}{\cst@ref@name@} %\changes{v1.2}{2008/03/07}{New macro} % The internal macros to actually display the reference section name % deals with the various options. The \cs{expandafter}s are for % caution here: nothing \emph{should} go wrong with the nested % \cs{if} statements. % \begin{macrocode} \newcommand*{\cst@refname}{% \ifcst@notes \ifcst@autonotes \ifnum\the\value{bibnote}>\z@ \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter\cst@ref@name \else \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter\cst@ref@name@ \fi \else \expandafter\expandafter\expandafter\cst@ref@name \fi \else \expandafter\cst@ref@name@% \fi} \newcommand*{\cst@ref@name}[3]{% \ifcst@notesbefore #3\space#2\space#1% \else #1\space#2\space#3% \fi} \newcommand*{\cst@ref@name@}[3]{#1} % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} %\begin{macro}{\cst@setrefname} %\changes{v1.2}{2008/03/07}{New macro} % Setting up the section name is a tricky affair. If no section is % defined, then the whole process is skipped. Otherwise, the first % check made s if the default language matches the definition given. % If so, the heading is changed now. % \begin{macrocode} \@ifundefined{cst@refsec} {\let\cst@setrefname\@gobblefour} {\newcommand*{\cst@setrefname}[4]{ \edef\cst@tempa{#1}% \ifx\cst@tempa\cst@language \expandafter\renewcommand\expandafter*\expandafter{% \cst@refsec} {\cst@refname{#2}{#3}{#4}} \fi % \end{macrocode} %\begin{macro}{cst@tempa} % At the beginning of the document, a check needs to be made for % \pkg{babel} and \pkg{biblatex}. For the later, a low-level hack is % made to attach to the mechanism. For \pkg{babel} the appropriate % commands are added to the \cs{captions\ldots} macro. % \begin{macrocode} \AtBeginDocument{ \@ifpackageloaded{biblatex} {\def\cst@tempa{\csgappto{bib@strings@#1}} \expandafter\cst@tempa\expandafter{\expandafter \renewcommand\expandafter*\expandafter{% \cst@refsec}{% \cst@refname{#2}{#3}{#4}}}} {\@ifpackageloaded{babel} {\def\cst@tempa{\expandafter\addto\expandafter{% \csname captions#1\endcsname}} \expandafter\cst@tempa\expandafter {\expandafter\renewcommand\expandafter*% \expandafter{\cst@refsec}{% \cst@refname{#2}{#3}{#4}}} % \end{macrocode} %\end{macro} % To make sure the changes are applied \emph{now}, the current % language is re-selected. % \begin{macrocode} \expandafter\selectlanguage\expandafter{% \languagename}} {}}}}} % \end{macrocode} %\end{macro} % Default names are loaded for a range of languages. Most % journals stick to the same words, with only the order changing. %\changes{v1.1c}{2007/09/23}{Added \texttt{german} alias for % \texttt{ngerman}} %\changes{v1.1c}{2007/09/23}{Added \texttt{frenchb} alias for % \texttt{french}} % \begin{macrocode} \cst@setrefname{english}{References}{and}{Notes} \cst@setrefname{UKenglish}{References}{and}{Notes} \cst@setrefname{ngerman}{Literatur}{und}{Notizen} \cst@setrefname{german}{Literatur}{und}{Notizen} \cst@setrefname{french}{R\'ef\'erences}{et}{Notes} \cst@setrefname{frenchb}{R\'ef\'erences}{et}{Notes} % \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} %\changes{v1.0b}{2007/09/04}{Sorted a problem with \texttt{babel} % and figure name format} %\changes{v1.0b}{2007/09/04}{Fixed formatting of alkyls} %\changes{v1.1}{2007/09/17}{Fixed (another) error in alkyl formatting} % \begin{macrocode} \ProvidesFile{rsc.jdf} [\cst@ver RSC journal style] \AtBeginDocument{% \renewcommand{\figurename}{Fig.}} \captionsetup{labelsep=quad,labelfont=bf} \setkeys[cst]{opt}{ radprefix=true, rademph=true, radsuper=false, radhyphen=true, abbremph=true, abbrcomma=false} % \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{angew.def} [\cst@ver Angew. Chem. journal style] \captionsetup{labelsep=period,labelfont={bf,it},font=sf, singlelinecheck=off} \captionsetup[table]{labelsep=colon} \setkeys[cst]{opt}{ radprefix=true, rademph=true, radsuper=false, radhyphen=false, abbremph=false, abbrcomma=false} % \end{macrocode} % \iffalse % %<*jomc> % \fi % %\subsection{\emph{J.~Organomet.~Chem.}~style} %\changes{v1.1g}{2007/10/19}{Added \texttt{jomc} style} % \begin{macrocode} \ProvidesFile{jomc.def} [\cst@ver J. Organomet. Chem. journal style] \captionsetup{labelsep=period} \captionsetup[table]{labelsep=newline,singlelinecheck=off} \AtBeginDocument{% \renewcommand{\figurename}{Fig.}} \setkeys[cst]{opt}{ radprefix=true, rademph=true, radsuper=true, radhyphen=false, abbremph=false, abbrcomma=false, notesbefore=true} % \end{macrocode} % \iffalse % %<*tetlett> % \fi % %\subsection{\emph{Tetrahedron Lett.}~style} %\changes{v1.1h}{2007/10/31}{Added \texttt{tetlett} style} % \begin{macrocode} \ProvidesFile{tetlett.def} [\cst@ver Tetrahedron Lett. journal style] \captionsetup{labelsep=period,singlelinecheck=off,labelfont=bf} \setkeys[cst]{opt}{ radprefix=true, rademph=true, radsuper=false, radhyphen=true, abbremph=false, abbrcomma=true, notesbefore=true} % \end{macrocode} % \iffalse % %<*jacs> % \fi % %\subsection{\emph{J.~Am.~Chem.~Soc.}~style} % \begin{macrocode} \ProvidesFile{jacs.jdf} [\cst@ver J. Am. Chem. Soc. journal style] \DeclareCaptionLabelSeparator{perquad}{.\quad} \captionsetup{labelfont={bf,it,sf},textfont=sf, labelsep=perquad} \captionsetup[figure]{textfont=rm} \captionsetup{singlelinecheck=off} \setkeys[cst]{opt}{ radprefix=true, rademph=true, radsuper=true, radhyphen=false, abbremph=false, abbrcomma=true, notesbefore=true} \floatstyle{plaintop} \restylefloat{scheme} \floatstyle{plain} \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 \file{jacs.jdf}. % \begin{macrocode} \ProvidesFile{ic.jdf} [\cst@ver Inorg. Chem. journal style] \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} [\cst@ver J. Phys. Chem. journal style] \DeclareCaptionFormat{labelcaps}{\MakeUppercase{#1}#2#3} \captionsetup{font=bf,labelsep=colon,format=labelcaps} \captionsetup[figure]{format=plain,textfont=md,labelsep=period} \captionsetup{singlelinecheck=off} \setkeys[cst]{opt}{ radprefix=true, rademph=true, radsuper=false, radhyphen=false, abbremph=false, abbrcomma=true, notesbefore=true} \floatstyle{plaintop} \restylefloat{scheme} \floatstyle{plain} \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} [\cst@ver Org. Lett. journal style] \RequirePackage{xcolor} % \end{macrocode} % Currently, this style only works with \pkg{float}. % \begin{macrocode} \@ifpackageloaded{floatrow} {\PackageError{chemstyle} {Org. Lett. style only works with float} {Load chemstyle with the floatrow=false option to\MessageBreak use the orglett style}} {} % \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} %\begin{macro}{\fs@orglett} % 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 \texttt{ruled} style from the \pkg{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 \cs{@fs@mid} as is used in the \pkg{float} package % for \texttt{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} %\end{macro} %\begin{macro}{\fs@orglettfig} % 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} %\end{macro} % The new style is now applied. Users can change back to normal % floats by changing back to the \texttt{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} \DeclareCaptionLabelSeparator{perquad}{.\quad} \captionsetup{labelfont=bf,labelsep=perquad} \setkeys[cst]{opt}{ radprefix=true, rademph=true, radsuper=true, radhyphen=false, abbremph=false, abbrcomma=true, notesbefore=true} \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 very little changes compared to the \LaTeX\ kernel. % This requires undoing the defaults provided above. For commands % where a default is needed (\eg the \cs{latin} command) the style % of the RSC is followed. As the \pkg{float} package has been loaded, % notice that captions will be placed below floats even if the % \cs{caption} command appears above the contents of the floating % environment. % \begin{macrocode} \ProvidesFile{none.jdf} [\cst@ver Empty journal style] \floatstyle{plain} \restylefloat{table} \labelformat{figure}{#1} \labelformat{table}{#1} \floatplacement{table}{tbp} \floatplacement{figure}{tbp} \AtBeginDocument{ \floatplacement{scheme}{tbp} \labelformat{scheme}{#1}} % \end{macrocode} % \iffalse % % \fi % \PrintChanges % \PrintIndex % \Finale %\iffalse %<*jawltxdoc> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{jawltxdoc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage[final]{listings,graphicx,microtype} \usepackage[scaled=0.95]{helvet} \usepackage[version=3]{mhchem} \usepackage[osf]{mathpazo} \usepackage{booktabs,array,url,courier,xspace,varioref} \usepackage{upgreek,ifpdf,float,caption,longtable,babel} \begingroup \@ifundefined{eTeXversion} {\aftergroup\@gobble} {\aftergroup\@firstofone} \endgroup {\usepackage{etoolbox}} \floatstyle{plaintop} \restylefloat{table} \labelformat{figure}{\figurename~#1} \labelformat{table}{\tablename~#1} \ifpdf \usepackage{embedfile} \embedfile[% stringmethod=escape,% mimetype=plain/text,% desc={LaTeX docstrip source archive for package `\jobname'}% ]{\jobname.dtx} \fi \IfFileExists{\jobname.sty} {\usepackage{\jobname}}{} \usepackage[numbered]{hypdoc} \setcounter{IndexColumns}{2} \newlength\LaTeXwidth \newlength\LaTeXoutdent \newlength\LaTeXgap \setlength\LaTeXgap{1em} \setlength\LaTeXoutdent{-0.15\textwidth} \newbox\lst@samplebox \edef\LaTeXexamplefile{\jobname.tmp} \lst@RequireAspects{writefile} \lstnewenvironment{LaTeXexample}[1][example]{% \global\let\lst@intname\@empty \ifcsname LaTeXcode#1\endcsname \expandafter\let\expandafter\LaTeXcode \csname LaTeXcode#1\endcsname \expandafter\let\expandafter\LaTeXcodeend \csname LaTeXcode#1end\endcsname \else \PackageError{jawltxdoc} {Undefined example type `#1'} \@ehd \let\LaTeXcode\relax \let\LaTeXcodeend\relax \fi \LaTeXcode} {\lst@EndWriteFile \LaTeXcodeend} \newcommand*{\LaTeXcodeexample}{% \setbox\lst@samplebox=\hbox\bgroup \LaTeXcodefloat} \let\LaTeXcoderesultonly\LaTeXcodeexample \newcommand*{\LaTeXcodeexampleend}{% \egroup \setlength\LaTeXwidth{\wd\lst@samplebox}% \begin{list}{}{% \setlength\itemindent{0pt} \setlength\leftmargin\LaTeXoutdent \setlength\rightmargin{0pt}}% \item \setlength\LaTeXoutdent{-0.15\textwidth} \begin{minipage}[c]{% \textwidth-\LaTeXwidth-\LaTeXoutdent-\LaTeXgap} \LaTeXcodefloatend \end{minipage}% \hfill \begin{minipage}[c]{\LaTeXwidth}% \hbox to\linewidth{\box\lst@samplebox\hss}% \end{minipage}% \end{list}} \newcommand*{\LaTeXcodefloat}{% \setkeys{lst}{tabsize=4,gobble=3,breakindent=0pt, basicstyle=\small\ttfamily,basewidth=0.51em, keywordstyle=\color{blue}}% \lst@BeginAlsoWriteFile{\LaTeXexamplefile}} \let\LaTeXcodenoexample\LaTeXcodefloat \let\LaTeXcodenoexampleend\@empty \newcommand*{\LaTeXcodefloatend}{% \MakePercentComment\catcode`\^^M=10\relax \small {\setkeys{lst}{SelectCharTable=\lst@ReplaceInput{\^\^I}% {\lst@ProcessTabulator}}% \leavevmode \input{\LaTeXexamplefile}}% \MakePercentIgnore} \newcommand*{\LaTeXcoderesultonlyend}{\egroup\LaTeXcodefloatend} \lstnewenvironment{BibTeXexample}{% \global\let\lst@intname\@empty \setbox\lst@samplebox=\hbox\bgroup \setkeys{lst}{tabsize=4,gobble=3,breakindent=0pt, basicstyle=\small\ttfamily,basewidth=0.51em, keywordstyle=\color{black}} \lst@BeginAlsoWriteFile{\LaTeXexamplefile}} {\lst@EndWriteFile \LaTeXcodeexampleend} \newcommand*{\DescribeOption}{% \leavevmode\@bsphack\begingroup\MakePrivateLetters \Describe@Option} \newcommand*{\Describe@Option}[1]{\endgroup \marginpar{\raggedleft\PrintDescribeEnv{#1}}% \SpecialOptionIndex{#1}\@esphack\ignorespaces} \newcommand*{\SpecialOptionIndex}[1]{\@bsphack \index{#1\actualchar{\protect\ttfamily#1} (option)\encapchar usage}% \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}% \encapchar usage}\@esphack} \newcommand*{\indexopt}[1]{\DescribeOption{#1}\opt{#1}} \newcommand*{\DescribeOptionInfo}[2]{% \DescribeOption{#1}% \opt{#1=\meta{#2}}\xspace} \newcommand*{\ofixarg}[1]{% {\ttfamily[}% \ifmmode \expandafter \nfss@text \fi {% \meta@font@select \edef\meta@hyphen@restore{% \hyphenchar\the\font\the\hyphenchar\font}% \hyphenchar\font\m@ne \language\l@nohyphenation #1\/% \meta@hyphen@restore }% {\ttfamily]}} \newcommand*{\pkg}[1]{\textsf{#1}} \newcommand*{\currpkg}{\pkg{\jobname}\xspace} \newcommand*{\opt}[1]{\texttt{#1}} \newcommand*{\defaultopt}[1]{\opt{\textbf{#1}}} \newcommand*{\file}[1]{\texttt{#1}} \newcommand*{\ext}[1]{\file{.#1}} \newcommand*{\latin}[1]{\emph{#1}} \newcommand*{\etc}{% \@ifnextchar. {\latin{etc}} {\latin{etc}.\xspace}} \newcommand*{\eg}{% \@ifnextchar. {\latin{e.g}} {\latin{e.g}.\xspace}} \newcommand*{\ie}{% \@ifnextchar. {\latin{i.e}} {\latin{i.e}.\xspace}} \newcommand*{\etal}{% \@ifnextchar. {\latin{et~al.}} {\latin{et~al}.\xspace}} \newcommand*{\AMS}{{\protect\usefont{OMS}{cmsy}{m}{n}% A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} \providecommand*{\eTeX}{\ensuremath{\varepsilon}-\TeX} \DeclareRobustCommand*{\XeTeX} {X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.1667em\TeX} \providecommand*{\CTAN}{\textsc{ctan}} \@ifpackageloaded{etoolbox} {\patchcmd{\@addmarginpar} {\@latex@warning@no@line {Marginpar on page \thepage\space moved}} {\relax}{}{}} {} \newcounter{argument} \g@addto@macro\endmacro{\setcounter{argument}{0}} \newcommand*\darg[1]{% \stepcounter{argument}% {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces} \newcommand*\doarg[1]{% \stepcounter{argument}% {\ttfamily\makebox[0pt][r]{[}% \char`\#\theargument]:~}#1\par\noindent\ignorespaces} % %\fi