diff options
author | Karl Berry <karl@freefriends.org> | 2015-07-24 21:29:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-07-24 21:29:48 +0000 |
commit | 919692aec821136bad07dacce78ea692d0fd3251 (patch) | |
tree | ab4834f26a6ad045d90a76b6765cecd1a797b3ef /Master/texmf-dist/tex/latex/mhchem | |
parent | 510f3b755da9b36e409ad6d1503aec005c326433 (diff) |
mhchem (24jul15)
git-svn-id: svn://tug.org/texlive/trunk@37943 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mhchem')
-rw-r--r-- | Master/texmf-dist/tex/latex/mhchem/mhchem.sty | 286 |
1 files changed, 152 insertions, 134 deletions
diff --git a/Master/texmf-dist/tex/latex/mhchem/mhchem.sty b/Master/texmf-dist/tex/latex/mhchem/mhchem.sty index 5d27ecce7ce..f9d1fe25f25 100644 --- a/Master/texmf-dist/tex/latex/mhchem/mhchem.sty +++ b/Master/texmf-dist/tex/latex/mhchem/mhchem.sty @@ -27,7 +27,7 @@ % This work consists of all files listed in manifest.txt. % % -\ProvidesPackage{mhchem}[2015/04/23 v4.01 for typesetting chemical formulae] +\ProvidesPackage{mhchem}[2015/07/23 v4.02 for typesetting chemical formulae] \RequirePackage{expl3} \RequirePackage{l3keys2e} \RequirePackage{l3regex} @@ -55,7 +55,7 @@ \ExplSyntaxOn \cs_generate_variant:Nn \str_if_eq:nnTF { Vn } -\cs_generate_variant:Nn \str_case:nnn { Vnn } +\cs_generate_variant:Nn \str_case:nnF { VnF } \cs_generate_variant:Nn \regex_match:nnTF { nV } \cs_generate_variant:Nn \regex_match:nnTF { no } \cs_new_protected:Npn \__mhchem_regex_peek:nTF #1 #2 #3 @@ -85,7 +85,7 @@ } \cs_new_protected:Npn \__mhchem_loopHelper_appendNextGroup_prefix_ifEmpty:NnnNn #1#2#3#4#5 { - \str_if_eq:nnTF {#5} {} + \tl_if_empty:nTF {#5} { #3 } { \tl_put_right:Nn #1 { #2 { #5 } } } #4 @@ -174,9 +174,9 @@ %%%%%%%%%% %%% /\ %%% -%%%%%%%%%%%%%%%%%%%%%%%%%5%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% \cesplit %%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%5%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ExplSyntaxOn \cs_generate_variant:Nn \regex_replace_all:nnN { VnN } @@ -362,20 +362,22 @@ \int_set:Nn \l__mhchem_ce_distanceFromLastComma_int { 9 } \tl_clear:N \l__mhchem_cf_lastElement_tl \__mhchem_ce_loop: #1 \q_recursion_stop + \__mhchem_output_begin_ce: \int_compare:nTF { \l__mhchem_option_version_int > 1 } { \tl_use:N \l__mhchem_ce_result_tl } { \ensuremath{\tl_use:N \l__mhchem_ce_result_tl} } + \__mhchem_output_end_ce: \mhchem@hook@afterCe \group_end: } \cs_new_protected:Npn \__mhchem_ce_loop: { \int_incr:N \l__mhchem_ce_distanceFromLastComma_int - \str_case:Vnn \l__mhchem_ce_state_tl + \str_case:VnF \l__mhchem_ce_state_tl { { c } { - \str_case:Vnn \l__mhchem_ce_part_tl + \str_case:VnF \l__mhchem_ce_part_tl { { + } { @@ -435,7 +437,7 @@ { \__mhchem_ce_output: }{ - \str_case:Vnn \l__mhchem_ce_state_tl + \str_case:VnF \l__mhchem_ce_state_tl { { c } { @@ -524,7 +526,7 @@ } % else { - \str_case:Vnn \l__mhchem_ce_arrowName_tl + \str_case:VnF \l__mhchem_ce_arrowName_tl { { yieldsLeft } { @@ -739,11 +741,11 @@ \cs_new_protected:Npn \__mhchem_ce_output: { \bool_set_true:N \l__mhchem_ce_potentialSpacingAllowed_bool - \str_case:Vnn \l__mhchem_ce_state_tl + \str_case:VnF \l__mhchem_ce_state_tl { { c } { - \str_case:Vnn \l__mhchem_ce_part_tl + \str_case:VnF \l__mhchem_ce_part_tl { { - } { @@ -757,12 +759,6 @@ { \__mhchem_output_operatorEquals: } \bool_set_false:N \l__mhchem_ce_potentialSpacingAllowed_bool } - { +- } - { - \tl_put_right:Nn \l__mhchem_ce_result_tl - { \__mhchem_output_operatorPlusMinus: } - \bool_set_false:N \l__mhchem_ce_potentialSpacingAllowed_bool - } { $\pm$ } { \tl_put_right:Nn \l__mhchem_ce_result_tl @@ -965,7 +961,7 @@ } \cs_new_protected:Npn \__mhchem_arrow_deploy:nnnnn #1#2#3#4#5 { - \str_case:nnn {#2} + \str_case:nnF {#2} { { } { @@ -1443,25 +1439,23 @@ \cs_new_protected:Npn \__mhchem_cf:nn #1#2 { \group_begin: - \let\sbond\__mhchem_output_sbond: - \int_compare:nTF { 2 = \l__mhchem_option_version_int } - { \let\bond\sbond } + \bool_if:NF \l__mhchem_cf_cfActive_bool { - \int_compare:nT { \l__mhchem_option_version_int > 2 } + \bool_set_true:N \l__mhchem_cf_cfActive_bool + \bool_if:NF \l__mhchem_ce_ceActive_bool + { \__mhchem_output_defMathOrText: } + \int_compare:nTF { \l__mhchem_option_version_int < 3 } + { \cs_set_eq:NN \bond \__mhchem_output_bond_single: } { - \def\bond{\mhchem@bond} + \cs_set_protected:Npn \bond { \mhchem@bond } } - } - \def\dbond{\rlap{\protect\raisebox{.2ex}{\sbond}}\protect\raisebox{-.2ex}{\sbond}} - \def\tbond{\rlap{\protect\raisebox{.4ex}{\sbond}} - \rlap{\sbond}\protect\raisebox{-.4ex}{\sbond}} - \def\hyphen{\mhchem@hyphen} - \bool_if:NF \l__mhchem_ce_ceActive_bool { - \bool_if:NF \l__mhchem_cf_cfActive_bool - { - \bool_set_true:N \l__mhchem_cf_cfActive_bool - \__mhchem_output_defMathOrText: - } + \int_compare:nT { \l__mhchem_option_version_int < 4 } + { + \cs_set_protected:Npn \sbond { \__mhchem_output_bond_single: } + \cs_set_protected:Npn \dbond { \__mhchem_output_bond_double: } + \cs_set_protected:Npn \tbond { \__mhchem_output_bond_triple: } + } + \cs_set_protected:Npn \hyphen {\mhchem@hyphen} } \tl_set:Nn \l__mhchem_cf_state_tl { s } \bool_set_false:N \l__mhchem_cf_startedWithBond_bool @@ -1474,9 +1468,11 @@ \tl_clear:N \l__mhchem_cf_result_tl \__mhchem_cf_loop: #2 \q_recursion_stop } - \str_if_eq:nnTF {#1} {} + \__mhchem_output_begin_cf: + \tl_if_empty:nTF {#1} { \ensuremath{\tl_use:N \l__mhchem_cf_result_tl} } { \ensuremath{\overset{#1}{\tl_use:N \l__mhchem_cf_result_tl}} } + \__mhchem_output_end_cf: \group_end: } \tl_new:N \l__mhchem_cf_loop_tmpa_l @@ -1487,14 +1483,14 @@ { \peek_meaning_remove:NTF \q_recursion_stop { - \str_case:Vnn \l__mhchem_cf_state_tl + \str_case:VnF \l__mhchem_cf_state_tl { { - } { \bool_if:NTF \l__mhchem_cf_startedWithBond_bool { \__mhchem_cf_outputAndReset: - \__mhchem_cf_outputRawElementAndReset:n { \sbond } + \__mhchem_cf_outputRawElementAndReset:n { \__mhchem_output_bond_single: } } { \tl_put_right:Nn \l__mhchem_cf_sup_tl { - } } } @@ -1508,7 +1504,7 @@ { \__mhchem_loopHelper_ignoreNextToken:Nn \__mhchem_cf_loop: }{ \peek_meaning:NTF \protect { \__mhchem_loopHelper_ignoreNextToken:Nn \__mhchem_cf_loop: }{ - \str_case:Vnn \l__mhchem_cf_state_tl + \str_case:VnF \l__mhchem_cf_state_tl { { - } { @@ -1521,7 +1517,8 @@ { \__mhchem_cg_escapeFromMathToTextOrFaketext:n { - } } } { - \__mhchem_cf_outputRawElementAndReset:n { \sbond } + \__mhchem_cf_outputRawElementAndReset:n + { \__mhchem_output_bond_single: } } \tl_set:Nn \l__mhchem_cf_state_tl { s } \__mhchem_cf_loop: @@ -1622,7 +1619,7 @@ { \__mhchem_cf_outputAndReset: \__mhchem_loopHelper_outputAndReset_appendToResult_setState_useNone:nnNn - { \dbond } + { \__mhchem_output_bond_double: } { s } \__mhchem_cf_loop: }{ @@ -1630,7 +1627,7 @@ { \__mhchem_cf_outputAndReset: \__mhchem_loopHelper_outputAndReset_appendToResult_setState_useNone:nnNn - { \tbond } + { \__mhchem_output_bond_triple: } { s } \__mhchem_cf_loop: }{ @@ -1833,14 +1830,14 @@ \peek_charcode:NTF = { \__mhchem_loopHelper_outputAndReset_appendToResult_setState_useNone:nnNn - { \dbond } + { \__mhchem_output_bond_double: } { s } \__mhchem_cf_loop: }{ \peek_charcode:NTF ## { \__mhchem_loopHelper_outputAndReset_appendToResult_setState_useNone:nnNn - { \tbond } + { \__mhchem_output_bond_triple: } { s } \__mhchem_cf_loop: }{ @@ -2179,17 +2176,16 @@ ! \tl_if_empty_p:N \l__mhchem_cf_sub_tl || ! \tl_if_empty_p:N \l__mhchem_cf_sup_tl } - \str_case:Vnn \l__mhchem_cf_state_tl + \str_case:VnF \l__mhchem_cf_state_tl { { 1 } { \__mhchem_cg_replaceForAmount:N \l__mhchem_cf_element_tl \tl_put_right:Nx \l__mhchem_cf_result_tl { - \exp_not:N \__mhchem_output_withFont:n { + \exp_not:N \__mhchem_output_amount:n { \exp_not:V \l__mhchem_cf_element_tl } - \exp_not:N \__mhchem_output_skipAfterAmount: } } { 9 } @@ -2225,10 +2221,10 @@ \bool_if:nT { \str_if_eq_p:Vn \l__mhchem_cf_supState_tl { kv } && - \str_if_eq_p:Vn \l__mhchem_cf_sub_tl {} + \tl_if_empty_p:V \l__mhchem_cf_sub_tl } { \tl_set:Nn \l__mhchem_cf_supState_tl { d } } - \str_case:Vnn \l__mhchem_cf_supState_tl + \str_case:VnF \l__mhchem_cf_supState_tl { { kv } { @@ -2600,7 +2596,7 @@ }{ \peek_charcode_remove:NTF . { - \str_case:Vnn \l__mhchem_cg_replaceForSuperscript_state_tl + \str_case:VnF \l__mhchem_cg_replaceForSuperscript_state_tl { { 9. } { @@ -2654,7 +2650,7 @@ }{ \peek_charcode_remove:NTF , { - \str_case:Vnn \l__mhchem_cg_replaceForSuperscript_state_tl + \str_case:VnF \l__mhchem_cg_replaceForSuperscript_state_tl { { 9. } { @@ -2708,16 +2704,27 @@ \mhchem@option@textFont } } + +\cs_new_protected:Npn \__mhchem_output_begin_ce: {} +\cs_new_protected:Npn \__mhchem_output_end_ce: {} +\cs_new_protected:Npn \__mhchem_output_begin_cf: {} +\cs_new_protected:Npn \__mhchem_output_end_cf: {} + +\cs_new_protected:Npn \__mhchem_output_amount:n #1 + { + \__mhchem_output_withFont:n {#1} + \__mhchem_output_skipAfterAmount: + } \cs_new_protected:Npn \__mhchem_output_coreFive:nnnnnnn #1#2#3#4#5#6#7 { \group_begin: \bool_if:nT - { \str_if_eq_p:nn {#7} {} && ! \str_if_eq_p:nn {#5} {} } + { \tl_if_empty_p:n {#7} && ! \tl_if_empty_p:n {#5} } { \bool_set_true:N \l__mhchem_option_superscriptsStacked_bool } \m@th \ensuremath { - \str_if_eq:nnF {#1#2} {} + \tl_if_empty:nF {#1#2} { \hphantom { {}^{\__mhchem_output_withFont:n{#1}}\c_math_subscript_token{\__mhchem_output_withFont:n{#2}} } { \vphantom { \__mhchem_output_withFont:n { X } } } @@ -2728,7 +2735,7 @@ \__mhchem_output_scriptWithFont:n {#1} } } - \str_if_eq:nnF {#2} {} + \tl_if_empty:nF {#2} { \c_math_subscript_token { \mhchem@mathboxrightt @@ -2740,12 +2747,12 @@ \mhchem@minispace } \__mhchem_output_withFont:n {#3} - \str_if_eq:nnF {#4#5#6#7} {} + \tl_if_empty:nF {#4#5#6#7} { \bool_if:NTF \l__mhchem_option_superscriptsStacked_bool { { \vphantom { \__mhchem_output_withFont:n { X } } } - \str_if_eq:nnF {#6} {} + \tl_if_empty:nF {#6} { \c_math_subscript_token { @@ -2762,7 +2769,7 @@ { \bool_if:NTF \l__mhchem_option_subscriptsDeep_bool { - \str_if_eq:nnF {#4} {} + \tl_if_empty:nF {#4} { { \vphantom { \__mhchem_output_withFont:n { X } } } ^ { @@ -2774,10 +2781,10 @@ \vphantom { \__mhchem_output_scriptWithFont:n { 2 } } } } - \str_if_eq:nnF {#5#6#7} {} + \tl_if_empty:nF {#5#6#7} { { \vphantom { \__mhchem_output_withFont:n { X } } } - \str_if_eq:nnF {#6} {} + \tl_if_empty:nF {#6} { \c_math_subscript_token { @@ -2793,14 +2800,14 @@ } } { - \str_if_eq:nnF {#4} {} + \tl_if_empty:nF {#4} { { \vphantom { \__mhchem_output_withFont:n { X } } } ^ { \__mhchem_output_scriptWithFont:n {#4} } } - \str_if_eq:nnF {#6} {} + \tl_if_empty:nF {#6} { { \vphantom { \__mhchem_output_withFont:n { X } } } \c_math_subscript_token @@ -2809,7 +2816,7 @@ \smash[t] { \__mhchem_output_scriptWithFont:n {#6} } } } - \str_if_eq:nnF {#5#7} {} + \tl_if_empty:nF {#5#7} { { \vphantom { \__mhchem_output_withFont:n { X } } } ^ { @@ -2887,12 +2894,6 @@ { - } { \mhchem@option@textminus } } -\cs_new_protected:Npn \__mhchem_output_plus: - { - \bool_if:NTF \l__mhchem_output_isMathMode_bool - { {}+{} } - { \hspace{0.5ex minus 0.5ex} + \hspace{0.5ex minus 0.5ex} } - } \cs_new_protected:Npn \__mhchem_output_operatorPlus: { \int_compare:nTF { \l__mhchem_option_version_int < 4 } @@ -2964,6 +2965,61 @@ { \__mhchem_output_commaEnumerationSmall: } } +\cs_new_protected:Npn \__mhchem_output_bond_single: + { + \int_compare:nTF { \l__mhchem_option_version_int < 4 } + { {\ensuremath{-}} } + { + \bool_if:NTF \l__mhchem_output_isMathMode_bool + { {\ensuremath{-}} } + { \text{\mhchem@option@textminus} } + } + } +\cs_new_protected:Npn \__mhchem_output_bond_double: + { + \rlap { \protect \raisebox { .2ex }{ \__mhchem_output_bond_single: } } + \protect \raisebox { -.2ex }{ \__mhchem_output_bond_single: } + } +\cs_new_protected:Npn \__mhchem_output_bond_triple: + { + \rlap { \protect \raisebox { .4ex } { \__mhchem_output_bond_single: } } + \rlap{ \__mhchem_output_bond_single: } + \protect \raisebox { -.4ex } { \__mhchem_output_bond_single: } + } +\cs_new_protected:Npn \__mhchem_output_bond_half: + { + \mhchem@setbondwidth + \mhchem@halfbond + } +\cs_new_protected:Npn \__mhchem_output_bond_oneAndHalf: + { + \mhchem@setbondwidth + \rlap{\protect\raisebox{.2ex}{\mhchem@halfbond}} + \protect\raisebox{-.2ex}{\__mhchem_output_bond_single:} + } +\cs_new_protected:Npn \__mhchem_output_bond_twoAndHalf: + { + \mhchem@setbondwidth + \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}} + \rlap{\__mhchem_output_bond_single:} + \protect\raisebox{-.4ex}{\__mhchem_output_bond_single:} + } +\cs_new_protected:Npn \__mhchem_output_bond_twoAndHalff: + { + \mhchem@setbondwidth + \rlap{\protect\raisebox{.4ex}{\__mhchem_output_bond_single:}} + \rlap{\mhchem@halfbond} + \protect\raisebox{-.4ex}{\__mhchem_output_bond_single:} + } +\cs_new_protected:Npn \__mhchem_output_bond_dotdotdot: + { {\cdot}{\cdot}{\cdot} } +\cs_new_protected:Npn \__mhchem_output_bond_dotdotdotdot: + { {\cdot}{\cdot}{\cdot}{\cdot} } +\cs_new_protected:Npn \__mhchem_output_bond_rightArrow: + { {\rightarrow} } +\cs_new_protected:Npn \__mhchem_output_bond_leftArrow: + { {\leftarrow} } + \cs_new_protected:Npn \__mhchem_output_greek:n #1 { \group_begin: @@ -3050,89 +3106,51 @@ \setlength\mhchem@bondtmp@minussidebearingright{\mhchem@option@minustextsidebearingright} } } - \setlength\mhchem@bondwidth{\widthof{\sbond}}% - \setlength\mhchem@bondheight{\heightof{\sbond}}% + \setlength\mhchem@bondwidth{\widthof{\__mhchem_output_bond_single:}}% + \setlength\mhchem@bondheight{\heightof{\__mhchem_output_bond_single:}}% \setlength\mhchem@smallbondwidth@tmpA{% \mhchem@bondwidth-\mhchem@bondtmp@minussidebearingleft-\mhchem@bondtmp@minussidebearingright}% \setlength\mhchem@smallbondwidth@tmpB{% - \widthof{\sbond\sbond\sbond}-\mhchem@bondtmp@minussidebearingleft-% + \widthof{\__mhchem_output_bond_single:\__mhchem_output_bond_single:\__mhchem_output_bond_single:}-\mhchem@bondtmp@minussidebearingleft-% \mhchem@bondtmp@minussidebearingright}% \setlength\mhchem@smallbondwidth{\mhchem@bondwidth*% \ratio{\mhchem@smallbondwidth@tmpA}{\mhchem@smallbondwidth@tmpB}}% } \def\mhchem@halfbond{\rlap{\hspace{\mhchem@bondtmp@minussidebearingleft}% - \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}\unskip% - \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}% - \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}}% - \phantom{\sbond}}% - -\cs_new_protected:Npn \__mhchem_output_sbond: - { - \int_compare:nTF { \l__mhchem_option_version_int < 4 } - { {\ensuremath{-}} } - { - \bool_if:NTF \l__mhchem_output_isMathMode_bool - { {\ensuremath{-}} } - { \text{\mhchem@option@textminus} } - } - } + \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\__mhchem_output_bond_single:}\unskip% + \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\__mhchem_output_bond_single:}% + \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\__mhchem_output_bond_single:}}% + \phantom{\__mhchem_output_bond_single:}}% +\msg_new:nnn { mhchem } { bond / unknown } + { Unknown~bond~type~in~\string\bond~(#1) } \ExplSyntaxOff - \ExplSyntaxOn % with special tilde \char_set_catcode_letter:n { 126 } % tilde - \cs_new_protected:Npn \mhchem@bond #1 { \ensuremath { - \str_case:nnn {#1} - { - { - } { \sbond } - { 1 } { \sbond } - { = } { \dbond } - { 2 } { \dbond } - { ## } { \tbond } - { 3 } { \tbond } - { ~ } - { - \mhchem@setbondwidth - \mhchem@halfbond - } - { ~- } - { - \mhchem@setbondwidth - \rlap{\protect\raisebox{.2ex}{\mhchem@halfbond}} - \protect\raisebox{-.2ex}{\sbond} - } - { ~-- } - { - \mhchem@setbondwidth - \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}} - \rlap{\sbond} - \protect\raisebox{-.4ex}{\sbond} - } - { ~= } - { - \mhchem@setbondwidth - \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}} - \rlap{\sbond} - \protect\raisebox{-.4ex}{\sbond} - } - { -~- } - { - \mhchem@setbondwidth - \rlap{\protect\raisebox{.4ex}{\sbond}} - \rlap{\mhchem@halfbond} - \protect\raisebox{-.4ex}{\sbond} - } - { ... } { {\cdot}{\cdot}{\cdot} } - { .... } { {\cdot}{\cdot}{\cdot}{\cdot} } - { -> } { {\rightarrow} } - { <- } { {\leftarrow} } - } - { - \PackageError{mhchem}{Unknown~bond~type~in~\string\bond~(#1)}% + \str_case:nnF {#1} + { + { - } { \__mhchem_output_bond_single: } + { 1 } { \__mhchem_output_bond_single: } + { = } { \__mhchem_output_bond_double: } + { 2 } { \__mhchem_output_bond_double: } + { ## } { \__mhchem_output_bond_triple: } + { 3 } { \__mhchem_output_bond_triple: } + { ~ } { \__mhchem_output_bond_half: } + { ~- } { \__mhchem_output_bond_oneAndHalf: } + { ~-- } { \__mhchem_output_bond_twoAndHalf: } + { ~= } { \__mhchem_output_bond_twoAndHalf: } + { -~- } { \__mhchem_output_bond_twoAndHalff: } + { ... } { \__mhchem_output_bond_dotdotdot: } + { .... } { \__mhchem_output_bond_dotdotdotdot: } + { -> } { \__mhchem_output_bond_rightArrow: } + { <- } { \__mhchem_output_bond_leftArrow: } + } + { + \msg_error:nnx { mhchem } { bond / unknown } {#1} } } } |