% ---------------------------------------------------------------------------- % - the CHEMMACROS bundle % - chemgreek.sty % - macros and commands for chemists % --------------------------------------------------------------------------- % - Clemens Niederberger % --------------------------------------------------------------------------- % - https://bitbucket.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-2013 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. % ---------------------------------------------------------------------------- \RequirePackage{expl3,xparse} \def\chemgreek@version{0.2} \def\chemgreek@date{2013/08/24} \ProvidesExplPackage{chemgreek}{\chemgreek@date}{\chemgreek@version} {interface for upright greek letters for use in chemistry (CN)} % ---------------------------------------------------------------------------- % temporary variables: \seq_new:N \l__chemgreek_tmpa_seq \tl_new:N \l__chemgreek_tmpa_tl \tl_new:N \l__chemgreek_tmpb_tl \int_new:N \l__chemgreek_tmpa_int \int_new:N \g__chemgreek_tmpa_int % ---------------------------------------------------------------------------- % an l3 conditional that can test 2e's conditionals that go like % \iffoo ... \else ... \fi % see http://tex.stackexchange.com/a/119806/5049 \prg_new_conditional:Npnn \chemgreek_latex_if:n #1 {p,T,F,TF} { \use:c { if #1 } \prg_return_true: \else: \prg_return_false: \fi: } % ---------------------------------------------------------------------------- % messages \msg_new:nnnn { chemgreek } { mapping-not-defined } { The~ mapping~ `#1'~ does~ not~ exist~ \msg_line_context: } { You~ chose~ the~ mapping~ `#1'~ which~ has~ apparently~ not~ been~ defined,~ yet.~ If~ this~ is~ due~ to~ a~ miss-spelling~ you~ need~ to~ declare~ it~ first~ via~ \token_to_str:N \newchemgreekmapping \c_space_tl or~ \token_to_str:N \declarechemgreekmapping . } \msg_new:nnnn { chemgreek } { mapping-defined } { The~ mapping~ `#1'~ does~ already~ exist~ \msg_line_context: } { It~ seems~ you're~ trying~ to~ define~ the~ mapping~ `#1'.~ However,~ this~ mapping~ does~ already~ exist.~ If~ this~ is~ not~ due~ to~ a~ miss-spelling~ you~ need~ to~ redefine~ it~ via~ \token_to_str:N \renewchemgreekmapping . } % ---------------------------------------------------------------------------- % a tokenlist constant that will be used to build the mapping property lists % both for uppercase and lowercase and also for setting the output macros \tl_const:Nn \c__chemgreek_order_tl { { alpha } % 1 { beta } % 2 { gamma } % 3 { delta } % 4 { epsilon } % 5 { zeta } % 6 { eta } % 7 { theta } % 8 { iota } % 9 { kappa } % 10 { lambda } % 11 { mu } % 12 { nu } % 13 { xi } % 14 { omikron } % 15 { pi } % 16 { rho } % 17 { sigma } % 18 { tau } % 19 { upsilon } % 20 { phi } % 21 { psi } % 22 { chi } % 23 { omega } % 24 } % ---------------------------------------------------------------------------- % variants of kernel functions: \cs_generate_variant:Nn \prop_put:Nnn { cxV } % ---------------------------------------------------------------------------- % helper function to retrieve upper- and lowercase entries while the mapping % happens: \cs_new:Npn \__chemgreek_get_upper_lower:w #1 / #2 \q_stop { \tl_set:Nn \l__chemgreek_tmpa_tl { #1 } \tl_set:Nn \l__chemgreek_tmpb_tl { #2 } } % ---------------------------------------------------------------------------- % a conditional to test if a mapping exists: \prg_new_conditional:Npnn \chemgreek_if_mapping_exists:n #1 {p,T,F,TF} { \bool_if:nTF { \prop_if_exist_p:c { l__chemgreek_uppercase_mapping_#1_prop } && \prop_if_exist_p:c { l__chemgreek_lowercase_mapping_#1_prop } } { \prg_return_true: } { \prg_return_false: } } % ---------------------------------------------------------------------------- % the main mapping function: % #1: mapping-name % #2: mapping-entries \cs_new_protected:Npn \chemgreek_new_mapping:nn #1#2 { \chemgreek_if_mapping_exists:nTF { #1 } { \msg_error:nn { chemgreek } { mapping-defined } } { \prop_new:c { l__chemgreek_uppercase_mapping_#1_prop } \prop_new:c { l__chemgreek_lowercase_mapping_#1_prop } \__chemgreek_set_mapping:nn { #1 } { #2 } } } \cs_new_protected:Npn \chemgreek_renew_mapping:nn #1#2 { \chemgreek_if_mapping_exists:nTF { #1 } { \__chemgreek_set_mapping:nn { #1 } { #2 } } { \msg_error:nn { chemgreek } { mapping-not-defined } } } \cs_new_protected:Npn \chemgreek_declare_mapping:nn #1#2 { \chemgreek_if_mapping_exists:nF { #1 } { \prop_new:c { l__chemgreek_uppercase_mapping_#1_prop } \prop_new:c { l__chemgreek_lowercase_mapping_#1_prop } } \__chemgreek_set_mapping:nn { #1 } { #2 } } \cs_new_protected:Npn \__chemgreek_set_mapping:nn #1#2 { \int_zero:N \l__chemgreek_tmpa_int \clist_map_inline:nn { #2 } { \int_incr:N \l__chemgreek_tmpa_int \__chemgreek_get_upper_lower:w ##1 \q_stop \prop_put:cxV { l__chemgreek_lowercase_mapping_#1_prop } { \tl_item:Nn \c__chemgreek_order_tl { \l__chemgreek_tmpa_int } } \l__chemgreek_tmpa_tl \prop_put:cxV { l__chemgreek_uppercase_mapping_#1_prop } { \tl_item:Nn \c__chemgreek_order_tl { \l__chemgreek_tmpa_int } } \l__chemgreek_tmpb_tl } } % the user command: \NewDocumentCommand \newchemgreekmapping { mm } { \chemgreek_new_mapping:nn { #1 } { #2 } } \NewDocumentCommand \renewchemgreekmapping { mm } { \chemgreek_renew_mapping:nn { #1 } { #2 } } \NewDocumentCommand \declarechemgreekmapping { mm } { \chemgreek_declare_mapping:nn { #1 } { #2 } } % ---------------------------------------------------------------------------- % a function to selectively change specific entries in a mapping: % #1: mapping-name % #2: upper / lower % #3: entry-name % #4: entry \cs_new_protected:Npn \chemgreek_change:nnnn #1#2#3#4 { \chemgreek_if_mapping_exists:nTF { #1 } { \prop_put:cnn { l__chemgreek_#2 case_mapping_#1_prop } { #3 } { #4 } } { \msg_error:nn { chemgreek } { mapping-not-defined } } } % the user command: \NewDocumentCommand \changechemgreeksymbol { mmmm } { \chemgreek_change:nnnn { #1 } { #2 } { #3 } { #4 } } % ---------------------------------------------------------------------------- % a function to activate a mapping: % #1: mapping-name \cs_new_protected:Npn \chemgreek_activate_mapping:n #1 { \chemgreek_if_mapping_exists:nTF { #1 } { \tl_map_inline:Nn \c__chemgreek_order_tl { \cs_set_protected:cpx { Chem \tl_expandable_uppercase:n ##1 } { \prop_get:cn { l__chemgreek_uppercase_mapping_#1_prop } { ##1 } } \cs_set_protected:cpx { Chem ##1 } { \prop_get:cn { l__chemgreek_lowercase_mapping_#1_prop } { ##1 } } } } { \msg_error:nn { chemgreek } { mapping-not-defined } } } % user command that also loads the needed package: % #1: load package % #2: option % #3: mapping-name \NewDocumentCommand \activatechemgreekmapping { som } { \IfBooleanT { #1 } { \IfNoValueTF { #2 } { \RequirePackage { #3 } } { \RequirePackage [ #2 ] { #3 } } } \chemgreek_activate_mapping:n { #3 } } \@onlypreamble\activatechemgreekmapping % user command that activates a new mapping without loading the package: \NewDocumentCommand \selectchemgreekmapping { m } { \chemgreek_activate_mapping:n { #1 } } % ---------------------------------------------------------------------------- % a debugging command: \cs_new_protected:Npn \chemgreek_show_mapping:n #1 { \chemgreek_activate_mapping:n { #1 } \int_gzero:N \g__chemgreek_tmpa_int \begin { tabular } { llll } pos & name & lower & upper \\ \tl_map_inline:Nn \c__chemgreek_order_tl { \int_gincr:N \g__chemgreek_tmpa_int \int_use:N \g__chemgreek_tmpa_int . & ##1 & \use:c { Chem ##1 } & \use:c { Chem \tl_expandable_uppercase:n ##1 } \\ } \end{tabular} } \cs_new_eq:NN \showchemgreekmapping \chemgreek_show_mapping:n % ---------------------------------------------------------------------------- % functions to format integers with greek letters; these are basically copies % of \int_to_alph:n \cs_new:Npn \chemgreek_int_to_greek:n #1 { \int_to_symbols:nnn { #1 } { 24 } { { 1 } { \Chemalpha } { 2 } { \Chembeta } { 3 } { \Chemgamma } { 4 } { \Chemdelta } { 5 } { \Chemepsilon } { 6 } { \Chemzeta } { 7 } { \Chemeta } { 8 } { \Chemiota } { 9 } { \Chemtheta } { 10 } { \Chemkappa } { 11 } { \Chemlambda } { 12 } { \Chemmu } { 13 } { \Chemnu } { 14 } { \Chemxi } { 15 } { \Chemomikron } { 16 } { \Chempi } { 17 } { \Chemrho } { 18 } { \Chemsigma } { 19 } { \Chemtau } { 20 } { \Chemupsilon } { 21 } { \Chemphi } { 22 } { \Chempsi } { 23 } { \Chemchi } { 24 } { \Chemomega } } } \cs_new:Npn \chemgreek_int_to_Greek:n #1 { \int_to_symbols:nnn { #1 } { 24 } { { 1 } { \ChemAlpha } { 2 } { \ChemBeta } { 3 } { \ChemGamma } { 4 } { \ChemDelta } { 5 } { \ChemEpsilon } { 6 } { \ChemZeta } { 7 } { \ChemEta } { 8 } { \ChemIota } { 9 } { \ChemTheta } { 10 } { \ChemKappa } { 11 } { \ChemLambda } { 12 } { \ChemMu } { 13 } { \ChemNu } { 14 } { \ChemXi } { 15 } { \ChemOmikron } { 16 } { \ChemPi } { 17 } { \ChemRho } { 18 } { \ChemSigma } { 19 } { \ChemTau } { 20 } { \ChemUpsilon } { 21 } { \ChemPhi } { 22 } { \ChemPsi } { 23 } { \ChemChi } { 24 } { \ChemOmega } } } % ---------------------------------------------------------------------------- % predefine some mappings % default: \chemgreek_new_mapping:nn { default } { \ensuremath{\alpha} / \ensuremath{\mathrm{A}} , % 1 \ensuremath{\beta} / \ensuremath{\mathrm{B}} , % 2 \ensuremath{\gamma} / \ensuremath{\Gamma} , % 3 \ensuremath{\delta} / \ensuremath{\Delta} , % 4 \ensuremath{\epsilon} / \ensuremath{\mathrm{E}} , % 5 \ensuremath{\zeta} / \ensuremath{\mathrm{Z}} , % 6 \ensuremath{\eta} / \ensuremath{\mathrm{H}} , % 7 \ensuremath{\theta} / \ensuremath{\Theta} , % 8 \ensuremath{\iota} / \ensuremath{\mathrm{I}} , % 9 \ensuremath{\kappa} / \ensuremath{\mathrm{K}} , % 10 \ensuremath{\lambda} / \ensuremath{\Lambda} , % 11 \ensuremath{\mu} / \ensuremath{\mathrm{M}} , % 12 \ensuremath{\nu} / \ensuremath{\mathrm{N}} , % 13 \ensuremath{\xi} / \ensuremath{\Xi} , % 14 \ensuremath{o} / \ensuremath{\mathrm{O}} , % 15 \ensuremath{\pi} / \ensuremath{\Pi} , % 16 \ensuremath{\rho} / \ensuremath{\mathrm{P}} , % 17 \ensuremath{\sigma} / \ensuremath{\Sigma} , % 18 \ensuremath{\tau} / \ensuremath{\mathrm{T}} , % 19 \ensuremath{\upsilon} / \ensuremath{\Upsilon} , % 20 \ensuremath{\phi} / \ensuremath{\Phi} , % 21 \ensuremath{\psi} / \ensuremath{\Psi} , % 22 \ensuremath{\chi} / \ensuremath{\mathrm{X}} , % 23 \ensuremath{\omega} / \ensuremath{\Omega} % 24 } % default-variant: \chemgreek_new_mapping:nn { var-default } { \ensuremath{\alpha} / \ensuremath{\mathrm{A}} , % 1 \ensuremath{\beta} / \ensuremath{\mathrm{B}} , % 2 \ensuremath{\gamma} / \ensuremath{\Gamma} , % 3 \ensuremath{\delta} / \ensuremath{\Delta} , % 4 \ensuremath{\varepsilon} / \ensuremath{\mathrm{E}} , % 5 \ensuremath{\zeta} / \ensuremath{\mathrm{Z}} , % 6 \ensuremath{\eta} / \ensuremath{\mathrm{H}} , % 7 \ensuremath{\theta} / \ensuremath{\Theta} , % 8 \ensuremath{\iota} / \ensuremath{\mathrm{I}} , % 9 \ensuremath{\kappa} / \ensuremath{\mathrm{K}} , % 10 \ensuremath{\lambda} / \ensuremath{\Lambda} , % 11 \ensuremath{\mu} / \ensuremath{\mathrm{M}} , % 12 \ensuremath{\nu} / \ensuremath{\mathrm{N}} , % 13 \ensuremath{\xi} / \ensuremath{\Xi} , % 14 \ensuremath{o} / \ensuremath{\mathrm{O}} , % 15 \ensuremath{\pi} / \ensuremath{\Pi} , % 16 \ensuremath{\varrho} / \ensuremath{\mathrm{P}} , % 17 \ensuremath{\sigma} / \ensuremath{\Sigma} , % 18 \ensuremath{\tau} / \ensuremath{\mathrm{T}} , % 19 \ensuremath{\upsilon} / \ensuremath{\Upsilon} , % 20 \ensuremath{\phi} / \ensuremath{\Phi} , % 21 \ensuremath{\psi} / \ensuremath{\Psi} , % 22 \ensuremath{\chi} / \ensuremath{\mathrm{X}} , % 23 \ensuremath{\omega} / \ensuremath{\Omega} % 24 } % mathdesign: \chemgreek_new_mapping:nn { mathdesign } { \ensuremath{\alphaup} / \ensuremath{\mathrm{A}} , % 1 \ensuremath{\betaup} / \ensuremath{\mathrm{B}} , % 2 \ensuremath{\gammaup} / \ensuremath{\Gammaup} , % 3 \ensuremath{\deltaup} / \ensuremath{\Deltaup} , % 4 \ensuremath{\epsilonup} / \ensuremath{\mathrm{E}} , % 5 \ensuremath{\zetaup} / \ensuremath{\mathrm{Z}} , % 6 \ensuremath{\etaup} / \ensuremath{\mathrm{H}} , % 7 \ensuremath{\thetaup} / \ensuremath{\Thetaup} , % 8 \ensuremath{\iotaup} / \ensuremath{\mathrm{I}} , % 9 \ensuremath{\kappaup} / \ensuremath{\mathrm{K}} , % 10 \ensuremath{\lambdaup} / \ensuremath{\Lambdaup} , % 11 \ensuremath{\muup} / \ensuremath{\mathrm{M}} , % 12 \ensuremath{\nuup} / \ensuremath{\mathrm{N}} , % 13 \ensuremath{\xiup} / \ensuremath{\Xiup} , % 14 \ensuremath{\mathrm{o}} / \ensuremath{\mathrm{O}} , % 15 \ensuremath{\piup} / \ensuremath{\Piup} , % 16 \ensuremath{\rhoup} / \ensuremath{\mathrm{R}} , % 17 \ensuremath{\sigmaup} / \ensuremath{\Sigmaup} , % 18 \ensuremath{\tauup} / \ensuremath{\mathrm{T}} , % 19 \ensuremath{\upsilonup} / \ensuremath{\Upsilonup} , % 20 \ensuremath{\phiup} / \ensuremath{\Phiup} , % 21 \ensuremath{\psiup} / \ensuremath{\Psiup} , % 22 \ensuremath{\chiup} / \ensuremath{\mathrm{X}} , % 23 \ensuremath{\omegaup} / \ensuremath{\Omegaup} % 24 } % textgreek: \chemgreek_new_mapping:nn { textgreek } { \textalpha / \textAlpha , % 1 \textbeta / \textBeta , % 2 \textgamma / \textGamma , % 3 \textdelta / \textDelta , % 4 \textepsilon / \textEpsilon , % 5 \textzeta / \textZeta , % 6 \texteta / \textEta , % 7 \texttheta / \textTheta , % 8 \textiota / \textIota , % 9 \textkappa / \textKappa , % 10 \textlambda / \textLambda , % 11 \textmugreek / \textMu , % 12 \textnu / \textNu , % 13 \textxi / \textXi , % 14 \textomikron / \textOmikron , % 15 \textpi / \textPi , % 16 \textrho / \textRho , % 17 \textsigma / \textSigma , % 18 \texttau / \textTau , % 19 \textupsilon / \textUpsilon , % 20 \textphi / \textPhi , % 21 \textpsi / \textPsi , % 22 \textchi / \textChi , % 23 \textomega / \textOmega % 24 } % upgreek: \chemgreek_new_mapping:nn { upgreek } { \ensuremath{\upalpha} / \ensuremath{\mathrm{A}} , % 1 \ensuremath{\upbeta} / \ensuremath{\mathrm{B}} , % 2 \ensuremath{\upgamma} / \ensuremath{\Upgamma} , % 3 \ensuremath{\updelta} / \ensuremath{\Updelta} , % 4 \ensuremath{\upepsilon} / \ensuremath{\mathrm{E}} , % 5 \ensuremath{\upzeta} / \ensuremath{\mathrm{Z}} , % 6 \ensuremath{\upeta} / \ensuremath{\mathrm{H}} , % 7 \ensuremath{\uptheta} / \ensuremath{\Uptheta} , % 8 \ensuremath{\upiota} / \ensuremath{\mathrm{I}} , % 9 \ensuremath{\upkappa} / \ensuremath{\mathrm{K}} , % 10 \ensuremath{\uplambda} / \ensuremath{\Uplambda} , % 11 \ensuremath{\upmu} / \ensuremath{\mathrm{M}} , % 12 \ensuremath{\upnu} / \ensuremath{\mathrm{N}} , % 13 \ensuremath{\upxi} / \ensuremath{\Upxi} , % 14 \ensuremath{\mathrm{o}} / \ensuremath{\mathrm{O}} , % 15 \ensuremath{\uppi} / \ensuremath{\Uppi} , % 16 \ensuremath{\uprho} / \ensuremath{\mathrm{R}} , % 17 \ensuremath{\upsigma} / \ensuremath{\Upsigma} , % 18 \ensuremath{\uptau} / \ensuremath{\mathrm{T}} , % 19 \ensuremath{\upupsilon} / \ensuremath{\Upupsilon} , % 20 \ensuremath{\upphi} / \ensuremath{\Upphi} , % 21 \ensuremath{\uppsi} / \ensuremath{\Uppsi} , % 22 \ensuremath{\upchi} / \ensuremath{\mathrm{X}} , % 23 \ensuremath{\upomega} / \ensuremath{\Upomega} % 24 } % kpfonts: \chemgreek_new_mapping:nn { kpfonts } { \ensuremath{\alphaup} / \ensuremath{\mathrm{A}} , % 1 \ensuremath{\betaup} / \ensuremath{\mathrm{B}} , % 2 \ensuremath{\gammaup} / \ensuremath{\Gammaup} , % 3 \ensuremath{\deltaup} / \ensuremath{\Deltaup} , % 4 \ensuremath{\epsilonup} / \ensuremath{\mathrm{E}} , % 5 \ensuremath{\zetaup} / \ensuremath{\mathrm{Z}} , % 6 \ensuremath{\etaup} / \ensuremath{\mathrm{H}} , % 7 \ensuremath{\thetaup} / \ensuremath{\Thetaup} , % 8 \ensuremath{\iotaup} / \ensuremath{\mathrm{I}} , % 9 \ensuremath{\kappaup} / \ensuremath{\mathrm{K}} , % 10 \ensuremath{\lambdaup} / \ensuremath{\Lambdaup} , % 11 \ensuremath{\muup} / \ensuremath{\mathrm{M}} , % 12 \ensuremath{\nuup} / \ensuremath{\mathrm{N}} , % 13 \ensuremath{\xiup} / \ensuremath{\Xiup} , % 14 \ensuremath{\mathrm{o}} / \ensuremath{\mathrm{O}} , % 15 \ensuremath{\piup} / \ensuremath{\Piup} , % 16 \ensuremath{\rhoup} / \ensuremath{\mathrm{R}} , % 17 \ensuremath{\sigmaup} / \ensuremath{\Sigmaup} , % 18 \ensuremath{\tauup} / \ensuremath{\mathrm{T}} , % 19 \ensuremath{\upsilonup} / \ensuremath{\Upsilonup} , % 20 \ensuremath{\phiup} / \ensuremath{\Phiup} , % 21 \ensuremath{\psiup} / \ensuremath{\Psiup} , % 22 \ensuremath{\chiup} / \ensuremath{\mathrm{X}} , % 23 \ensuremath{\omegaup} / \ensuremath{\Omegaup} % 24 } % newtx: \chemgreek_new_mapping:nn { newtx } { \ensuremath{\upalpha} / \ensuremath{\mathrm{A}} , % 1 \ensuremath{\upbeta} / \ensuremath{\mathrm{B}} , % 2 \ensuremath{\upgamma} / \ensuremath{\upGamma} , % 3 \ensuremath{\updelta} / \ensuremath{\upDelta} , % 4 \ensuremath{\upepsilon} / \ensuremath{\mathrm{E}} , % 5 \ensuremath{\upzeta} / \ensuremath{\mathrm{Z}} , % 6 \ensuremath{\upeta} / \ensuremath{\mathrm{H}} , % 7 \ensuremath{\uptheta} / \ensuremath{\upTheta} , % 8 \ensuremath{\upiota} / \ensuremath{\mathrm{I}} , % 9 \ensuremath{\upkappa} / \ensuremath{\mathrm{K}} , % 10 \ensuremath{\uplambda} / \ensuremath{\upLambda} , % 11 \ensuremath{\upmu} / \ensuremath{\mathrm{M}} , % 12 \ensuremath{\upnu} / \ensuremath{\mathrm{N}} , % 13 \ensuremath{\upxi} / \ensuremath{\upXi} , % 14 \ensuremath{\mathrm{o}} / \ensuremath{\mathrm{O}} , % 15 \ensuremath{\uppi} / \ensuremath{\upPi} , % 16 \ensuremath{\uprho} / \ensuremath{\mathrm{R}} , % 17 \ensuremath{\upsigma} / \ensuremath{\upSigma} , % 18 \ensuremath{\uptau} / \ensuremath{\mathrm{T}} , % 19 \ensuremath{\upupsilon} / \ensuremath{\upUpsilon} , % 20 \ensuremath{\upphi} / \ensuremath{\upPhi} , % 21 \ensuremath{\uppsi} / \ensuremath{\upPsi} , % 22 \ensuremath{\upchi} / \ensuremath{\mathrm{X}} , % 23 \ensuremath{\upomega} / \ensuremath{\upOmega} % 24 } % fourier: \cs_new:Npn \__chemgreek_lfourier:n #1 { \chemgreek_latex_if:nTF { sloped } { \ensuremath { \use:c { other #1 } } } { \ensuremath { \use:c { #1 } } } } \cs_new:Npn \__chemgreek_ufourier:n #1 { \chemgreek_latex_if:nTF { sloped } { \ensuremath { \use:c { #1 } } } { \ensuremath { \use:c { other #1 } } } } \chemgreek_new_mapping:nn { fourier } { \__chemgreek_lfourier:n {alpha} / \ensuremath{\mathrm{A}} , % 1 \__chemgreek_lfourier:n {beta} / \ensuremath{\mathrm{B}} , % 2 \__chemgreek_lfourier:n {gamma} / \__chemgreek_upper_fourier:n {Gamma} , % 3 \__chemgreek_lfourier:n {delta} / \__chemgreek_upper_fourier:n {Delta} , % 4 \__chemgreek_lfourier:n {epsilon} / \ensuremath{\mathrm{E}} , % 5 \__chemgreek_lfourier:n {zeta} / \ensuremath{\mathrm{Z}} , % 6 \__chemgreek_lfourier:n {eta} / \ensuremath{\mathrm{H}} , % 7 \__chemgreek_lfourier:n {theta} / \__chemgreek_upper_fourier:n {Theta} , % 8 \__chemgreek_lfourier:n {iota} / \ensuremath{\mathrm{I}} , % 9 \__chemgreek_lfourier:n {kappa} / \ensuremath{\mathrm{K}} , % 10 \__chemgreek_lfourier:n {lambda} / \__chemgreek_upper_fourier:n {Lambda} , % 11 \__chemgreek_lfourier:n {mu} / \ensuremath{\mathrm{M}} , % 12 \__chemgreek_lfourier:n {nu} / \ensuremath{\mathrm{N}} , % 13 \__chemgreek_lfourier:n {xi} / \__chemgreek_upper_fourier:n {Xi} , % 14 \ensuremath {\mathrm{o}} / \ensuremath{\mathrm{O}} , % 15 \__chemgreek_lfourier:n {pi} / \__chemgreek_upper_fourier:n {Pi} , % 16 \__chemgreek_lfourier:n {rho} / \ensuremath{\mathrm{R}} , % 17 \__chemgreek_lfourier:n {sigma} / \__chemgreek_upper_fourier:n {Sigma} , % 18 \__chemgreek_lfourier:n {tau} / \ensuremath{\mathrm{T}} , % 19 \__chemgreek_lfourier:n {upsilon} / \__chemgreek_upper_fourier:n {Upsilon} , % 20 \__chemgreek_lfourier:n {phi} / \__chemgreek_upper_fourier:n {Phi} , % 21 \__chemgreek_lfourier:n {psi} / \__chemgreek_upper_fourier:n {Psi} , % 22 \__chemgreek_lfourier:n {chi} / \ensuremath{\mathrm{X}} , % 23 \__chemgreek_lfourier:n {omega} / \__chemgreek_ufourier:n {Omega} % 24 } % activate default mapping \chemgreek_activate_mapping:n { default } \tex_endinput:D HISTORY: 2013/06/26 - v0.1 - first working version to be bundled with chemmacros 2013/07/06 - v0.1a - fixed stupid bug in `upgreek' mapping - added error messages and added \renewchemgreekmapping and \declarechemgreekmapping 2013/08/24 - v0.2 - new mappings `mathdesign', `fourier' - new functions: \chemgreek_int_to_greek:n and \chemgreek_int_to_Greek:n