summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty')
-rw-r--r--Master/texmf-dist/tex/latex/chemstyle/chemstyle.sty480
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'.