summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex')
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex310
1 files changed, 310 insertions, 0 deletions
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex
new file mode 100644
index 0000000000..1a07bd1c50
--- /dev/null
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex
@@ -0,0 +1,310 @@
+% --------------------------------------------------------------------------
+%
+% the CHEMMACROS package -- module: `scheme'
+%
+% --------------------------------------------------------------------------
+% Clemens Niederberger
+% --------------------------------------------------------------------------
+% https://github.org/cgnieder/chemmacros/
+% contact@mychemistry.eu
+% --------------------------------------------------------------------------
+% If you have any ideas, questions, suggestions or bugs to report, please
+% feel free to contact me.
+% --------------------------------------------------------------------------
+% Copyright 2011-2017 Clemens Niederberger
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% 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.3 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 Clemens Niederberger.
+% --------------------------------------------------------------------------
+\ChemModule{scheme}{2016/04/25 a scheme floating environment}
+
+\RequirePackage {chemnum}
+
+\bool_new:N \l__chemmacros_float_def_bool
+\tl_new:N \l__chemmacros_float_method_tl
+\seq_new:N \l__chemmacros_float_methods_seq
+\prop_new:N \l__chemmacros_float_methods_prop
+\prop_new:N \l__chemmacros_float_definitions_prop
+
+\msg_new:nnn {chemmacros} {float-method}
+ { Detected~ float~ defining~ method~ `#1'. }
+
+% --------------------------------------------------------------------------
+% #1: name
+% #2: check
+\cs_new_protected:Npn \chemmacros_define_float_method:nnn #1#2#3
+ {
+ \seq_put_right:Nn \l__chemmacros_float_methods_seq {#1}
+ \prop_put:Nnn \l__chemmacros_float_methods_prop {#1} {#2}
+ \prop_put:Nnn \l__chemmacros_float_definitions_prop {#1}
+ { \cs_set_protected:Npn \__chemmacros_define_float:nn ##1##2 {#3} }
+ }
+
+% the order in which the methods are defined determines in which order the
+% methods will be checked at begin document:
+\chemmacros_define_float_method:nnn {KOMA}
+ { \cs_if_exist_p:N \KOMAClassName }
+ {
+ \DeclareNewTOC[
+ type = #1 ,
+ types = #1s ,
+ float ,
+ name = \chemmacros_translate:n {#1-name} ,
+ listname = {\exp_not:N \chemmacros_translate:n {#1-list}}
+ ]{#2}
+ }
+
+\chemmacros_define_float_method:nnn {memoir}
+ { \chemmacros_if_class_loaded_p:n {memoir} }
+ {
+ \newfloat [chapter] {#1} {#2} {\chemmacros_translate:n {#1-name}}
+ \cs_set:cpn {the#1} {\thechapter.\arabic {#1}}
+ \newlistof {listof#1s} {#2} {\chemmacros_translate:n {#1-list}}
+ \newlistentry [chapter] {#1} {#2} {0}
+ \cftsetindents {#1} {0em} {2.3em}
+ \tl_put_right:Nn \@memfront@floats
+ { \counterwithout {#1} {chapter} }
+ \tl_put_right:Nn \@memmain@floats
+ { \counterwithin {#1} {chapter} }
+ \tl_put_right:Nn \@memback@floats
+ {
+ \counterwithin {#1} {chapter}
+ \setcounter {#1} {0}
+ }
+ \chemmacros_tex_if:nnT {artopt} {}
+ { \counterwithout {#1} {chapter} }
+ }
+
+\chemmacros_define_float_method:nnn {tocbasic}
+ { \chemmacros_if_package_loaded_p:n {tocbasic} }
+ {
+ \DeclareNewTOC[
+ type = #1 ,
+ types = #1s ,
+ float ,
+ name = \chemmacros_translate:n {#1-name} ,
+ listname = {\exp_not:N \chemmacros_translate:n {#1-list}}
+ ]{#2}
+ }
+
+\chemmacros_define_float_method:nnn {newfloat}
+ { \chemmacros_if_package_loaded_p:n {newfloat} }
+ {
+ \DeclareFloatingEnvironment[{
+ fileext = #2 ,
+ listname = {\exp_not:N \chemmacros_translate:n {#1-list}} ,
+ name = #2
+ }]{#1}
+ }
+
+\ChemCompatibilityFrom{5.1}
+\chemmacros_define_float_method:nnn {floatrow}
+ { \chemmacros_if_package_loaded_p:n {floatrow} }
+ {
+ \DeclareNewFloatType{#1}{%
+ fileext = #2,
+ placement = htp,
+ name = \chemmacros_translate:n {#1-name}
+ }
+ \cs_new_protected:cpn {listof#1s}
+ { \listof {#1} {\chemmacros_translate:n {#1-list}} }
+ }
+\EndChemCompatibility
+
+\chemmacros_define_float_method:nnn {float}
+ { \chemmacros_if_package_loaded_p:n {float} }
+ {
+ \newfloat {#1} {htp} {#2}
+ \floatname {#1} {\chemmacros_translate:n {#1-name}}
+ \cs_new_protected:cpn {listof#1s}
+ { \listof {#1} {\chemmacros_translate:n {#1-list}} }
+ }
+
+% --------------------------------------------------------------------------
+% checks if one of the above defined methods is active. The first one found
+% will be used.
+\cs_new_protected:Npn \chemmacros_check_float_method:n #1
+ {
+ \prop_get:NnNT \l__chemmacros_float_methods_prop {#1}
+ \l__chemmacros_tmpa_tl
+ \bool_if:nT
+ { !\l__chemmacros_float_def_bool && \l__chemmacros_tmpa_tl }
+ {
+ \bool_set_true:N \l__chemmacros_float_def_bool
+ \tl_set:Nn \l__chemmacros_float_method_tl {#1}
+ \msg_info:nnn {chemmacros} {float-method} {#1}
+ }
+ }
+
+\cs_new_protected:Npn \chemmacros_check_float_methods:
+ {
+ \seq_map_function:NN
+ \l__chemmacros_float_methods_seq
+ \chemmacros_check_float_method:n
+ }
+
+\AtEndPreamble
+ {
+ % the check is there since v5.3a -- let's wait and see if we actually need
+ % a compatibility check here:
+ \chemmacros_if_package_loaded:nF {chemscheme}
+ {
+ \chemmacros_check_float_methods:
+ \chemmacros_define_float:nn {scheme} {los}
+ }
+ }
+
+% --------------------------------------------------------------------------
+\ChemCompatibilityFrom{5.6}
+\ChemCleverefSupport {scheme}
+ { \chemmacros_translate:n {scheme} }
+ [ \chemmacros_translate:n {Scheme} ]
+ { \chemmacros_translate:n {schemes} }
+ [ \chemmacros_translate:n {Schemes} ]
+
+\ChemFancyrefSupport {sch}
+ { \chemmacros_translate:n {scheme} }
+ [ \chemmacros_translate:n {Scheme} ]
+\EndChemCompatibility
+
+% --------------------------------------------------------------------------
+% #1: env name
+\cs_new_protected:Npn \chemmacros_define_float:nn #1#2
+ {
+ \bool_if:nT
+ { !\cs_if_exist_p:c {#1} && !\cs_if_exist_p:c {end#1} }
+ {
+ \bool_if:NTF \l__chemmacros_float_def_bool
+ {
+ \prop_get:NVN \l__chemmacros_float_definitions_prop
+ \l__chemmacros_float_method_tl
+ \l__chemmacros_tmpa_tl
+ \tl_use:N \l__chemmacros_tmpa_tl
+ \__chemmacros_define_float:nn {#1} {#2}
+ }
+ {
+ \newcounter {#1}
+ \cs_set:cpn {the#1} {\arabic{#1}}
+ \cs_new:cpn {fps@#1} {tbp}
+ \cs_new:cpn {ftype@#1} {8}
+ \cs_new:cpn {ext@#1} {#2}
+ \cs_new:cpx {fnum@#1} {
+ \exp_not:c {#1name}
+ \exp_not:N \nobreakspace
+ \exp_not:c {the#1}}
+ \cs_new:cpn {#1name} {\chemmacros_translate:n {#1-name}}
+ \cs_new:cpn {list#1name} {\chemmacros_translate:n {#1-list}}
+ \newenvironment {#1}
+ {\@float{#1}}
+ {\end@float}
+ \newenvironment {#1*}
+ {\@dblfloat{#1}}
+ {\end@dblfloat}
+ \bool_if:nTF
+ {
+ \chemmacros_if_class_loaded_p:n {book} ||
+ \chemmacros_if_class_loaded_p:n {report}
+ }
+ {
+ \cs_new_protected:cpn {listof#1s}
+ {
+ \chemmacros_tex_if:nnTF {@twocolumn} {}
+ { \@restonecoltrue\onecolumn }
+ { \@restonecolfalse }
+ \exp_args:NNx \chapter* {\exp_not:c {list#1name}}
+ \@mkboth
+ { \MakeUppercase \use:c {list#1name} }
+ { \MakeUppercase \use:c {list#1name} }
+ \@starttoc {#2}
+ \chemmacros_tex_if:nnT {@restonecol} {}
+ { \twocolumn }
+ }
+ }
+ {
+ \cs_new_protected:cpn {listof#1s}
+ {
+ \exp_args:NNx \section* {\exp_not:c {list#1name}}
+ \@mkboth
+ { \MakeUppercase \use:c {list#1name} }
+ { \MakeUppercase \use:c {list#1name} }
+ \@starttoc {#2}
+ }
+ }
+ \cs_new_eq:cN {l@#1} \l@figure
+ }
+ }
+ \cs_set:cpn {#1name} {\chemmacros_translate:n {#1-name}}
+ \cs_set:cpn {list#1name} {\chemmacros_translate:n {#1-list}}
+ }
+
+% --------------------------------------------------------------------------
+\ChemCompatibilityTo{5.6}
+\DeclareTranslationFallback {scheme-name} {Scheme}
+\DeclareTranslation {English} {scheme-name} {Scheme}
+\DeclareTranslation {German} {scheme-name} {Schema}
+
+\DeclareTranslationFallback {scheme-list} {List~ of~ Schemes}
+\DeclareTranslation {English} {scheme-list} {List~ of~ Schemes}
+\DeclareTranslation {German} {scheme-list} {Verzeichnis~ der~ Schemata}
+\EndChemCompatibility
+
+\ChemCompatibilityFrom{5.6}
+\chemmacros_declare_translations:nn {scheme-name}
+ {
+ fallback = Scheme ,
+ English = Scheme ,
+ German = Schema
+ }
+
+\chemmacros_declare_translations:nn {scheme-list}
+ {
+ fallback = List~ of~ Schemes ,
+ English = List~ of~ Schemes ,
+ German = Verzeichnis~ der~ Schemata
+ }
+
+\chemmacros_declare_translations:nn {scheme}
+ {
+ fallback = scheme ,
+ English = scheme ,
+ German = Schema
+ }
+
+\chemmacros_declare_translations:nn {Scheme}
+ {
+ fallback = Scheme ,
+ English = Scheme ,
+ German = Schema
+ }
+
+\chemmacros_declare_translations:nn {schemes}
+ {
+ fallback = schemes ,
+ English = schemes ,
+ German = Schemata
+ }
+
+\chemmacros_declare_translations:nn {Schemes}
+ {
+ fallback = Schemes ,
+ English = Schemes ,
+ German = Schemata
+ }
+\EndChemCompatibility
+
+\tex_endinput:D
+% --------------------------------------------------------------------------
+2015/09/19 - make the module compatible with floatrow
+2015/10/23 - add info message to float method detection
+2016/01/23 - make the module compatible with chemscheme
+2016/04/25 - cleveref and fancyref support
+2016/12/28 - bug fix: typo in \chemmacros_tex_if:nnTF usage