summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/chemstyle/chemscheme.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/chemstyle/chemscheme.sty')
-rw-r--r--Master/texmf-dist/tex/latex/chemstyle/chemscheme.sty534
1 files changed, 301 insertions, 233 deletions
diff --git a/Master/texmf-dist/tex/latex/chemstyle/chemscheme.sty b/Master/texmf-dist/tex/latex/chemstyle/chemscheme.sty
index 461cbe2cb76..3f4e61317ae 100644
--- a/Master/texmf-dist/tex/latex/chemstyle/chemscheme.sty
+++ b/Master/texmf-dist/tex/latex/chemstyle/chemscheme.sty
@@ -4,256 +4,324 @@
%%
%% The original source files were:
%%
-%% chemscheme.dtx (with options: `package')
-%% ----------------------------------------------------------------
-%% 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
-%% ----------------------------------------------------------------
+%% chemstyle.dtx (with options: `chemscheme')
+%% ----------------------------------------------------------------
+%% The chemstyle bundle --- Schemes and style for chemistry
+%% 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
+%% ----------------------------------------------------------------
%%
\NeedsTeXFormat{LaTeX2e}
-\def\csh@id$#1: #2.#3 #4 #5-#6-#7 #8 #9${%
- #5/#6/#7\space v1.4a\space}
\ProvidesPackage{chemscheme}
- [\csh@id $Id: chemscheme.dtx 48 2008-07-31 19:22:43Z joseph $
- Support for chemical schemes]
-\RequirePackage{kvoptions,psfrag,iflang}
+ [2009/06/06 v2.0 Schemes for chemistry]
+\RequirePackage{kvoptions,psfrag}
\SetupKeyvalOptions{
- family=csh,
- prefix=csh@}
-\newif\ifcsh@bpchem
-\define@key{csh}{tracking}
- {\csh@bpchemtrue
- \lowercase{\edef\@tempa{#1}}%
- \def\@tempb{bpchem}%
- \ifx\@tempa\@tempb\else
- \def\@tempb{chemcompounds}%
- \ifx\@tempa\@tempb
- \csh@bpchemfalse
- \else
- \PackageError{chemscheme}
- {Unknown value `#1' for option numbers}
- {The `tracking' option accepts values `bpchem'
- and `chemcompounds'}%
- \fi
- \fi}
-\DeclareVoidOption{chemcompounds}{\csh@bpchemfalse}
-\DeclareVoidOption{bpchem}{\csh@bpchemtrue}
-\DeclareVoidOption{chapter}
- {\PackageInfo{chemscheme}
- {Ignoring obsolete option `chapter'}}
-\define@key{csh}{floats}
- {\lowercase{\renewcommand*{\csh@fltpkg}{#1}}%
- \def\@tempa{floatrow}%
- \ifx\csh@fltpkg\@tempa\else
- \def\@tempa{float}%
- \ifx\csh@fltpkg\@tempa\else
- \def\@tempa{memoir}%
- \ifx\csh@fltpkg\@tempa
- \@ifclassloaded{memoir}{}
- {\PackageWarning{chemscheme}
- {You asked for floats to be created using memoir,
- \MessageBreak but have used a different document
- class\MessageBreak Using floatrow instead}%
- \renewcommand*{\csh@fltpkg}{floatrow}}%
- \else
- \PackageError{chemscheme}
- {Unknown value `#1' for option numbers}
- {The `floats' option accepts values `float',
- `floatrow' and `memoir'}%
- \fi
- \fi
- \fi}
-\@ifpackageloaded{floatrow}
- {\newcommand*{\csh@fltpkg}{floatrow}%
- \define@key{csh}{floats}
- {\PackageInfo{chemscheme}{Package floatrow already
- loaded\MessageBreak Option `floats' disabled}}}
- {\@ifpackageloaded{float}
- {\newcommand*{\csh@fltpkg}{float}%
- \define@key{csh}{floats}
- {\PackageInfo{chemscheme}{Package float already
- loaded\MessageBreak Option `floats' disabled}}}
- {\@ifclassloaded{memoir}
- {\newcommand*{\csh@fltpkg}{memoir}}
- {\newcommand*{\csh@fltpkg}{floatrow}}}}
-\ProcessKeyvalOptions{csh}
-\newcommand*{\csh@load@memoir}{}
-\newcommand*{\csh@load@float}{%
- \@ifpackageloaded{float}{}
- {\let\newfloat\@undefined}
- \RequirePackage{float,caption}}
-\newcommand*{\csh@load@floatrow}{%
- \@ifpackageloaded{floatrow}{}
- {\let\newfloat\@undefined}
- \RequirePackage{floatrow,caption}}
-\csname csh@load@\csh@fltpkg\endcsname
-\newcommand*{\schemename}{Scheme}
-\newcommand*{\listschemename}{List of Schemes}
-\newcommand*{\csh@makesch@memoir}{%
- \AtBeginDocument{\csh@mksch@memoir}}
-\newcommand*{\csh@mksch@memoir}{%
- \newfloat[chapter]{scheme}{los}{\schemename}
- \kill@lastcounter{losdepth}
- \renewcommand*{\thescheme}{\thechapter.\@arabic\c@scheme}
- \addtodef{\@smemfront}{}{\counterwithout{scheme}{chapter}}
+ family=cst,
+ prefix=cst@
+}
+\DeclareBoolOption[true]{chemcompounds}
+\DeclareComplementaryOption{bpchem}{chemcompounds}
+\DeclareBoolOption[true]{floatrow}
+\define@key{cst}{tracking}[chemcompounds]{%
+ \edef\KVO@param{#1}%
+ \@onelevel@sanitize\KVO@param
+ \ifx\KVO@param\cst@opt@bpchem
+ \expandafter\cst@chemcompoundsfalse
+ \else
+ \ifx\KVO@param\cst@opt@chemcompounds
+ \expandafter\expandafter\expandafter\cst@chemcompoundstrue
+ \else
+ \expandafter\expandafter\expandafter\cst@opt@ref@error
+ \fi
+ \fi
+}
+\newcommand*\cst@opt@bpchem{bpchem}
+\newcommand*\cst@opt@chemcompounds{chemcompounds}
+\newcommand*\cst@opt@ref@error{%
+ \PackageWarning{chemscheme}{%
+ Value `\KVO@param' is not supported by\MessageBreak
+ option `tracking'%
+ }%
+}
+\newif\ifcst@memoir
+\define@key{cst}{floats}{%
+ \edef\KVO@param{#1}%
+ \cst@floatrowtrue
+ \cst@memoirfalse
+ \ifx\KVO@param\cst@opt@float
+ \expandafter\cst@floatrowfalse
+ \else
+ \ifx\KVO@param\cst@opt@floatrow\else
+ \ifx\KVO@param\cst@opt@memoir
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\cst@memoirtrue
+ \else
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\cst@opt@floats@error
+ \fi
+ \fi
+ \fi
+}
+\newcommand*\cst@opt@float{float}
+\newcommand*\cst@opt@floatrow{floatrow}
+\newcommand*\cst@opt@memoir{memoir}
+\newcommand*\cst@opt@floats@error{%
+ \PackageWarning{chemscheme}{%
+ Value `\KVO@param' is not supported by\MessageBreak
+ option `floats'%
+ }%
+}
+\newcommand*\cst@float@pkg{}
+\newcommand*\cst@float@execute{}
+\newcommand*\cst@float@load{%
+ \IfFileExists{floatrow.sty}{}{%
+ \ifcst@floatrow
+ \expandafter\cst@floatrowfalse
+ \fi
+ }%
+ \ifcst@floatrow
+ \expandafter\cst@float@load@floatrow
+ \else
+ \expandafter\cst@float@load@float
+ \fi
+}
+\newcommand*\cst@float@load@float{%
+ \RequirePackage{float}
+ \def\cst@float@pkg{float}
+ \def\cst@float@execute{\AtBeginDocument}
+}
+\newcommand*\cst@float@load@floatrow{%
+ \RequirePackage{floatrow}
+ \def\cst@float@pkg{floatrow}
+ \def\cst@float@execute{\@firstofone}
+}
+\newcommand*\cst@float@chapter@hook{}
+\newcommand*\cst@float@chapter{}
+\ifx\@chapter\@undefined\else
+ \let\cst@float@chapter\@chapter
+ \def\@chapter{%
+ \cst@float@chapter@hook
+ \cst@float@chapter
+ }
+\fi
+\newcommand*\cst@float@chapter@fix{%
+ \g@addto@macro{\cst@float@chapter@hook}{%
+ \addtocontents{los}{\protect\addvspace{10\p@}}%
+ }%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname KOMAScriptVersion\endcsname\relax
+ \@namedef{thescheme}{%
+ \ifnum\c@chapter>\z@\relax
+ \thechapter.%
+ \fi
+ \arabic{scheme}%
+ }%
+ \fi
+}
+\newcommand*\cst@float@make@float{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname chapter\endcsname\relax
+ \newfloat{scheme}{tbp}{los}%
+ \else
+ \newfloat{scheme}{tbp}{los}[chapter]%
+ \expandafter\cst@float@chapter@fix
+ \fi
+ \floatname{scheme}{\schemename}%
+ \newcommand*\listofschemes{%
+ \listof{scheme}{\listschemename}%
+ }%
+}
+\newcommand*\cst@float@make@floatrow{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname chapter\endcsname\relax
+ \DeclareNewFloatType{scheme}{%
+ fileext = los,
+ placement = tbp,
+ name = Scheme
+ }%
+ \else
+ \DeclareNewFloatType{scheme}{%
+ fileext = los,
+ placement = tbp,
+ name = Scheme,
+ within = chapter
+ }%
+ \cst@float@chapter@fix
+ \fi
+ \newcommand*\listofschemes{%
+ \listof{scheme}{\listschemename}%
+ }%
+}
+\newcommand*\cst@float@make@memoir{%
+ \newfloat[chapter]{scheme}{los}{\schemename}%
+ \newlistof{listofschemes}{los}{\listschemename}%
+ \addtodef{\@smemfront}{}{\counterwithout{scheme}{chapter}}%
\addtodef{\@smemmain}{}{%
\ifartopt\else
- \counterwithin{scheme}{chapter}
- \fi}
+ \counterwithin{scheme}{chapter}%
+ \fi
+ }%
\addtodef{\backmatter}{}{%
\ifartopt\else
\counterwithout{scheme}{chapter}%
\setcounter{scheme}{0}%
- \fi}
+ \fi
+ }%
+ \newlistentry[chapter]{scheme}{los}{0}%
+ \cftsetindents{scheme}{0em}{2.3em}%
+ \addtodef{\insertchapterspace}{}{%
+ \addtocontents{los}{\protect\addvspace{10pt}}%
+ }%
\ifartopt
\counterwithout{scheme}{chapter}%
\fi
- \newlistof{listofschemes}{los}{\listschemename}
- \kill@lastcounter{losdepth}
- \newlistentry[chapter]{scheme}{los}{0}
- \cftsetindents{scheme}{0em}{2.3em}
- \addtodef{\insertchapterspace}{}%
- {\addtocontents{los}{\protect\addvspace{10pt}}}
- \@ifundefined{c@losdepth}%
- {\newcounter{losdepth}\setcounter{losdepth}{1}}{}}
-\newcommand*{\csh@makesch@float}{%
- \AtBeginDocument{\csh@mksch@float}}
-\newcommand*{\csh@mksch@float}{%
- \@ifundefined{chapter}
- {\newfloat{scheme}{tbp}{los}}
- {\newfloat{scheme}{tbp}{los}[chapter]%
- \csh@fixchapter}%
- \floatname{scheme}{\schemename}
- \newcommand*{\listofschemes}{%
- \listof{scheme}{\listschemename}}}
-\newcommand*{\csh@makesch@floatrow}{%
- \@ifundefined{chapter}
- {\DeclareNewFloatType{scheme}
- {fileext=los,placement=tbp,name=Scheme}}
- {\DeclareNewFloatType{scheme}
- {fileext=los,placement=tbp,name=Scheme,within=chapter}%
- \csh@fixchapter}%
- \newcommand*{\listofschemes}{%
- \listof{scheme}{\listschemename}}}
-\newcommand*{\csh@fixchapter}{%
- \@ifundefined{KOMAScriptVersion}
- {\renewcommand*{\thescheme}{%
- \ifnum\c@chapter>\z@ \thechapter.\fi \@arabic\c@scheme}}
- {}%
- \let\csh@chapter\@chapter
- \renewcommand{\@chapter}{%
- \addtocontents{los}{\protect\addvspace{10\p@}}%
- \csh@chapter}}
-\csname csh@makesch@\csh@fltpkg\endcsname
-\def\@tempa{floatrow}
-\ifx\@tempa\csh@fltpkg
- \newcommand*{\floatcontentscentre}{%
- \floatsetup{objectset=centering}}
- \newcommand*{\floatcontentscenter}{%
- \floatsetup{objectset=centering}}
- \newcommand*{\floatcontentsright}{%
- \floatsetup{objectset=raggedleft}}
- \newcommand*{\floatcontentsleft}{%
- \floatsetup{objectset=raggedright}}
-\else
- \let\csh@floatboxreset\@floatboxreset
- \renewcommand*{\@floatboxreset}{%
- \csh@everyfloat
- \csh@floatboxreset}
+}
+\ProcessKeyvalOptions{cst}
+\@ifpackageloaded{floatrow}{%
+ \def\cst@float@pkg{floatrow}
+ \def\cst@float@execute{\@firstofone}
+}{%
+ \@ifpackageloaded{float}{%
+ \def\cst@float@pkg{float}
+ \def\cst@float@execute{\AtBeginDocument}
+ }{%
+ \@ifclassloaded{memoir}{%
+ \def\cst@float@pkg{memoir}
+ \def\cst@float@execute{\AtBeginDocument}
+ }{%
+ \@ifpackageloaded{chemstyle}{}{%
+ \cst@float@load
+ }%
+ }%
+ }%
+}
+\ifx\cst@float@pkg\cst@opt@memoir\else
+ \let\newfloat\@undefined
+\fi
+\@ifpackageloaded{chemstyle}{}{%
+ \cst@float@execute{\@nameuse{cst@float@make@\cst@float@pkg}}
+}
+\@ifpackageloaded{floatrow}{}{%
+ \newcommand*\schemename{Scheme}
+}
+\newcommand*\listschemename{List of Schemes}
+\AtBeginDocument{%
+ \@ifpackageloaded{babel}{%
+ \addto{\captionsfrench}{%
+ \def\listschemename{Table des sch\`emes}%
+ \def\schemename{{\scshape Sch\`eme}}%
+ }%
+ \addto{\captionsgerman}{%
+ \def\listschemename{Schemenverzeichnis}%
+ \def\schemename{Schema}%
+ }%
+ \expandafter\selectlanguage\expandafter{\languagename}%
+ }{}%
+}
+\@ifpackageloaded{floatrow}{%
+ \newcommand*\floatcontentscentre{%
+ \floatsetup{objectset=centering}%
+ }
+ \newcommand*\floatcontentscenter{%
+ \floatsetup{objectset=centering}%
+ }
+ \newcommand*\floatcontentsright{%
+ \floatsetup{objectset=raggedleft}%
+ }
+ \newcommand*\floatcontentsleft{%
+ \floatsetup{objectset=raggedright}%
+ }
+}{%
+ \newcommand*\cst@floatboxreset{}
+ \newcommand*\cst@everyfloat{}
+ \let\cst@floatboxreset\@floatboxreset
+ \def\@floatboxreset{%
+ \cst@everyfloat
+ \cst@floatboxreset
+ }
\newcommand*{\floatcontentscentre}{%
- \let\csh@everyfloat\centering}
+ \let\cst@everyfloat\centering
+ }
\newcommand*{\floatcontentscenter}{%
- \let\csh@everyfloat\centering}
+ \let\cst@everyfloat\centering
+ }
\newcommand*{\floatcontentsleft}{%
- \let\csh@everyfloat\relax}
+ \let\cst@everyfloat\relax
+ }
\newcommand*{\floatcontentsright}{%
- \let\csh@everyfloat\raggedleft}
-\fi
+ \let\cst@everyfloat\raggedleft
+ }
+}
\floatcontentsleft
-\newif\ifcsh@babel
-\@ifpackageloaded{babel}
- {\csh@babeltrue}
- {}
-\@ifclassloaded{memoir}{}
- {\@ifpackageloaded{babel}
- {\IfLanguageName{french}
- {\let\floatc@plain\FB@makecaption}
- {\IfLanguageName{frenchb}
- {\let\floatc@plain\FB@makecaption}
- {}}}
- {}}
-\AtBeginDocument{
- \@ifpackageloaded{babel}
- {\addto{\captionsngerman}{%
- \renewcommand*{\schemename}{Schema}}
- \addto{\captionsngerman}{%
- \renewcommand*{\listschemename}{Schemenverzeichnis}}
- \addto{\captionsgerman}{%
- \renewcommand*{\schemename}{Schema}}
- \addto{\captionsgerman}{%
- \renewcommand*{\listschemename}{Schemenverzeichnis}}
- \addto{\captionsfrench}{%
- \renewcommand*{\schemename}{\scshape Sch\`eme}}
- \addto{\captionsfrench}{%
- \renewcommand*{\listschemename}{Table des sch\`emes}}
- \addto{\captionsfrenchb}{%
- \renewcommand*{\schemename}{\scshape Sch\`eme}}
- \addto{\captionsfrenchb}{%
- \renewcommand*{\listschemename}{Table des sch\`emes}}
- \expandafter\selectlanguage\expandafter{\languagename}
- \@ifclassloaded{memoir}{}
- {\IfLanguageName{french}
- {\ifcsh@babel\else
- \let\floatc@plain\FB@makecaption
- \fi}
- {\IfLanguageName{frenchb}
- {\ifcsh@babel\else
- \let\floatc@plain\FB@makecaption
- \fi}
- {}}}
- {}}{}}
-\newcommand*{\schemerefmarker}{TMP}
-\newcommand*{\schemerefformat}{\textsf}
-\ifcsh@bpchem
- \RequirePackage{bpchem}
- \let\csh@label\CNlabel
-\else
- \RequirePackage{chemcompounds}
- \let\csh@label\compound
-\fi
-\newcount\csh@num
-\newcommand*{\schemeref}{%
- \advance\csh@num\@ne
- \@ifnextchar[%]
- {\csh@schemeref}
- {\csh@schemeref[\schemerefmarker\the\csh@num]}}
-\def\csh@schemeref[#1]#2{%
- \psfrag{#1}[b][b]
- {\schemerefformat{\csh@label{#2}}}}
-\def\csh@schemerefsub[#1]#2#3{%
- \psfrag{#1}[b][b]
- {\schemerefformat{\CNlabelsub{#2}{#3}}}}
-\newcommand*{\chemschemeref}[1]{\schemeref[#1]}
-\ifcsh@bpchem
- \newcommand*{\schemerefsub}{%
- \advance\csh@num\@ne
- \@ifnextchar[%]
- {\csh@schemerefsub}
- {\csh@schemerefsub[\schemerefmarker\the\csh@num]}}
- \newcommand*{\chemschemerefsub}[1]{\schemerefsub[#1]}
-\else
- \newcommand*{\schemerefsub}[3][]{%
- \advance\csh@num\@ne
- \PackageWarning{chemscheme}
- {`chemcompound' option active\MessageBreak
- Command \string\chemschemerefsub\space not used
- \MessageBreak Please alter your source to \MessageBreak
- \string\chemschemeref}}
- \newcommand*{\chemschemerefsub}{\schemerefsub}
-\fi
-\endinput
+\newcommand*\schemerefmarker{TMP}
+\newcommand*\schemerefformat{\textsf}
+\newcount\cst@ref@count
+\newcommand*\cst@ref@label{}
+\newcommand*\cst@ref@load{%
+ \ifcst@chemcompounds
+ \RequirePackage{chemcompounds}
+ \let\cst@ref@label\compound
+ \else
+ \RequirePackage{bpchem}
+ \let\cst@ref@label\CNlabel
+ \fi
+}
+\@ifpackageloaded{chemstyle}{}{%
+ \cst@ref@load
+}
+\DeclareRobustCommand*\schemeref[2]
+ [\schemerefmarker\the\cst@ref@count]{%
+ \advance\cst@ref@count\@ne\relax
+ \psfrag{#1}[b][b]{%
+ \schemerefformat{\cst@ref@label{#2}}%
+ }%
+}
+\DeclareRobustCommand*\chemschemeref[1]{%
+ \schemeref[#1]%
+}
+\DeclareRobustCommand*\schemerefsub[3]
+ [\schemerefmarker\the\cst@ref@count]{%
+ \advance\cst@ref@count\@ne\relax
+ \psfrag{#1}[b][b]{%
+ \schemerefformat{\CNlabelsub{#2}{#3}}%
+ }%
+}
+\DeclareRobustCommand*\chemschemerefsub[1]{%
+ \schemerefsub[#1]%
+}
+\newcommand*\cst@ref@check@sub{%
+ \@ifpackageloaded{bpchem}{}{%
+ \def\schemerefsub[3][]{%
+ \PackageWarning{chemscheme}{%
+ \string\schemerefsub\space not available unless bpchem
+ \MessageBreak package is loaded
+ }%
+ }%
+ }%
+}
+\AtBeginDocument{\cst@ref@check@sub}
+
+%%
+%% Copyright (C) 2006-2009 by
+%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Joseph Wright.
+%%
+%% This work consists of the file chemstyle.dtx and
+%% chemstyle.cdx,
+%% and the derived files chemstyle.pdf,
+%% chemstyle.ins,
+%% chemstyle.sty,
+%% chemscheme.sty,
+%%
%%
%% End of file `chemscheme.sty'.