summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex')
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex487
1 files changed, 0 insertions, 487 deletions
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex
deleted file mode 100644
index 58948c5f79..0000000000
--- a/macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex
+++ /dev/null
@@ -1,487 +0,0 @@
-% --------------------------------------------------------------------------
-%
-% the CHEMMACROS package -- module: `base'
-%
-% --------------------------------------------------------------------------
-% 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--2020 Clemens Niederberger
-%
-% 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.3 or later is part of all distributions of LaTeX
-% version 2008/05/04 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clemens Niederberger.
-% --------------------------------------------------------------------------
-\ChemModule{base}{2020/02/02 basic chemmacros module}
-
-% for the document hooks
-\ChemCompatibilityFrom{5.1}
-\RequirePackage {etoolbox}
-\EndChemCompatibility
-
-% --------------------------------------------------------------------------
-\msg_new:nnn {chemmacros} {command-deprecated}
- {
- The~ command~ \token_to_str:N #1 \c_space_tl is~ deprecated.~ Use~
- \token_to_str:N #2 \c_space_tl instead.
- }
-
-% define a deprecated command with hints to the corresponding new one:
-\cs_new_protected:Npn \chemmacros_define_deprecated:NN #1#2
- {
- \cs_set_protected:Npn #1
- {
- \msg_warning:nnnn {chemmacros} {command-deprecated} {#1} {#2}
- #2
- }
- }
-
-\NewDocumentCommand \DeclareChemDeprecated {mm}
- { \chemmacros_define_deprecated:NN #1 #2 }
-
-% --------------------------------------------------------------------------
-% define a macro set:
-% \NewChem... \RenewChem... \DeclareChem... \ProvideChem...
-% #1: macro names
-% #2: arg spec
-% #3: internal command call
-\cs_new_protected:Npn \chemmacros_new_macroset:nnn #1#2#3
- {
- \exp_args:Nc \NewDocumentCommand
- {
- NewChem
- \str_uppercase:f { \tl_head:n {#1} }
- \tl_tail:n {#1}
- }
- {#2}
- {
- \cs_if_free:NTF ##1
- { #3 }
- { \msg_error:nnn {chemmacros} {new-#1} {##1} }
- }
- \exp_args:Nc \NewDocumentCommand
- {
- RenewChem
- \str_uppercase:f { \tl_head:n {#1} }
- \tl_tail:n {#1}
- }
- {#2}
- {
- \cs_if_free:NTF ##1
- { \msg_error:nnn {chemmacros} {renew-#1} {##1} }
- { #3 }
- }
- \exp_args:Nc \NewDocumentCommand
- {
- DeclareChem
- \str_uppercase:f { \tl_head:n {#1} }
- \tl_tail:n {#1}
- }
- {#2}
- {#3}
- \exp_args:Nc \NewDocumentCommand
- {
- ProvideChem
- \str_uppercase:f { \tl_head:n {#1} }
- \tl_tail:n {#1}
- }
- {#2}
- { \cs_if_free:NT ##1 { #3 } }
- \msg_new:nnn {chemmacros} {new-#1}
- {
- You've~ tried~ to~ define~ a~ #1~ with~ \token_to_str:N
- \NewChem #1 ,~ but~ the~ command~ sequence~ \token_to_str:N ##1
- \c_space_tl already~ exists.~ Please~ choose~ another~ name.
- }
- \msg_new:nnn {chemmacros} {renew-#1}
- {
- You've~ tried~ to~ renew~ the~ #1~ \token_to_str:N ##1 ,~ but~
- it~ doesn't~ exist.
- }
- }
-
-\cs_new_protected:Npn \chemmacros_new_environment_macroset:nnn #1#2#3
- {
- \exp_args:Nc \NewDocumentCommand {NewChem#1} {#2}
- {
- \bool_lazy_and:nnTF
- { \cs_if_free_p:c {##1} }
- { \cs_if_free_p:c {end##1} }
- {#3}
- { \msg_error:nnn {chemmacros} {new-#1} {##1} }
- }
- \exp_args:Nc \NewDocumentCommand {RenewChem#1} {#2}
- {
- \bool_lazy_or:nnTF
- { \cs_if_free_p:c {##1} }
- { \cs_if_free_p:c {end##1} }
- { \msg_error:nnn {chemmacros} {renew-#1} {##1} }
- {#3}
- }
- \exp_args:Nc \NewDocumentCommand {DeclareChem#1} {#2} {#3}
- \exp_args:Nc \NewDocumentCommand {ProvideChem#1} {#2}
- {
- \bool_lazy_and:nT
- { \cs_if_free_p:c {##1} }
- { \cs_if_free_p:c {end##1} }
- {#3}
- }
- \msg_new:nnn {chemmacros} {new-#1}
- {
- You've~ tried~ to~ define~ a~ #1~ with~ \token_to_str:N
- \NewChem #1 ,~ but~ the~ command~ sequence~ \exp_not:c {##1}
- \c_space_tl already~ exists.~ Please~ choose~ another~ name.
- }
- \msg_new:nnn {chemmacros} {renew-#1}
- { You've~ tried~ to~ renew~ the~ #1~ ##1,~ but~ it~ doesn't~ exist. }
- }
-
-\NewDocumentCommand \NewChemMacroset {smmm}
- {
- \IfBooleanTF {#1}
- { \chemmacros_new_environment_macroset:nnn {#2} {#3} {#4} }
- { \chemmacros_new_macroset:nnn {#2} {#3} {#4} }
- }
-
-% --------------------------------------------------------------------------
-\cs_new_protected:Npn \chemmacros_define_keys:nn #1#2
- { \keys_define:nn {chemmacros/#1} {#2} }
-\cs_generate_variant:Nn \chemmacros_define_keys:nn {x}
-
-\cs_new_protected:Npn \chemmacros_set_keys:nn #1#2
- { \keys_set:nn {chemmacros/#1} {#2} }
-\cs_generate_variant:Nn \chemmacros_set_keys:nn {x,nx}
-
-\cs_new_protected:Npn \chemmacros_set_keys_groups:nnn #1#2#3
- { \keys_set_groups:nnn {chemmacros/#1} {#2} {#3} }
-
-\cs_new_protected:Npn \chemmacros_set_keys_filter:nnn #1#2#3
- { \keys_set_filter:nnn {chemmacros/#1} {#2} {#3} }
-
-\cs_new_protected:Npn \chemmacros_define_global_keys:n #1
- { \keys_define:nn {chemmacros} {#1} }
-
-\cs_new_protected:Npn \chemmacros_set_global_keys:n #1
- { \keys_set:nn {chemmacros} {#1} }
-
-% --------------------------------------------------------------------------
-% basic tools:
-\cs_new:Npn \chemmacros_remove_backslash:N #1
- { \exp_after:wN \use_none:n \token_to_str:N #1 }
-
-\cs_new_eq:NN \chemmacros_ignore_spaces: \tex_ignorespaces:D
-
-\cs_new_protected:Npn \chemmacros_nobreak: { \tex_penalty:D 10000 \scan_stop: }
-\cs_new_protected:Npn \chemmacros_allow_break: { \tex_penalty:D \c_zero_int }
-\cs_new_protected:Npn \chemmacros_skip_nobreak:N #1
- {
- \chemmacros_nobreak:
- \skip_horizontal:N #1
- \chemmacros_nobreak:
- }
-
-% this is used at least in the `isotope' module
-\prg_new_conditional:Npnn \chemmacros_if_is_int:n #1 {p,T,F,TF}
- {
- \if_charcode:w ! \if_int_compare:w 9 < 1#1 ! \else: _ \fi:
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
-
-\prg_new_conditional:Npnn \chemmacros_if_loaded:nn #1#2 {p,T,F,TF}
- {
- \use:c {chemmacros_if_#1_loaded:nTF} {#2}
- { \prg_return_true: }
- { \prg_return_false: }
- }
-
-\prg_new_conditional:Npnn \chemmacros_if_package_loaded:n #1 {p,T,F,TF}
- {
- \cs_if_exist:cTF {ver@#1.sty}
- { \prg_return_true: }
- { \prg_return_false: }
- }
-
-\prg_new_conditional:Npnn \chemmacros_if_class_loaded:n #1 {p,T,F,TF}
- {
- \cs_if_exist:cTF {ver@#1.cls}
- { \prg_return_true: }
- { \prg_return_false: }
- }
-
-\ChemCompatibilityFrom{5.2}
-% this is still true \AtBeginDocument:
-\prg_new_conditional:Npnn \chemmacros_if_preamble: {p,T,F,TF}
- {
- \cs_if_eq:NNTF \@onlypreamble \@notprerr
- { \prg_return_false: }
- { \prg_return_true: }
- }
-
-% this is still false \AtBeginDocument:
-\prg_new_conditional:Npnn \chemmacros_if_document: {p,T,F,TF}
- {
- \bool_if:NTF \l__chemmacros_in_document_bool
- { \prg_return_true: }
- { \prg_return_false: }
- }
-\EndChemCompatibility
-
-\ChemCompatibilityFrom{5.6}
-\cs_new_protected:Npn \chemmacros_cs_if_free_new:Npn #1
- {
- \cs_if_exist:NF #1
- { \cs_new:Npn #1 }
- }
-\cs_generate_variant:Nn \chemmacros_cs_if_free_new:Npn {c}
-
-\cs_new_protected:Npn \chemmacros_cs_if_free_new_protected:Npn #1
- {
- \cs_if_exist:NF #1
- { \cs_new_protected:Npn #1 }
- }
-\cs_generate_variant:Nn \chemmacros_cs_if_free_new_protected:Npn {c}
-
-\RequirePackage{scrlfile}
-
-% #1: counter
-% #2: singular
-% #3: plural
-% #4: Singular
-% #5: Plural
-\cs_new_protected:Npn \chemmacros_add_cleveref_support:nnnnn #1#2#3#4#5
- {
- \AfterPackage* {cleveref}
- {
- \cs_if_exist:cF {cref@#1@name}
- {
- \legacy_if:nTF {@cref@capitalise}
- { \crefname {#1} {#4} {#5} }
- { \crefname {#1} {#2} {#3} }
- \Crefname {#1} {#4} {#5}
- }
- }
- }
-\cs_generate_variant:Nn \chemmacros_add_cleveref_support:nnnnn {nnnx , nnnxx , nnnnx }
-
-% #1: counter
-% #2: singular
-% #3: Singular (optional)
-% #4: plural
-% #5: Plural (optional)
-\NewDocumentCommand \ChemCleverefSupport {mmomo}
- {
- \IfNoValueTF {#3}
- {
- \IfNoValueTF {#5}
- {
- \chemmacros_add_cleveref_support:nnnnn
- {#1}
- {#2}
- {#4}
- { \tl_titlecase:n {#2} }
- { \tl_titlecase:n {#4} }
- }
- {
- \chemmacros_add_cleveref_support:nnnnn
- {#1}
- {#2}
- {#4}
- { \tl_titlecase:n {#2} }
- {#5}
- }
- }
- {
- \IfNoValueTF {#5}
- {
- \chemmacros_add_cleveref_support:nnnnn
- {#1}
- {#2}
- {#4}
- {#3}
- { \tl_titlecase:n {#4} }
- }
- { \chemmacros_add_cleveref_support:nnnnn {#1} {#2} {#4} {#3} {#5} }
- }
- }
-\@onlypreamble\ChemCleverefSupport
-
-% #1: id
-% #2: mid sentence
-% #3: begin sentence
-\cs_new_protected:Npn \chemmacros_add_fancyref_support:nnn #1#2#3
- {
- \AfterPackage* {fancyref}
- {
- \chemmacros_cs_if_free_new:cpn {fancyref#1labelprefix} {#1}
- \chemmacros_cs_if_free_new:cpn {fref#1name} {#2}
- \chemmacros_cs_if_free_new:cpn {Fref#1name} {#3}
- \exp_args:Nnx \frefformat {vario} { \exp_not:c {fancyref#1labelprefix} }
- { \use:c {fref#1name} \fancyrefdefaultspacing ##1##3 }
- \exp_args:Nnx \Frefformat {vario} { \exp_not:c {fancyref#1labelprefix} }
- { \use:c {Fref#1name} \fancyrefdefaultspacing ##1##3 }
- \exp_args:Nnx \frefformat {plain} { \exp_not:c {fancyref#1labelprefix} }
- { \use:c {fref#1name} \fancyrefdefaultspacing ##1 }
- \exp_args:Nnx \Frefformat {plain} { \exp_not:c {fancyref#1labelprefix} }
- { \use:c {Fref#1name} \fancyrefdefaultspacing ##1 }
- }
- }
-\cs_generate_variant:Nn \chemmacros_add_fancyref_support:nnn {nnx}
-
-% #1: id
-% #2: mid sentence
-% #3: begin sentence (optional)
-\NewDocumentCommand \ChemFancyrefSupport {mmo}
- {
- \IfNoValueTF {#3}
- { \chemmacros_add_fancyref_support:nnn {#1} {#2} { \tl_titlecase:n {#3} } }
- { \chemmacros_add_fancyref_support:nnn {#1} {#2} {#3} }
- }
-\@onlypreamble\ChemFancyrefSupport
-\EndChemCompatibility
-
-% --------------------------------------------------------------------------
-% some checks at begin document:
-\bool_new:N \l__chemmacros_in_document_bool
-\bool_new:N \l__chemmacros_chemstyle_bool
-
-\chemmacros_if_compatibility:nnTF {>=} {5.2}
- { \AfterEndPreamble }
- { \AtBeginDocument }
- { \bool_set_true:N \l__chemmacros_in_document_bool }
-
-\AtBeginDocument
- {
- \@ifpackageloaded { chemstyle }
- { \bool_set_true:N \l__chemmacros_chemstyle_bool }
- { \bool_set_false:N \l__chemmacros_chemstyle_bool }
- }
-
-% --------------------------------------------------------------------------
-% detection and handling of bold face:
-\RequirePackage{bm}
-
-\prg_new_protected_conditional:Npnn \chemmacros_if_bold: {T,F,TF}
- {
- \seq_if_in:NVTF \l__chemmacros_if_bf_seq \f@series
- { \prg_return_true: }
- { \prg_return_false: }
- }
-
-\seq_new:N \l__chemmacros_if_bf_seq
-
-\seq_set_split:Nnn \l__chemmacros_if_bf_seq { , }
- {
- b , bc , bm , bx , bux ,
- eb , ebc , ebx , mb ,
- sb , sbc , sbx ,
- ub , ubc , ubx
- }
-
-\cs_new_protected:Npn \chemmacros_bold:n #1
- {
- \chemmacros_if_bold:TF
- {
- \mode_if_math:TF
- { \bm {#1} }
- { \textbf {#1} }
- }
- {#1}
- }
-
-\cs_new_protected:Npn \chemmacros_detect_bold:n
- { \error \chemmacros_bold:n }
-
-% --------------------------------------------------------------------------
-\RequirePackage{amstext}
-
-\cs_new_protected:Npn \chemmacros_text:n #1
- { \mode_if_math:TF { \text {#1} } {#1} }
-\cs_generate_variant:Nn \chemmacros_text:n { V }
-
-\cs_new_protected:Npn \chemmacros_math:n #1
- { \chemmacros_text:n { \c_math_toggle_token #1 \c_math_toggle_token } }
-\cs_generate_variant:Nn \chemmacros_math:n { V }
-
-% --------------------------------------------------------------------------
-% a setup command:
-\NewDocumentCommand \chemsetup {om}
- {
- \IfNoValueTF {#1}
- { \keys_set:nn {chemmacros} {#2} }
- { \keys_set:nn {chemmacros/#1} {#2} }
- }
-
-\chemmacros_define_global_keys:n
- { modules .code:n = \chemmacros_load_modules:n {#1} }
-
-% --------------------------------------------------------------------------
-
-% load package #1 and add its options to chemmacros
-% this requires that package #1 defines its options with l3keys using its
-% name as module
-\cs_new_protected:Npn \chemmacros_integrate_package:nnn #1#2#3
- {
- \tl_if_blank:nTF {#3}
- {
- \tl_if_blank:nTF {#1}
- { \RequirePackage {#2} }
- { \RequirePackage [#1] {#2} }
- }
- {
- \tl_if_blank:nTF {#1}
- { \RequirePackage {#2} [#3] }
- { \RequirePackage [#1] {#2} [#3] }
- }
- \chemmacros_define_global_keys:n
- {
- #2 .choice: ,
- #2 / unknown .code:n =
- \keys_set:no {#2} { \l_keys_key_tl = ##1 }
- }
- }
-
-% --------------------------------------------------------------------------
-
-\chemmacros_if_compatibility:nnT {>=} {5.2}
- { \chemmacros_load_module:n {errorcheck} }
-
-% --------------------------------------------------------------------------
-
-\bool_new:N \l__chemmacros_hyperref_bool
-
-\AtEndPreamble
- {
- \chemmacros_if_package_loaded:nT {hyperref}
- { \bool_set_true:N \l__chemmacros_hyperref_bool }
- }
-
-\file_input_stop:
-
-2015/09/23 - new conditionals \chemmacros_if_preamble:TF and
- \chemmacros_if_document:TF
-2015/10/14 - load `errorcheck' module
-2016/02/09 - starred version of \NewChemMacroset
-2016/03/07 - \chemmacros_define_keys:nn and friends
-2016/04/25 - macros for cleveref and fancyref support, \ChemCleverefSupport
- \ChemFancyrefSupport
-2016/05/04 - fix \ChemCleverefSupport
-2017/08/28 - add missing hyperref check
-2020/01/16 - adapt to renaming of string case changing functions
-2020/02/02 - lazy boolean evaluation
-2020/11/21 - exchange \tl_mixed_case:n for \tl_titlecase:n