diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/chemmacros/chemmacros.module.acid-base.code.tex |
Initial commit
Diffstat (limited to 'macros/latex/contrib/chemmacros/chemmacros.module.acid-base.code.tex')
-rw-r--r-- | macros/latex/contrib/chemmacros/chemmacros.module.acid-base.code.tex | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.acid-base.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.acid-base.code.tex new file mode 100644 index 0000000000..fb998832c9 --- /dev/null +++ b/macros/latex/contrib/chemmacros/chemmacros.module.acid-base.code.tex @@ -0,0 +1,164 @@ +% -------------------------------------------------------------------------- +% +% the CHEMMACROS package -- module: `acid-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-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{acid-base}{2016/05/31 acid/base} + +\chemmacros_load_modules:n {charges} + +% -------------------------------------------------------------------------- +% equilibrium constants: + +\tl_new:N \l__chemmacros_equilibrium_constant_tl +\tl_set:Nn \l__chemmacros_equilibrium_constant_tl {K} +\prop_new:N \l__chemmacros_eq_constants_prop + +\prg_new_conditional:Npnn \chemmacros_if_eq_constant:Nn #1#2 {T,F,TF} + { + \cs_if_exist:NTF #1 + { + \tl_if_eq:xnTF + { \prop_item:Nn \l__chemmacros_eq_constants_prop {#1} } + {#2} + { \prg_return_true: } + { \prg_return_false: } + } + { \prg_return_false: } + } +\cs_generate_variant:Nn \tl_if_eq:nnTF {x} + +% #1: cs +% #2: translation id and option name +% #3: default translation +\cs_new_protected:Npn \chemmacros_define_eq_constant:Nnn #1#2#3 + { + \chemmacros_if_eq_constant:NnF {#1} {#2} + { + \cs_new_protected:Npn #1 {} + \prop_put:Nnn \l__chemmacros_eq_constants_prop {#1} {#2} + \tl_new:c {l__chemmacros_#2_tl} + \chemmacros_define_keys:nn {acid-base} + { #2 .tl_set:c = l__chemmacros_#2_tl } + } + \tl_set:cn + {l__chemmacros_#2_tl} + { \chemmacros_translate:n {#2} } + \chemmacros_if_compatibility:nnTF {>=} {5.7} + { \chemmacros_declare_translation:nnn {#2} {fallback} {#3} } + { \DeclareTranslationFallback {#2} {#3} } + \cs_set_protected:Npn #1 + { + \ensuremath + { + \chemmacros_bold:n + { + \l__chemmacros_equilibrium_constant_tl + \c_math_subscript_token + { \tl_use:c {l__chemmacros_#2_tl} } + } + } + } + } + +\NewChemMacroset {EqConstant} {mmm} + { \chemmacros_define_eq_constant:Nnn #1 {#2} {#3} } + +\NewChemEqConstant \Ka {K-acid} { \mathrm{a} } +\NewChemEqConstant \Kb {K-base} { \mathrm{b} } +\NewChemEqConstant \Kw {K-water} { \mathrm{w} } + +\chemmacros_if_compatibility:nnT {>=} {5.4} + { + \chemmacros_define_keys:nn {acid-base} + { eq-constant .tl_set:N = \l__chemmacros_equilibrium_constant_tl } + } + +\chemmacros_define_keys:nn {acid-base} + { + p-style .choice: , + p-style / slanted .code:n = \cs_set_eq:NN \chemmacros_p_style:n \textsl , + p-style / italics .code:n = \cs_set_eq:NN \chemmacros_p_style:n \textit , + p-style / upright .code:n = \cs_set_eq:NN \chemmacros_p_style:n \textup , + p-style .initial:n = upright + } + +\cs_new_protected:Npn \chemmacros_p:n #1 + { + \group_begin: + \mbox + { + \chemmacros_p_style:n {p} + \ensuremath {#1} + } + \group_end: + } + +\NewDocumentCommand \p {m} { \chemmacros_p:n {#1} } +\NewDocumentCommand \pH {} { \chemmacros_p:n { \chemmacros_chemformula:n {H} } } +\NewDocumentCommand \pOH {} { \chemmacros_p:n { \chemmacros_chemformula:n {OH} } } + +\NewDocumentCommand \pKa {o} + { + \chemmacros_p:n + { + \Ka \IfNoValueF {#1} + { {} \c_math_subscript_token { \chemmacros_bold:n {#1} } } + } + } + +\NewDocumentCommand \pKb {o} + { + \chemmacros_p:n + { + \Kb \IfNoValueF {#1} + { {} \c_math_subscript_token { \chemmacros_bold:n {#1} } } + } + } + +% -------------------------------------------------------------------------- +\ChemCompatibilityTo{5.6} +\DeclareTranslation {English} {K-acid} {\mathrm{a}} +\DeclareTranslation {German} {K-acid} {\mathrm{s}} +\DeclareTranslation {Dutch} {K-acid} {\mathrm{z}} + +\DeclareTranslation {English} {K-base} {\mathrm{b}} + +\DeclareTranslation {English} {K-water} {\mathrm{w}} +\EndChemCompatibility + +\ChemCompatibilityFrom{5.6} +\chemmacros_declare_translations:nn {K-acid} + { + German = \mathrm {s} , + Dutch = \mathrm {z} + } +\EndChemCompatibility +% -------------------------------------------------------------------------- +\tex_endinput:D + +2016/02/04 - \NewChemEqConstant and family, new option `eq-constant' +2016/04/27 - moved translations from lang module to acid-base module +2016/05/31 - adapt to changes in `lang' module |