diff options
author | Karl Berry <karl@freefriends.org> | 2008-03-08 23:20:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-03-08 23:20:46 +0000 |
commit | 0f2ded353988b19236ea87f6f135ab63045a5672 (patch) | |
tree | d22639a74e947e25f9f033993e3872b42dda8e4c /Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty | |
parent | d6767c07e4b1da71175894668d79303343af63f2 (diff) |
chemstyle 1.2 (8mar08)
git-svn-id: svn://tug.org/texlive/trunk@6903 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty | 480 |
1 files changed, 259 insertions, 221 deletions
diff --git a/Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty b/Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty index adeb3d60a91..884adcf0be2 100644 --- a/Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty +++ b/Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty @@ -9,119 +9,156 @@ %% The chemstyle package --- Writing chemistry with style %% Maintained by Joseph Wright %% E-mail: joseph.wright@morningstar2.co.uk -%% Released under the LaTeX Project Public License v1.3 or later +%% Released under the LaTeX Project Public License v1.3c or later %% See http://www.latex-project.org/lppl.txt %% ---------------------------------------------------------------- %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{chemstyle} - [2007/10/31 v1.1h Writing chemistry with style] -\RequirePackage{graphicx,varioref,caption} -\let\cst@emph\relax -\def\cst@hyph{} -\let\cst@super\relax -\newif \ifcst@prefix \cst@prefixtrue -\def\cst@radical#1#2{% - \expandafter\newcommand\expandafter{\csname #1#2\endcsname}{}% - \expandafter\DeclareRobustCommand\expandafter{% + [2008/03/08 v1.2 Writing chemistry with style] +\RequirePackage{xkeyval} +\@ifpackagelater{xkeyval}{2005/05/07} + {} + {\PackageError{chemstyle} + {xkeyval >= 2.5 required} + {chemstyle requires the `xkeyval' package, version 2.5 + or later.\MessageBreak The version loaded is: + `\@nameuse{ver@xkeyval.sty}'.\MessageBreak + This is a fatal error: loading will abort.} + \endinput} +\RequirePackage{graphicx,varioref,caption,xspace} +\newcommand*{\cst@tempa}{} +\newcommand*{\cst@tempb}{} +\newcommand*{\cst@boolkey}[1]{ + \define@boolkey[cst]{opt}[cst@]{#1}[true]{}} +\cst@boolkey{chemcompounds} +\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} +\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} +\DeclareOptionX[cst]<opt>{siunits} + {\PackageInfo{chemstyle}{Option siunits no longer required}} +\DeclareOptionX[cst]<opt>{SIunits} + {\PackageInfo{chemstyle}{Option siunits no longer required}} +\DeclareOptionX[cst]<opt>{nonotes} + {\ExecuteOptionsX[cst]<opt>{notes=false}} +\DeclareOptionX[cst]<opt>{nophrases} + {\ExecuteOptionsX[cst]<opt>{phrases=false}} +\define@cmdkeys[cst]{opt}[cst@]{journal,language} +\DeclareOptionX*{\edef\cst@journal{\CurrentOption}} +\setkeys[cst]{opt}{ + notes=true, + phrases=true, + chemcompounds=true, + xspace=true, + journal=none, + radprefix=true, + rademph=true, + radsuper=false, + radhyphen=true, + abbremph=true, + abbrcomma=false, + language=english, + notesbefore=true} +\ProcessOptionsX[cst]<opt> +\ifcst@chemcompounds + \PassOptionsToPackage{chemcompounds}{chemscheme} +\fi +\RequirePackage{chemscheme} +\newcommand*{\cst@disablekey}[1]{ + \define@key[cst]{opt}{#1}{\PackageWarning{chemstyle} + {Option `#1' only valid when loading package}}} +\AtBeginDocument{ + \cst@disablekey{journal} + \cst@disablekey{phrases} + \cst@disablekey{nophrases} + \cst@disablekey{notes} + \cst@disablekey{nonotes} + \cst@disablekey{chemcompounds}} +\newcommand*{\cstsetup}[1]{% + \iffalse{\fi\ifnum0=`}\fi + \setkeys[cst]{opt}{#1}% + \ifnum0=`{\fi\iffalse}\fi} +\AtBeginDocument{ + \@ifpackageloaded{si} + {\makeatletter + \si@requirecfgs{synchem} + \makeatother} + {\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}} + {\@ifpackageloaded{SIunits}{} + {\@ifpackageloaded{siunits}{} + {\RequirePackage{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}}}} +\DeclareSymbolFont{CSTAMS}{U}{msb}{m}{n} +\DeclareMathSymbol{\cst@varnothing}{\mathord}{CSTAMS}{"3F} +\providecommand*{\standardstate}% + {\textsuperscript{\rotatebox[origin=c]{138.8}% + {\ensuremath{\cst@varnothing}}}} +\newcommand*{\cst@radical}[2]{% + \expandafter\DeclareRobustCommand\expandafter*\expandafter{% \csname #1#2\endcsname}{% - \ifcst@prefix - \cst@super{\cst@emph{#1}}\cst@hyph#2% + \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 + \ifcst@radprefix + \cst@super{\cst@emph{#1}}\cst@hyphen#2% \else - #2\cst@hyph\cst@super{\cst@emph{#1}}% - \fi% - \cst@xspace - } -} + #2\cst@hyphen\cst@super{\cst@emph{#1}}% + \fi + \cst@xspace}} +\newcommand*{\cst@xspace}{% + \ifcst@xspace + \expandafter\xspace% + \fi} \cst@radical{n}{Pr}% \cst@radical{i}{Pr}% \cst@radical{n}{Bu}% \cst@radical{i}{Bu}% \cst@radical{s}{Bu}% \cst@radical{t}{Bu}% -\newif \ifcst@notes \cst@notestrue -\newif \ifcst@phrases \cst@phrasestrue -\newif \ifcst@si \cst@sifalse -\newif \ifcst@xspace \cst@xspacefalse -\DeclareOption{ch}{\ExecuteOptions{chapter}} -\DeclareOption{chapter}% - {\PassOptionsToPackage{chapter}{chemscheme}} -\DeclareOption{chemcompounds}% - {\PassOptionsToPackage{chemcompounds}{chemscheme}} -\DeclareOption{nonotes}{\cst@notesfalse} -\DeclareOption{nophrases}{\cst@phrasesfalse} -\DeclareOption{siunits}{\cst@sitrue} -\DeclareOption{SIunits}{\cst@sitrue} -\DeclareOption{xspace}{\cst@xspacetrue} -\let\cst@option\relax -\DeclareOption*{% - \ifx\cst@option\relax\else - \PackageWarning{chemstyle} - {Extra option \cst@option\space ignored} - \fi - \edef\cst@option{\CurrentOption} -} -\@ifpackageloaded{SIunits} - {\ExecuteOptions{siunits}} - {\@ifpackageloaded{siunits} - {\ExecuteOptions{siunits}} - {}} -\ProcessOptions* -\ifcst@si - \@ifpackageloaded{unitsdef} - {\PackageWarning{chemstyle}{% - You have set the SIunits option,\MessageBreak - but have already loaded unitsdef!\MessageBreak - unitsdef will be used for extra unit macros} - \cst@sifalse} - {\AtBeginDocument{% - \@ifpackageloaded{siunits}% - {} - {\RequirePackage{SIunits}}% - } - } -\else - \ifx\fg\@undefined - \else - \ifx\fg\relax - \else - \let\cst@fg\fg - \let\fg\@undefined - \fi - \fi - \RequirePackage{unitsdef} - \ifx\cst@fg\@undefined - \let\fg\@undefined - \else - \let\fg\cst@fg - \fi - \AtBeginDocument{% - \ifx\fg\@undefined - \newcommand{\fg}{\femtogram} - \fi - } -\fi -\RequirePackage{chemscheme} -\ifcst@si - \newcommand{\cubiccentimeter}{\centi\metre\cubed} - \newcommand{\Molar}{\textsc{m}} - \newcommand{\molar}{\mole\usk\deci\metre\rpcubed} - \newcommand{\mmHg}{\milli\metre~Hg} - \newcommand{\mol}{\mole} -\else - \newunit{\cubiccentimeter}{\cm\unitsuperscript{3}} - \newunit{\Molar}{\textsc{m}} - \newunit{\molar}{\mole\unitsep\dm\unitsuperscript{--3}} - \newunit{\mmHg}{mm\unitsep{}Hg} - \newunit{\mol}{\mole} -\fi -\newcommand{\cmc}{\cubiccentimeter} -\newcommand{\Hz}{\hertz} -\DeclareSymbolFont{CSTAMS}{U}{msb}{m}{n} -\DeclareMathSymbol{\cst@varnothing}{\mathord}{CSTAMS}{"3F} -\providecommand*{\standardstate}% - {\textsuperscript{\rotatebox[origin=c]{138.8}% - {\ensuremath{\cst@varnothing}}}} \@ifclassloaded{memoir} {\let\newfloat\@undefined \RequirePackage{float}} @@ -135,141 +172,142 @@ \floatplacement{scheme}{htbp} \floatplacement{figure}{htbp} \floatcontentscentre -\AtBeginDocument{% - \labelformat{scheme}{\schemename~#1}} +\labelformat{scheme}{\schemename~#1} \labelformat{figure}{\figurename~#1} \labelformat{table}{\tablename~#1} -\let\latinemphon\relax -\let\latinemphoff\relax -\let\cst@latin\relax -\ifcst@phrases - \newcommand{\latinemphon}{\let\cst@latin\emph} - \newcommand{\latinemphoff}{\let\cst@latin\relax} - \AtBeginDocument{% - \providecommand\latin{\cst@latin} - } -\fi -\latinemphon -\newif \ifcst@comma \cst@commafalse -\AtBeginDocument{% - \ifcst@comma - \def\cst@punct{.,\cst@xspace} - \def\cst@addpunct{% - \cst@add@punct\relax% - } - \def\cst@add@punct#1{% - \futurelet\@tempa\cst@add@punct@% - } - \def\cst@add@punct@{% - \ifx\@tempa.% - \let\@tempb\cst@add@punct% - \else - \ifx\@tempa,% - \let\@tempb\cst@add@punct% - \else - \let\@tempb\cst@punct% - \fi - \fi - \@tempb% - } - \fi -} -\ifcst@xspace - \RequirePackage{xspace} - \let\cst@xspace\xspace -\else - \let\cst@xspace\relax -\fi +\newcommand*{\cst@latin}{% + \ifcst@abbremph + \expandafter\emph% + \fi} +\newcommand*{\latinemphon}{\cstsetup{abbremph=true}} +\newcommand*{\latinemphoff}{\cstsetup{abbremph=false}} +\AtBeginDocument{\providecommand*\latin{\cst@latin}} \ifcst@phrases \AtBeginDocument{ - \providecommand{\etc}% + \providecommand*{\etc} {\@ifnextchar.{\cst@etc}{\cst@etc.\cst@xspace}} - \providecommand{\invacuo}% + \providecommand*{\invacuo} {\latin{in vacuo}\cst@xspace} - \providecommand{\etal}% + \providecommand*{\etal} {\@ifnextchar.{\cst@etal}{\cst@etal.\cst@xspace}} - \ifcst@comma - \providecommand{\eg}% - {\cst@eg\cst@addpunct} - \providecommand{\ie}% - {\cst@ie\cst@addpunct} + \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}}} +\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}} +\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}} +\newcommand*{\cst@addpunct}{% + \cst@add@punct\relax} +\newcommand*{\cst@add@punct}[1]{% + \futurelet\cst@tempa\cst@add@punct@} +\newcommand*{\cst@add@punct@}{% + \ifx.\cst@tempa + \let\cst@tempb\cst@add@punct + \else + \ifx,\cst@tempa + \let\cst@tempb\cst@add@punct \else - \providecommand{\eg}% - {\@ifnextchar.{\cst@eg}{\cst@eg.\cst@xspace}} - \providecommand{\ie}% - {\@ifnextchar.{\cst@ie}{\cst@ie.\cst@xspace}} + \let\cst@tempb\cst@commapunct \fi - } + \fi + \cst@tempb} +\newcommand*{\cst@commapunct}{.,\cst@xspace} +\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}}} +\begingroup + \@ifundefined{chapter} + {\@ifundefined{refname} + {\PackageInfo{chemstyle} + {No bibliography name command found} + \cstsetup{notes=false}} + {\gdef\cst@refsec{\refname}}} + {\gdef\cst@refsec{\bibname}} +\endgroup +\ifcst@autonotes + \AtBeginDocument{ + \@ifpackageloaded{notes2bib}{} + {\newcounter{bibnote}}} \fi -\def\cst@etal{\latin{et~al}} -\def\cst@etc{\latin{etc}} -\def\cst@ie{\latin{i.e\spacefactor999\relax}} -\def\cst@eg{\latin{e.g\spacefactor999\relax}} -\newif \ifcst@notesbefore \cst@notesbeforetrue -\def\cst@name@refs#1#2#3{% +\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 -} -\def\cst@language{english} -\@ifundefined{refname}{% - \@ifundefined{bibname}{% - \PackageWarning{chemstyle}% - {No bibliography name command defined in document class}% - \def\cst@namerefs#1#2#3#4{}% - }{% - \def\cst@refsection{\bibname}% - } -}{% - \def\cst@refsection{\refname}% -} -\@ifundefined{cst@namerefs}{% - \def\cst@namerefs#1#2#3#4{% - \ifcst@notes% - \def\cst@language@check{#1} - \ifx\cst@language\cst@language@check - \expandafter\renewcommand\expandafter{\cst@refsection}% - {\cst@name@refs{#2}{#3}{#4}}% - \fi - \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% - } -}{} -\cst@namerefs{english}{References}{and}{Notes} -\cst@namerefs{UKenglish}{References}{and}{Notes} -\cst@namerefs{ngerman}{Literatur}{und}{Notizen} -\cst@namerefs{german}{Literatur}{und}{Notizen} -\cst@namerefs{french}{R\'ef\'erences}{et}{Notes} -\cst@namerefs{frenchb}{R\'ef\'erences}{et}{Notes} -\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}} + \fi} +\newcommand*{\cst@ref@name@}[3]{#1} +\@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 + \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}}} + \expandafter\selectlanguage\expandafter{\languagename}} + {}}}}} +\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} \endinput %% %% End of file `chemstyle.sty'. |