diff options
author | Karl Berry <karl@freefriends.org> | 2012-02-20 23:31:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-02-20 23:31:10 +0000 |
commit | 96948f06651bb4a4bb0174bb28d9d6d443ada4e4 (patch) | |
tree | bc564db764d728bbd08c5726e606e82e95acb5f8 /Master/texmf-dist/tex/latex/chemmacros | |
parent | 1c39817dbba19c5ef1e95912dabb3805085871ac (diff) |
chemmacros (20feb12)
git-svn-id: svn://tug.org/texlive/trunk@25448 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/chemmacros')
4 files changed, 630 insertions, 441 deletions
diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty b/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty index b5e74df2f90..1c7c0f75735 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty @@ -5,7 +5,7 @@ % - macros and commands for chemists - % % --------------------------------------------------------------------------- % % - Clemens Niederberger - % -% - 2012/02/10 - % +% - 2012/02/19 - % % --------------------------------------------------------------------------- % % - https://bitbucket.org/cgnieder/chemmacros/ - % % - contact@mychemistry.eu - % @@ -28,7 +28,11 @@ % - The Current Maintainer of this work is Clemens Niederberger. - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{ expl3 } -\ProvidesExplPackage {chemformula} {2012/02/10} {3.0d} {typeset chemical compounds and reactions} +\ProvidesExplPackage + {chemformula} + {2012/02/19} + {3.1} + {typeset chemical compounds and reactions} %-----------------------------------------------------------------------------% % WARNING AND ERROR MESSAGES @@ -52,6 +56,23 @@ \token_to_str:N \usepackage \{ chemmacros \}. } +\msg_set:nnnn { chemformula } { declare-arrow } + { + The~arrow~type~ \tl_to_str:n { #1 } \c_space_tl is~already~defined. + } + { + You've~tried~to~define~the~arrow~type~\tl_to_str:n { #1 } \c_space_tl with + ~\token_to_str:N \DeclareChemArrow \c_space_tl but~it~already~exists. + ~Choose~another~name. + } + +\msg_set:nnnn { chemformula } { renew-arrow } + { The~arrow~type~ \tl_to_str:n { #1 } \c_space_tl is~not~defined. } + { + You've~tried~to~renew~the~arrow~type~\tl_to_str:n { #1 } ~but~it~doesn't~ + exist. + } + %-----------------------------------------------------------------------------% % test, if we are loaded without the `chemmacros' package \cs_if_exist:cF { ver@chemmacros.sty } @@ -78,7 +99,8 @@ % Some basic internal commands: \cs_new:Nn \chemformula_plus: { - \bool_if:nTF { \l_chemmacros_circled_bool && !\l_chemmacros_circled_formal_bool } + \bool_if:nTF + { \l_chemmacros_circled_bool && !\l_chemmacros_circled_formal_bool } { \bool_if:NTF \l_chemmacros_circled_chem_bool { \chemmacros_fplus: } @@ -93,7 +115,8 @@ \cs_new:Nn \chemformula_minus: { - \bool_if:nTF { \l_chemmacros_circled_bool && !\l_chemmacros_circled_formal_bool } + \bool_if:nTF + { \l_chemmacros_circled_bool && !\l_chemmacros_circled_formal_bool } { \bool_if:NTF \l_chemmacros_circled_chem_bool { \chemmacros_fminus: } @@ -264,267 +287,178 @@ \tl_new:N \l_chemformula_arrow_label_style_tl \tl_set:Nn \l_chemformula_arrow_label_style_tl { \footnotesize } -% <-> -\NewDocumentCommand \chemformula_arrow_mesomeric:w { O{}O{} } +\prop_new:N \l_chemformula_arrows_code_prop +\tl_new:N \l_chemformula_arrow_type_tl +\tl_new:N \l_chemformula_arrow_arg_i_tl +\tl_new:N \l_chemformula_arrow_arg_ii_tl + +% read optional arguments +\cs_new_nopar:Npn \l_chemformula_arrow_read_args:w { - \chemformula_determine_arrow_length:nn { #1 } { #2 } - \chemformula_tikz:nf { inner~sep=0, baseline=(chemformula_arrow_start.base) } - { - \chemformula_draw:xn - { \l_chemformula_arrow_head_tl-\l_chemformula_arrow_head_tl , \l_chemformula_arrow_style_tl } - { - coordinate (chemformula_arrow_start) (0,0) - ++ (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) - node - [ - pos=.5, - above=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #1 } - node - [ - pos=.5, - below=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #2 } - } - \chemformula_draw:nn {} - { - (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) ++ - ( \l_chemformula_compound_sep_dim + \dim_use:N \l_chemformula_arrow_length_dim , 0) - } - } + \peek_meaning:NTF [ + { \l_chemformula_arrow_read_args_aux_i:w } + { \l_chemformula_arrow_read_args_aux_iii: } } -% -> -\NewDocumentCommand \chemformula_arrow_right:w { O{}O{} } +\cs_new_nopar:Npn \l_chemformula_arrow_read_args_aux_i:w [#1] { - \chemformula_determine_arrow_length:nn { #1 } { #2 } - \chemformula_tikz:nn { inner~sep=0, baseline=(chemformula_arrow_start.base) } - { - \chemformula_draw:xn { -\l_chemformula_arrow_head_tl , \l_chemformula_arrow_style_tl } - { - coordinate (chemformula_arrow_start) (0,0) - ++ (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) - node - [ - pos=.5, - above=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #1 } - node - [ - pos=.5, - below=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #2 } - } - \chemformula_draw:nn {} - { - (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) ++ - ( \l_chemformula_compound_sep_dim + \dim_use:N \l_chemformula_arrow_length_dim , 0) - } - } + \tl_set:Nn \l_chemformula_arrow_arg_i_tl { #1 } + \peek_meaning:NTF [ + { \l_chemformula_arrow_read_args_aux_ii:w } + { \l_chemformula_arrow_read_args_aux_iii: } } -% <- -\NewDocumentCommand \chemformula_arrow_left:w { O{}O{} } +\cs_new_nopar:Npn \l_chemformula_arrow_read_args_aux_ii:w [#1] { - \chemformula_determine_arrow_length:nn { #1 } { #2 } - \chemformula_tikz:nn { inner~sep=0, baseline=(chemformula_arrow_start.base) } - { - \chemformula_draw:xn { \l_chemformula_arrow_head_tl- , \l_chemformula_arrow_style_tl } - { - coordinate (chemformula_arrow_start) (0,0) - ++ (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) - node - [ - pos=.5, - above=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #1 } - node - [ - pos=.5, - below=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #2 } - } - \chemformula_draw:nn {} - { - (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim)++ - ( \l_chemformula_compound_sep_dim + \dim_use:N \l_chemformula_arrow_length_dim , 0) - } - } + \tl_set:Nn \l_chemformula_arrow_arg_ii_tl { #1 } + \l_chemformula_arrow_read_args_aux_iii: } -% <=> -\NewDocumentCommand \chemformula_arrow_equilibrium:w { O{}O{} } +\cs_new_nopar:Npn \l_chemformula_arrow_read_args_aux_iii: { - \chemformula_determine_arrow_length:nn { #1 } { #2 } - \chemformula_tikz:nn { inner~sep=0, baseline=(chemformula_arrow_start.base) } - { - \chemformula_draw:xn { -left~\l_chemformula_arrow_head_tl , \l_chemformula_arrow_style_tl } - { - coordinate (chemformula_arrow_start) (0,0) - ++ (\l_chemformula_compound_sep_dim,.429em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) - node - [ - pos=.5, - above=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #1 } - } - \chemformula_draw:xn { left~\l_chemformula_arrow_head_tl- , \l_chemformula_arrow_style_tl } - { - (chemformula_arrow_start) ++ - (\l_chemformula_compound_sep_dim,.2574em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) - node - [ - pos=.5, - below=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #2 } - } - \chemformula_draw:nn {} - { - (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) ++ - ( \l_chemformula_compound_sep_dim + \dim_use:N \l_chemformula_arrow_length_dim , 0) - } - } + % now we have both arguments do the actual drawing: + \prop_get:NVN \l_chemformula_arrows_code_prop + \l_chemformula_arrow_type_tl + \l_tmpb_tl + \chemformula_arrow_draw:V \l_tmpb_tl } -% <=>> -\NewDocumentCommand \chemformula_arrow_equilibrium_right:w { O{}O{} } +% get arrows (for the use in \ch to replace the symbol) +% #1: symbol +\cs_new_nopar:Npn \chemformula_arrows_get:n #1 { - \chemformula_determine_arrow_length:nn { #1 } { #2 } - \chemformula_tikz:nn { inner~sep=0, baseline=(chemformula_arrow_start.base) } - { - \chemformula_draw:xn { -left~\l_chemformula_arrow_head_tl , \l_chemformula_arrow_style_tl } - { - coordinate (chemformula_arrow_start) (0,0) - ++ (\l_chemformula_compound_sep_dim,.429em) ++ (0,\dim_use:N \l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) - node - [ - pos=.5, - above=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #1 } - } - \chemformula_draw:xn { left~\l_chemformula_arrow_head_tl- , \l_chemformula_arrow_style_tl } - { - (chemformula_arrow_start) ++ - (\l_chemformula_compound_sep_dim + \l_chemformula_arrow_shortage_dim,.2574em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim -2*\l_chemformula_arrow_shortage_dim , 0) - node - [ - pos=.5, - below=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #2 } - } - \chemformula_draw:nn {} - { - (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) ++ - ( \l_chemformula_compound_sep_dim + \dim_use:N \l_chemformula_arrow_length_dim , 0) - } - } + % first clear the arguments + \tl_clear:N \l_chemformula_arrow_arg_i_tl + \tl_clear:N \l_chemformula_arrow_arg_ii_tl + % then get the arrow type + \tl_set:Nn \l_chemformula_arrow_type_tl { #1 } + \l_chemformula_arrow_read_args:w } -% <<=> -\NewDocumentCommand \chemformula_arrow_equilibrium_left:w { O{}O{} } +% draw the arrows +\cs_new_nopar:Npn \chemformula_arrow_draw:n #1 { - \chemformula_determine_arrow_length:nn { #1 } { #2 } - \chemformula_tikz:nn { inner~sep=0, baseline=(chemformula_arrow_start.base) } + % prepare arrow code for drawing: + % TODO: flexible Pfeilspitzen, TikZ-Keys ermöglichen + \tl_set_rescan:Nnn \l_tmpc_tl { \char_set_catcode_letter:N \_ } { #1 } + % determine length of the arrow + \chemformula_determine_arrow_length:oo + { \l_chemformula_arrow_arg_i_tl } + { \l_chemformula_arrow_arg_ii_tl } + \chemformula_tikz:nf + { inner~sep=0, baseline=(chemformula_arrow_start.base) } { - \chemformula_draw:xn { -left~\l_chemformula_arrow_head_tl , \l_chemformula_arrow_style_tl } + % the coordinates + \chemformula_draw:xn + { \l_chemformula_arrow_style_tl } { coordinate (chemformula_arrow_start) (0,0) - ++ (\l_chemformula_compound_sep_dim + \l_chemformula_arrow_shortage_dim,.429em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim - 2*\l_chemformula_arrow_shortage_dim , 0) + ++ (\l_chemformula_compound_sep_dim,.3432em) + ++ (0,\l_chemformula_arrow_yshift_dim) + coordinate (cf_arrow_start) + ++ ( .5 * \dim_use:N \l_chemformula_arrow_length_dim , 0) + coordinate (cf_arrow_mid) + ++ ( .5 * \dim_use:N \l_chemformula_arrow_length_dim , 0) + coordinate (cf_arrow_end) + ++ (\l_chemformula_compound_sep_dim,0) + (cf_arrow_start) ++ (\l_chemformula_arrow_shortage_dim,0) + coordinate (cf_arrow_mid_start) + (cf_arrow_end) ++ (-\l_chemformula_arrow_shortage_dim , 0) + coordinate (cf_arrow_mid_end) + } + % the arrow labels: + \draw node [ - pos=.5, above=\l_chemformula_arrow_label_offset_dim, font=\l_chemformula_arrow_label_style_tl, butt~cap-butt~cap - ] { #1 } - } - \chemformula_draw:xn { left~\l_chemformula_arrow_head_tl- , \l_chemformula_arrow_style_tl } - { - (chemformula_arrow_start) ++ (\l_chemformula_compound_sep_dim,.2574em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) + ] at (cf_arrow_mid) { \l_chemformula_arrow_arg_i_tl } node [ - pos=.5, below=\l_chemformula_arrow_label_offset_dim, font=\l_chemformula_arrow_label_style_tl, butt~cap-butt~cap - ] { #2 } - } - \chemformula_draw:nn {} - { - (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) ++ - ( \l_chemformula_compound_sep_dim + \dim_use:N \l_chemformula_arrow_length_dim , 0) - } + ] at (cf_arrow_mid) { \l_chemformula_arrow_arg_ii_tl } + ; + \tl_use:N \l_tmpc_tl } } +\cs_generate_variant:Nn \chemformula_arrow_draw:n { V } +\cs_generate_variant:Nn \chemformula_determine_arrow_length:nn { oo } -% <> -\NewDocumentCommand \chemformula_arrow_both:w { O{}O{} } +% commands to declare arrows (can also be used by users): +% #1: symbol, #2: code +\NewDocumentCommand \DeclareChemArrow { mm } { - \chemformula_determine_arrow_length:nn { #1 } { #2 } - \chemformula_tikz:nn { inner~sep=0, baseline=(chemformula_arrow_start.base) } - { - \chemformula_draw:xn { -\l_chemformula_arrow_head_tl , \l_chemformula_arrow_style_tl } - { - coordinate (chemformula_arrow_start) (0,0) - ++ (\l_chemformula_compound_sep_dim,.441em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) - node - [ - pos=.5, - above=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #1 } - } - \chemformula_draw:xn { \l_chemformula_arrow_head_tl- , \l_chemformula_arrow_style_tl } - { - (chemformula_arrow_start) ++ - (\l_chemformula_compound_sep_dim,.2454em) ++ (0,\l_chemformula_arrow_yshift_dim) -- ++ - ( \dim_use:N \l_chemformula_arrow_length_dim , 0) - node - [ - pos=.5, - below=\l_chemformula_arrow_label_offset_dim, - font=\l_chemformula_arrow_label_style_tl, - butt~cap-butt~cap - ] { #2 } - } - \chemformula_draw:nn {} - { - (\l_chemformula_compound_sep_dim,.3432em) ++ (0,\l_chemformula_arrow_yshift_dim) ++ - ( \l_chemformula_compound_sep_dim + \dim_use:N \l_chemformula_arrow_length_dim , 0) - } - } + \prop_if_in:NnTF \l_chemformula_arrows_code_prop { #1 } + { \chemmacros_msg:nnxx { chemformula } { declare-arrow } { #1 } {} } + { \prop_put:Nnn \l_chemformula_arrows_code_prop { #1 } { #2 } } } + +\NewDocumentCommand \RenewChemArrow { mm } + { + \prop_if_in:NnTF \l_chemformula_arrows_code_prop { #1 } + { \prop_put:Nnn \l_chemformula_arrows_code_prop { #1 } { #2 } } + { \chemmacros_msg:nnxx { chemformula } { renew-arrow } { #1 } {} } + } + +\NewDocumentCommand \ShowChemArrow { m } + { + \prop_get:NnN \l_chemformula_arrows_code_prop { #1 } \l_tmpa_tl + \tl_to_str:N \l_tmpa_tl + } + +% declare arrows: +\DeclareChemArrow { <-> } { \draw[cf-cf] (cf_arrow_start) -- (cf_arrow_end) ; } +\DeclareChemArrow { -> } { \draw[-cf] (cf_arrow_start) -- (cf_arrow_end) ; } +\DeclareChemArrow { <- } { \draw[cf-] (cf_arrow_start) -- (cf_arrow_end) ; } +\DeclareChemArrow { <> } + { + \draw[-cf] ([yshift=.2ex]cf_arrow_start) -- ([yshift=.2ex]cf_arrow_end) ; + \draw[cf-,] ([yshift=-.2ex]cf_arrow_start) -- ([yshift=-.2ex]cf_arrow_end) ; + } +\DeclareChemArrow { <o> } + { + \draw[cf-cf] (cf_arrow_start) -- (cf_arrow_end) ; + \draw + (cf_arrow_mid) .. controls ++(-.9ex,-1.5ex) and + ++(.9ex,-1.5ex) .. (cf_arrow_mid) ; + } +\DeclareChemArrow { <=>> } + { + \draw[-left~cf] + ([yshift=.15ex]cf_arrow_start) -- ([yshift=.15ex]cf_arrow_end) ; + \draw[left~cf-] + ([yshift=-.15ex]cf_arrow_mid_start) -- ([yshift=-.15ex]cf_arrow_mid_end) ; + } +\DeclareChemArrow {<<=>} + { + \draw[-left~cf] + ([yshift=.15ex]cf_arrow_mid_start) -- ([yshift=.15ex]cf_arrow_mid_end) ; + \draw[left~cf-] + ([yshift=-.15ex]cf_arrow_start) -- ([yshift=-.15ex]cf_arrow_end) ; + } +\DeclareChemArrow { <=> } + { + \draw[-left~cf] + ([yshift=.15ex]cf_arrow_start) -- ([yshift=.15ex]cf_arrow_end) ; + \draw[left~cf-] + ([yshift=-.15ex]cf_arrow_start) -- ([yshift=-.15ex]cf_arrow_end) ; + } +\DeclareChemArrow { -/> } + { + \draw[-cf] (cf_arrow_start) -- (cf_arrow_end) ; + \draw (cf_arrow_mid) ++ (.2ex,.4ex) -- ++(-.4ex,-.8ex) ; + \draw (cf_arrow_mid) ++ (-.2ex,.4ex) -- ++(-.4ex,-.8ex) ; + } +\DeclareChemArrow { </- } + { + \draw[cf-] (cf_arrow_start) -- (cf_arrow_end) ; + \draw (cf_arrow_mid) ++ (.2ex,.4ex) -- ++(-.4ex,-.8ex) ; + \draw (cf_arrow_mid) ++ (.6ex,.4ex) -- ++(-.4ex,-.8ex) ; + } + %-----------------------------------------------------------------------------% % arrow customization \keys_define:nn { chemmacros / chemformula } @@ -534,7 +468,7 @@ arrow-ratio .tl_set:N = \l_chemformula_arrow_ratio_tl , label-offset .dim_set:N = \l_chemformula_arrow_label_offset_dim , compound-sep .dim_set:N = \l_chemformula_compound_sep_dim , - arrow-tips .tl_set:N = \l_chemformula_arrow_head_tl , +% arrow-tips .tl_set:N = \l_chemformula_arrow_head_tl , arrow-style .tl_set:N = \l_chemformula_arrow_style_tl , label-style .tl_set:N = \l_chemformula_arrow_label_style_tl } @@ -544,9 +478,15 @@ \NewDocumentCommand \chemformula_ch_aux_iii:w { > { \SplitList { ~ } } m } { \group_begin: + \cs_set_eq:NN \xspace \scan_stop: + \cs_set_nopar:Npn \[ { [ } + \cs_set_nopar:Npn \] { ] } \bool_set_true:N \l_chemformula_inside_ch_bool \tl_if_blank:oF { \g_chemformula_options_tl } - { \keys_set:no { chemmacros / chemformula } { \g_chemformula_options_tl } } + { + \keys_set:no { chemmacros / chemformula } + { \g_chemformula_options_tl } + } \tl_map_function:nN { #1 } \chemformula_input:n \chemformula_generate_arrows:N \l_chemformula_input_tl \chemformula_generate_name:N \l_chemformula_output_tl @@ -560,7 +500,6 @@ \cs_new:Nn \chemformula_ch:nn { \group_align_safe_begin: - \cs_set:Npn \xspace {} \leavevmode \IfNoValueTF { #1 } { \tl_gclear:N \g_chemformula_options_tl } @@ -583,7 +522,8 @@ \cs_new:Npn \chemformula_ch_aux_ii:w #1 & #2 \q_stop { - \tl_gput_right:Nn \g_chemformula_output_tl { \chemformula_ch_aux_iii:w { #1 } } + \tl_gput_right:Nn \g_chemformula_output_tl + { \chemformula_ch_aux_iii:w { #1 } } \quark_if_no_value:nF { #2 } { \tl_gput_right:Nn \g_chemformula_output_tl { & } @@ -610,43 +550,49 @@ %-----------------------------------------------------------------------------% % arrow generation & detection -\cs_new:Npn \chemformula_generate_arrows:n #1 +% make sure to look for <->, <=>> and <<=> first! +\cs_set:Npn \chemformula_generate_arrows:n #1 { \tl_set:No \l_tmpa_tl { #1 } - \tl_if_in:onT { \l_tmpa_tl } { <-> } - { \tl_replace_all:Nnn \l_tmpa_tl { <-> } { \chemformula_arrow_mesomeric:w } } - \tl_if_in:onT { \l_tmpa_tl } { -> } - { \tl_replace_all:Nnn \l_tmpa_tl { -> } { \chemformula_arrow_right:w } } - \tl_if_in:onT { \l_tmpa_tl } { <- } - { \tl_replace_all:Nnn \l_tmpa_tl { <- } { \chemformula_arrow_left:w } } - \tl_if_in:onT { \l_tmpa_tl } { glgw_l } - { \tl_replace_all:Nnn \l_tmpa_tl { glgw_l } { \chemformula_arrow_equilibrium_left:w } } - \tl_if_in:onT { \l_tmpa_tl } { <=>> } - { \tl_replace_all:Nnn \l_tmpa_tl { <=>> } { \chemformula_arrow_equilibrium_right:w } } - \tl_if_in:onT { \l_tmpa_tl } { <=> } - { \tl_replace_all:Nnn \l_tmpa_tl { <=> } { \chemformula_arrow_equilibrium:w } } - \tl_if_in:onT { \l_tmpa_tl } { <> } - { \tl_replace_all:Nnn \l_tmpa_tl { <> } { \chemformula_arrow_both:w } } + \tl_replace_all:Nnn \l_tmpa_tl { <-> } + { \chemformula_arrows_get:n { <-> } } + \tl_replace_all:Nnn \l_tmpa_tl { <=>> } + { \chemformula_arrows_get:n { <=>> } } + \tl_replace_all:Nnn \l_tmpa_tl { <<=> } + { \chemformula_arrows_get:n { <<=> } } + \prop_map_function:NN \l_chemformula_arrows_code_prop + \chemformula_replace_arrows:nn \tl_set_eq:NN \l_chemformula_output_tl \l_tmpa_tl } + +\bool_new:N \l_chemformula_arrow_already_replaced_bool +\cs_new:Npn \chemformula_replace_arrows:nn #1#2 + { + \tl_if_eq:nnT { #1 } { <-> } + { \bool_set_true:N \l_chemformula_arrow_already_replaced_bool } + \tl_if_eq:nnT { #1 } { <=>> } + { \bool_set_true:N \l_chemformula_arrow_already_replaced_bool } + \tl_if_eq:nnT { #1 } { <<=> } + { \bool_set_true:N \l_chemformula_arrow_already_replaced_bool } + \bool_if:NF \l_chemformula_arrow_already_replaced_bool + { + \tl_set_rescan:Nnn \l_tmpb_tl {} { #1 } + \exp_args:NNo \tl_replace_all:Nnn \l_tmpa_tl + { \l_tmpb_tl } { \chemformula_arrows_get:n { #1 } } + } + \bool_set_false:N \l_chemformula_arrow_already_replaced_bool + } \cs_generate_variant:Nn \chemformula_generate_arrows:n { N } \cs_new:Npn \chemformula_detect_arrows:n #1 { \bool_set_false:N \l_chemformula_is_arrow_bool - \tl_set:No \l_tmpa_tl { #1 } - \tl_if_in:onT { \l_tmpa_tl } { <-> } - { \bool_set_true:N \l_chemformula_is_arrow_bool } - \tl_if_in:onT { \l_tmpa_tl } { -> } - { \bool_set_true:N \l_chemformula_is_arrow_bool } - \tl_if_in:onT { \l_tmpa_tl } { <- } - { \bool_set_true:N \l_chemformula_is_arrow_bool } - \tl_if_in:onT { \l_tmpa_tl } { <=>> } - { \bool_set_true:N \l_chemformula_is_arrow_bool } - \tl_if_in:onT { \l_tmpa_tl } { glgw_l } - { \bool_set_true:N \l_chemformula_is_arrow_bool } - \tl_if_in:onT { \l_tmpa_tl } { <=> } - { \bool_set_true:N \l_chemformula_is_arrow_bool } + \prop_map_inline:Nn \l_chemformula_arrows_code_prop + { + \tl_set_rescan:Nnn \l_tmpa_tl {} { ##1 } + \tl_if_in:noT { #1 } { \l_tmpa_tl } + { \bool_set_true:N \l_chemformula_is_arrow_bool } + } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -654,7 +600,7 @@ \dim_new:N \l_chemformula_name_dim \cs_new:Npn \chemformula_name_cmpd:w - { \peek_meaning:NTF { ( } { \chemformula_name_cmpd_aux:w } { ! } } + { \peek_meaning:NTF ( { \chemformula_name_cmpd_aux:w } { ! } } \cs_new:Npn \chemformula_name_cmpd_aux:w (#1)(#2) { @@ -816,16 +762,26 @@ % behaviour in a charge \prop_new:N \l_chemformula_charge_prop -\prop_put:Nnn \l_chemformula_charge_prop { 0 } { \chemformula_charge_style:n { 0 } } -\prop_put:Nnn \l_chemformula_charge_prop { 1 } { \chemformula_charge_style:n { 1 } } -\prop_put:Nnn \l_chemformula_charge_prop { 2 } { \chemformula_charge_style:n { 2 } } -\prop_put:Nnn \l_chemformula_charge_prop { 3 } { \chemformula_charge_style:n { 3 } } -\prop_put:Nnn \l_chemformula_charge_prop { 4 } { \chemformula_charge_style:n { 4 } } -\prop_put:Nnn \l_chemformula_charge_prop { 5 } { \chemformula_charge_style:n { 5 } } -\prop_put:Nnn \l_chemformula_charge_prop { 6 } { \chemformula_charge_style:n { 6 } } -\prop_put:Nnn \l_chemformula_charge_prop { 7 } { \chemformula_charge_style:n { 7 } } -\prop_put:Nnn \l_chemformula_charge_prop { 8 } { \chemformula_charge_style:n { 8 } } -\prop_put:Nnn \l_chemformula_charge_prop { 9 } { \chemformula_charge_style:n { 9 } } +\prop_put:Nnn \l_chemformula_charge_prop { 0 } + { \chemformula_charge_style:n { 0 } } +\prop_put:Nnn \l_chemformula_charge_prop { 1 } + { \chemformula_charge_style:n { 1 } } +\prop_put:Nnn \l_chemformula_charge_prop { 2 } + { \chemformula_charge_style:n { 2 } } +\prop_put:Nnn \l_chemformula_charge_prop { 3 } + { \chemformula_charge_style:n { 3 } } +\prop_put:Nnn \l_chemformula_charge_prop { 4 } + { \chemformula_charge_style:n { 4 } } +\prop_put:Nnn \l_chemformula_charge_prop { 5 } + { \chemformula_charge_style:n { 5 } } +\prop_put:Nnn \l_chemformula_charge_prop { 6 } + { \chemformula_charge_style:n { 6 } } +\prop_put:Nnn \l_chemformula_charge_prop { 7 } + { \chemformula_charge_style:n { 7 } } +\prop_put:Nnn \l_chemformula_charge_prop { 8 } + { \chemformula_charge_style:n { 8 } } +\prop_put:Nnn \l_chemformula_charge_prop { 9 } + { \chemformula_charge_style:n { 9 } } \prop_put:Nnn \l_chemformula_charge_prop { + } { \chemformula_plus: } \prop_put:Nnn \l_chemformula_charge_prop { - } { \chemformula_minus: } \prop_put:Nnn \l_chemformula_charge_prop { . } { \chemformula_radical: } @@ -842,8 +798,10 @@ \prop_put:Nnn \l_chemformula_stoich_prop { 7 } { 7 } \prop_put:Nnn \l_chemformula_stoich_prop { 8 } { 8 } \prop_put:Nnn \l_chemformula_stoich_prop { 9 } { 9 } -\prop_put:Nnn \l_chemformula_stoich_prop { . } { { \l_chemformula_decimal_output_tl } } -\prop_put:Nnn \l_chemformula_stoich_prop { , } { { \l_chemformula_decimal_output_tl } } +\prop_put:Nnn \l_chemformula_stoich_prop { . } + { { \l_chemformula_decimal_output_tl } } +\prop_put:Nnn \l_chemformula_stoich_prop { , } + { { \l_chemformula_decimal_output_tl } } \prop_put:Nnn \l_chemformula_stoich_prop { / } { / } \prop_put:Nnn \l_chemformula_stoich_prop { _ } { _ } @@ -868,9 +826,14 @@ { \chemformula_tikz:nn { inner~sep=0, outer~sep=0 } { - \draw node[draw=none,minimum~height=1em,minimum~width=0] (chemformula-double-bond) at (0,0) {} ; - \draw[butt~cap-butt~cap] (chemformula-double-bond) ++ (0,-.0858em) -- ++( \l_chemformula_bond_dim ,0) ; - \draw[butt~cap-butt~cap] (chemformula-double-bond) ++ (0,-.2574em) -- ++( \l_chemformula_bond_dim ,0) ; + \draw node[draw=none,minimum~height=1em,minimum~width=0] + (chemformula-double-bond) at (0,0) {} ; + \draw[butt~cap-butt~cap] + (chemformula-double-bond) ++ (0,-.0858em) -- ++ + (\l_chemformula_bond_dim ,0) ; + \draw[butt~cap-butt~cap] + (chemformula-double-bond) ++ (0,-.2574em) -- ++ + (\l_chemformula_bond_dim ,0) ; } } @@ -878,10 +841,17 @@ { \chemformula_tikz:nn { inner~sep=0, outer~sep=0 } { - \draw node[draw=none,minimum~height=1em,minimum~width=0] (chemformula-triple-bond) at (0,0) {} ; - \draw[butt~cap-butt~cap] (chemformula-triple-bond) ++ (0,-.0429em) -- ++( \l_chemformula_bond_dim ,0) ; - \draw[butt~cap-butt~cap] (chemformula-triple-bond) ++ (0,-.1716em) -- ++( \l_chemformula_bond_dim ,0) ; - \draw[butt~cap-butt~cap](chemformula-triple-bond) ++ (0,-.3003em) -- ++( \l_chemformula_bond_dim ,0) ; + \draw node[draw=none,minimum~height=1em,minimum~width=0] + (chemformula-triple-bond) at (0,0) {} ; + \draw[butt~cap-butt~cap] + (chemformula-triple-bond) ++ (0,-.0429em) -- ++ + (\l_chemformula_bond_dim ,0) ; + \draw[butt~cap-butt~cap] + (chemformula-triple-bond) ++ (0,-.1716em) -- ++ + (\l_chemformula_bond_dim ,0) ; + \draw[butt~cap-butt~cap] + (chemformula-triple-bond) ++ (0,-.3003em) -- ++ + (\l_chemformula_bond_dim ,0) ; } } @@ -906,8 +876,10 @@ \bool_set_true:N \l_chemformula_sub_bool % clean up wrong input \tl_set:Nn \l_tmpc_tl { #1 } - \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_single_bond: } { \chemformula_minus: } - \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_triple_bond: } {\chemformula_plus: } + \tl_replace_all:Nnn \l_tmpc_tl + { \chemformula_single_bond: } { \chemformula_minus: } + \tl_replace_all:Nnn \l_tmpc_tl + { \chemformula_triple_bond: } {\chemformula_plus: } \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_adduct: } { . } \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_star_adduct: } { * } % measure width and save it @@ -924,8 +896,14 @@ } \dim_set:Nn \l_chemformula_subscript_dim { -\box_wd:N \l_tmpa_box } \prop_get:NnNTF \l_chemformula_charge_prop { #1 } \l_tmpa_tl - { \exp_args:NNo \hbox_set:Nn \l_tmpb_box { $ ^ { \chemformula_charge_style:n { \l_tmpa_tl } } $ } } - { \exp_args:NNo \hbox_set:Nn \l_tmpb_box { $ ^ { \chemformula_charge_style:n { \l_tmpc_tl } } $ } } + { + \exp_args:NNo \hbox_set:Nn \l_tmpb_box + { $ ^ { \chemformula_charge_style:n { \l_tmpa_tl } } $ } + } + { + \exp_args:NNo \hbox_set:Nn \l_tmpb_box + { $ ^ { \chemformula_charge_style:n { \l_tmpc_tl } } $ } + } \dim_set:Nn \l_chemformula_subscript_compare_dim { -\box_wd:N \l_tmpb_box } \box_clear:N \l_tmpa_box \box_clear:N \l_tmpb_box @@ -966,17 +944,26 @@ \bool_set_true:N \l_chemformula_sup_bool % clean up wrong input \tl_set:Nn \l_tmpc_tl { #1 } - \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_single_bond: } { \chemformula_minus: } + \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_single_bond: } + { \chemformula_minus: } \tl_replace_all:Nnn \l_tmpc_tl { - } { \chemformula_minus: } - \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_triple_bond: } { \chemformula_plus: } + \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_triple_bond: } + { \chemformula_plus: } \tl_replace_all:Nnn \l_tmpc_tl { + } { \chemformula_plus: } - \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_adduct: } { \chemformula_radical: } + \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_adduct: } + { \chemformula_radical: } \tl_replace_all:Nnn \l_tmpc_tl { \chemformula_star_adduct: } { * } \tl_replace_all:Nnn \l_tmpc_tl { . } { \chemformula_radical: } % measure width and save it \prop_get:NnNTF \l_chemformula_charge_prop { #1 } \l_tmpa_tl - { \exp_args:NNo \hbox_set:Nn \l_tmpa_box { $ ^ { \chemformula_charge_style:n { \l_tmpa_tl } } $ } } - { \exp_args:NNo \hbox_set:Nn \l_tmpa_box { $ ^ { \chemformula_charge_style:n { \l_tmpc_tl } } $ } } + { + \exp_args:NNo \hbox_set:Nn \l_tmpa_box + { $ ^ { \chemformula_charge_style:n { \l_tmpa_tl } } $ } + } + { + \exp_args:NNo \hbox_set:Nn \l_tmpa_box + { $ ^ { \chemformula_charge_style:n { \l_tmpc_tl } } $ } + } \dim_set:Nn \l_chemformula_supscript_dim { -\box_wd:N \l_tmpa_box } \box_clear:N \l_tmpa_box @@ -1089,7 +1076,6 @@ { \tl_set_rescan:Nnn \l_chemformula_tmpa_tl { -% \char_set_catcode_letter:N \_ \char_set_catcode_letter:N \{ \char_set_catcode_letter:N \} \char_set_catcode_letter:N \\ @@ -1099,12 +1085,10 @@ \chemformula_input_escape_text:o { \l_chemformula_tmpa_tl } \chemformula_input_escape_math:n { #1 } \chemformula_input_stoich:n { #1 } - % need to take care of <<=> arrow - \tl_if_in:onT { \l_chemformula_tmpa_tl } { <<=> } - { \tl_replace_all:Nnn \l_chemformula_tmpa_tl { <<=> } { glgw_l } } \chemformula_clean_chem_macros:o { \l_chemformula_tmpa_tl } - \chemformula_input_cmpd:oN { \l_chemformula_tmpa_tl } \l_chemformula_input_tl - \chemformula_input_arrow:o { \l_chemformula_tmpa_tl } + \chemformula_input_cmpd:oN + { \l_chemformula_tmpa_tl } \l_chemformula_input_tl + \chemformula_input_arrow:n { #1 } \chemformula_input_name:n { #1 } \chemformula_input_plus:n { #1 } \chemformula_input_up:n { #1 } @@ -1133,7 +1117,8 @@ \tl_set_rescan:Nno \l_chemformula_stoich_tl { \ExplSyntaxOn } { \l_chemformula_stoich_tl } - \exp_args:No \chemformula_parse_stoich:n { \l_chemformula_stoich_tl } + \exp_args:No \chemformula_parse_stoich:n + { \l_chemformula_stoich_tl } } } { \tl_clear:N \l_chemformula_stoich_tl } @@ -1159,7 +1144,10 @@ } \cs_new:Npn \chemformula_parse_stoich_frac:w #1/#2 \q_nil - { \tl_put_right:Nn \l_chemformula_input_tl { \chemformula_frac:nn { #1 } { #2 } } } + { + \tl_put_right:Nn \l_chemformula_input_tl + { \chemformula_frac:nn { #1 } { #2 } } + } \cs_new:Npn \chemformula_parse_stoich_misc_frac:w #1_#2/#3 \q_nil { @@ -1218,7 +1206,8 @@ } } { - \tl_put_right:Nn #2 { \skip_horizontal:N \l_chemformula_stoich_space_dim } + \tl_put_right:Nn #2 + { \skip_horizontal:N \l_chemformula_stoich_space_dim } \tl_clear:N \l_chemformula_stoich_tl } } @@ -1269,14 +1258,21 @@ \exp_args:Nx \tl_if_in:nnT { \tl_head:V \l_tmpa_tl } { ^ } { \bool_set_true:N \l_chemformula_first_is_sup_bool } \tl_if_in:VnT \l_tmpa_tl { ^ } - { \tl_replace_all:Nnn \l_tmpa_tl { ^ } { \chemformula_chief_supscript:n } } + { + \tl_replace_all:Nnn \l_tmpa_tl { ^ } + { \chemformula_chief_supscript:n } + } \tl_if_in:VnT \l_tmpa_tl { _ } - { \tl_replace_all:Nnn \l_tmpa_tl { _ } { \chemformula_chief_subscript:n } } + { + \tl_replace_all:Nnn \l_tmpa_tl { _ } + { \chemformula_chief_subscript:n } + } \int_zero:N \l_chemformula_count_tokens_int \tl_map_inline:Nn \l_tmpa_tl { \int_incr:N \l_chemformula_count_tokens_int - \int_compare:nTF { \l_chemformula_count_tokens_int = \tl_length:N \l_tmpa_tl } + \int_compare:nTF + { \l_chemformula_count_tokens_int = \tl_length:N \l_tmpa_tl } { \tl_if_eq:nnTF { ##1 } { + } { @@ -1528,7 +1524,10 @@ { \dim_set:Nn \l_chemformula_subscript_shift_additional_dim { #1 } \dim_set:Nn \l_chemformula_subscript_shift_dim - { \l_chemformula_subscript_shift_default_dim + \l_chemformula_subscript_shift_additional_dim } + { + \l_chemformula_subscript_shift_default_dim + + \l_chemformula_subscript_shift_additional_dim + } } , subscript-vshift .default:n = 0pt , subscript-style .choice: , @@ -1610,13 +1609,14 @@ VERSION HISTORY - bugfix: escaped text recognizes space by ~ again - * in superscript now gives excited state - new arrow type <> +2012/02/19 - version 3.1 - new functions in the chemmacros package + - new arrow types -/>, </- and <o> + - new commands \DeclareChemArrow, \RenewChemArrow and + \ShowChemArrow %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TODO - Addukte: Zahlen nach * und . automatisch erkennen? - allow fractions in subscripts: _{$\frac{1}{2}$} ? - optionale argumente von \\ nach außen weiterreichen? -- vertikaler shift für superskripte? -- the explicit definition of each arrow on its own is inefficient. - also these definitions abuse the `xparse' command \NewDocumentCommand - for internal commands => needs to be taken care of
\ No newline at end of file +- vertikaler shift für superskripte?
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty index fcba2944cd4..01888f2ff44 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty @@ -5,7 +5,7 @@ % - macros and commands for chemists - % % --------------------------------------------------------------------------- % % - Clemens Niederberger - % -% - 2012/02/10 - % +% - 2012/02/19 - % % --------------------------------------------------------------------------- % % - https://bitbucket.org/cgnieder/chemmacros/ - % % - contact@mychemistry.eu - % @@ -27,10 +27,15 @@ % - - % % - The Current Maintainer of this work is Clemens Niederberger. - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\RequirePackage{ expl3 , xparse , l3keys2e , xfrac , siunitx , tikz , mathtools , environ , scrlfile , etoolbox , bm } +\RequirePackage{ expl3 , xparse , l3keys2e , xfrac , siunitx } +\RequirePackage{ tikz , mathtools , environ , scrlfile , etoolbox , bm } \usetikzlibrary{calc,arrows} -\ProvidesExplPackage {chemmacros} {2012/02/10} {3.0d} {macros and commands for chemists} +\ProvidesExplPackage + {chemmacros} + {2012/02/19} + {3.1} + {macros and commands for chemists} \@ifpackageloaded { chemformula } {} { \RequirePackage { chemformula } } @@ -54,9 +59,13 @@ \bool_new:N \l_chemmacros_chemfig_bool \bool_new:N \l_chemmacros_ghsystem_bool \bool_set_true:N \l_chemmacros_ghsystem_bool +\bool_new:N \l_chemmacros_iupac_restricted_bool +\bool_new:N \l_chemmacros_iupac_strict_bool +\bool_new:N \l_chemmacros_in_document_bool \AtBeginDocument { + \bool_set_true:N \l_chemmacros_in_document_bool \@ifpackageloaded { chemstyle } { \bool_set_true:N \l_chemmacros_chemstyle_bool } { \bool_set_false:N \l_chemmacros_chemstyle_bool } @@ -84,6 +93,7 @@ % method => use `chemformula' or `mhchem' % strict => errors or warnings % synchronize => let particles et.al. adapt chemformula's font selection +% iupac => behaviour of nomenclature commands % version=1 => compatibility for documents set with v1.* \bool_new:N \l_chemmacros_strict_bool @@ -101,7 +111,6 @@ { \bool_set_false:N \l_chemmacros_circled_chem_bool } , circletype / chem .code:n = { \bool_set_true:N \l_chemmacros_circled_chem_bool } , - circletype .default:n = chem , circled .choice: , circled / none .code:n = { @@ -118,33 +127,27 @@ \bool_set_true:N \l_chemmacros_circled_bool \bool_set_false:N \l_chemmacros_circled_formal_bool } , - circled .default:n = formal , + circled .default:n = all , detect-bold .bool_set:N = \l_chemmacros_detect_bold_bool , detect-bold .default:n = true , - EZ .choice: , - EZ / cool .code:n = - { \bool_set_true:N \l_chemmacros_EZ_cool_bool } , - EZ / chemmacros .code:n = - { \bool_set_false:N \l_chemmacros_EZ_cool_bool } , - EZ .default:n = chemmacros , + EZ .code:n = + \chemmacros_msg:nnxx { chemmacros } { option-deprecated } { EZ } {} , german .bool_set:N = \l_chemmacros_german_bool , german .default:n = true , ghsystem .bool_set:N = \l_chemmacros_ghsystem_bool , ghsystem .default:n = true , - ngerman .bool_set:N = \l_chemmacros_german_bool , - ngerman .default:n = true , method .choice: , method / chemformula .code:n = \bool_set_false:N \l_chemmacros_use_mhchem_bool , method / mhchem .code:n = \bool_set_true:N \l_chemmacros_use_mhchem_bool , - method .default:n = chemformula , + ngerman .bool_set:N = \l_chemmacros_german_bool , + ngerman .default:n = true , Nu .choice: , Nu / mathspec .code:n = \bool_set_true:N \l_chemmacros_Nu_mathspec_bool , Nu / chemmacros .code:n = \bool_set_false:N \l_chemmacros_Nu_mathspec_bool , - Nu .default:n = chemmacros , strict .bool_set:N = \l_chemmacros_strict_bool , strict .default:n = true , synchronize .choice: , @@ -152,6 +155,16 @@ \cs_set_eq:NN \chemmacros_inner_font: \chemformula_font_inner: , synchronize / false .code:n = \cs_set:Nn \chemmacros_inner_font: {} , synchronize .default:n = true , + iupac .choice: , + iupac / restricted .code:n = + \bool_set_true:N \l_chemmacros_iupac_restricted_bool + \bool_set_false:N \l_chemmacros_iupac_strict_bool , + iupac / auto .code:n = + \bool_set_false:N \l_chemmacros_iupac_restricted_bool + \bool_set_false:N \l_chemmacros_iupac_strict_bool , + iupac / strict .code:n = + \bool_set_false:N \l_chemmacros_iupac_restricted_bool + \bool_set_true:N \l_chemmacros_iupac_strict_bool , xspace .bool_set:N = \l_chemmacros_xspace_bool , xspace .default:n = true , version .choice: , @@ -203,20 +216,29 @@ See~the~documentation~for~more~information. } +\msg_set:nnn { chemmacros } { option-deprecated } + { The~option~#1~is~deprecated.~I~will~ignore~it. } + +\msg_set: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. + } + \msg_set:nnnn { chemmacros } { declare-particle } { The~command~sequence~ \token_to_str:N #1 \c_space_tl is~already~defined. } { - You've~tried~to~define~a~particle~with~\token_to_str:N \DeclareChemParticle ,~but - ~the~command~sequence~ \token_to_str:N #1 \c_space_tl already~exists.~Choose~ - another~name. + You've~tried~to~define~a~particle~with~\token_to_str:N \DeclareChemParticle, + ~but~the~command~sequence~ \token_to_str:N #1 \c_space_tl already~exists. + ~Choose~another~name. } \msg_set:nnnn { chemmacros } { renew-particle } { The~particle~ \token_to_str:N #1 \c_space_tl is~not~defined. } { - You've~tried~to~renew~the~particle~\token_to_str:N #1 , but~it~doesn't~ + You've~tried~to~renew~the~particle~\token_to_str:N #1 ,~but~it~doesn't~ exist. } @@ -225,18 +247,35 @@ The~command~sequence~ \token_to_str:N #1 \c_space_tl is~already~defined. } { - You've~tried~to~define~a~particle~with~\token_to_str:N \DeclareChemPhase ,~but - ~the~command~sequence~ \token_to_str:N #1 \c_space_tl already~exists.~Choose~ - another~name. + You've~tried~to~define~a~particle~with~\token_to_str:N \DeclareChemPhase , + ~but~the~command~sequence~ \token_to_str:N #1 \c_space_tl already~exists. + ~Choose~another~name. } \msg_set:nnnn { chemmacros } { renew-phase } { The~phase~ \token_to_str:N #1 \c_space_tl is~not~defined. } { - You've~tried~to~renew~the~phase~\token_to_str:N #1 , but~it~doesn't~ + You've~tried~to~renew~the~phase~\token_to_str:N #1 ,~but~it~doesn't~ exist. } +\msg_set:nnnn { chemmacros } { declare-iupac } + { + The~iupac~naming~command~ \token_to_str:N #1 \c_space_tl is~already~defined. + } + { + You've~tried~to~define~a~iupac~naming~command~with~\token_to_str:N + \DeclareChemIUPAC,~but~the~iupac~command~ \token_to_str:N #1 \c_space_tl + already~exists.~Choose~another~name~or~use~\token_to_str:N \RenewChemIUPAC . + } + +\msg_set:nnnn { chemmacros } { renew-iupac } + { The~iupac~naming~command~ \token_to_str:N #1 \c_space_tl is~not~defined. } + { + You've~tried~to~renew~the~iupac~command~\token_to_str:N #1 ,~but~it~doesn't~ + exist.~Use~\token_to_str:N \DeclareChemIUPAC \c_space_tl instead . + } + \msg_set:nnn { chemmacros } { ox } { \token_to_str:N \ox \c_space_tl : ~ #1 ~ \msg_line_context: . @@ -259,18 +298,18 @@ work~properly~\msg_line_context: . } -\msg_set:nnn { chemmacros } { setnewstate } +\msg_set:nnn { chemmacros } { DeclareChemState } { The~state~ \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl already~exists.~You~need~to~use~ - \token_to_str:N \renewstate \c_space_tl to~alter~it. + \token_to_str:N \RenewChemState \c_space_tl to~alter~it. } -\msg_set:nnn { chemmacros } { renewstate } +\msg_set:nnn { chemmacros } { RenewChemState } { The~state~\exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl isn't~set~up~yet.~You~need~to~use~ - \token_to_str:N \setnewstate \c_space_tl to~create~it. + \token_to_str:N \DeclareChemState \c_space_tl to~create~it. } % --------------------------------------------------------------------------- % @@ -382,22 +421,29 @@ % --------------------------------------------------------------------------- % % transition state symbol +\cs_new_nopar:Npn \chemmacros_transition_state_aux: + { + \text + { + \skip_horizontal:n { .1ex } + \hbox_overlap_right:n + { \rule { .6ex } { 0pt } \rule { .05ex } { 1.3ex } } + \hbox_overlap_right:n { \rule [ .4ex ] { 1.3ex } { .05ex } } + \rule [ .85ex ] { 1.3ex } { .05ex } + \skip_horizontal:n { .1ex } + } + } + \cs_new_nopar:Npn \transitionstatesymbol - { \ensuremath { \chemmacros_transitionstatesymbol: } } -\cs_new_nopar:Npn \chemmacros_transitionstatesymbol: - { \mathpalette \chemmacros_transitionstatesymbol_aux: = } -\cs_new_nopar:Npn \chemmacros_transitionstatesymbol_aux: #1#2 { - \ooalign + \ensuremath { - \tex_hfil:D - $#1\mid$ - \tex_hfil:D - \tex_cr:D - \tex_hfil:D - $#1#2$ - \tex_hfil:D - \tex_cr:D + \mathchoice + { \displaystyle } + { \textstyle } + { \scriptstyle } + { \scriptscriptstyle } + \chemmacros_transition_state_aux: } } @@ -412,7 +458,8 @@ \cs_new:Nn \chemmacros_text:n { \mode_if_math:TF { \text { #1 } } { #1 } } -% add a possibility to let chemformula use the chemformula with method=chemformula, too +% add a possibility to let chemformula use the chemformula +% with method=chemformula, too \tl_new:N \l_chemmacros_chemformula_tl \cs_new:Nn \chemmacros_chemformula:n { @@ -611,8 +658,10 @@ \bool_if:NTF \l_chemmacros_use_mhchem_bool { \cs_new_nopar:Npn \Hpl { \chemmacros_atom:n { H } \pch \chemmacros_xspace: } - \cs_new_nopar:Npn \Hyd { \chemmacros_atom:n { OH } \mch \chemmacros_xspace: } - \cs_new_nopar:Npn \HtO { \chemmacros_chemformula:n { H3O } \pch \chemmacros_xspace: } + \cs_new_nopar:Npn \Hyd + { \chemmacros_atom:n { OH } \mch \chemmacros_xspace: } + \cs_new_nopar:Npn \HtO + { \chemmacros_chemformula:n { H3O } \pch \chemmacros_xspace: } \cs_new_nopar:Npn \El { \chemmacros_atom:n { E } \pch \chemmacros_xspace: } } { @@ -662,7 +711,9 @@ \bool_if:NTF \l_chemmacros_chemfig_bool { \bool_if:NTF \l_chemmacros_elpair_dots_bool - { { \chemmacros_inner_font: #1 \Lewis { 0: , { \vphantom { #1 } } } } } + { + { \chemmacros_inner_font: #1 \Lewis { 0: , { \vphantom { #1 } } } } + } { { \chemmacros_inner_font: #1 \Lewis { 0 , \vphantom { #1 } } } } } { @@ -692,16 +743,83 @@ elpair .default:n = dots } -% --------------------------------------------------------------------------- % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% IUPAC +\prop_new:N \l_chemmacros_iupac_prop + +\NewDocumentCommand \DeclareChemIUPAC { mm } + { + \tl_set_rescan:Nnn \l_tmpa_tl { \char_set_catcode_letter:N \\ } { #1 } + \tl_set:Nf \l_tmpa_tl { \tl_tail:V \l_tmpa_tl } + \prop_if_in:NoTF \l_chemmacros_iupac_prop { \l_tmpa_tl } + { \chemmacros_msg:nnxx { chemmacros } { declare-iupac } { #1 } { } } + { \prop_put:Non \l_chemmacros_iupac_prop { \l_tmpa_tl } { #2 } } + \chemmacros_make_iupac: + } + +\NewDocumentCommand \RenewChemIUPAC { mm } + { + \tl_set_rescan:Nnn \l_tmpa_tl { \char_set_catcode_letter:N \\ } { #1 } + \tl_set:Nf \l_tmpa_tl { \tl_tail:V \l_tmpa_tl } + \prop_if_in:NoTF \l_chemmacros_iupac_prop { \l_tmpa_tl } + { \prop_put:Non \l_chemmacros_iupac_prop { \l_tmpa_tl } { #2 } } + { \chemmacros_msg:nnxx { chemmacros } { renew-iupac } { #1 } { } } + \chemmacros_make_iupac: + } + +\cs_new_nopar:Npn \chemmacros_make_iupac: + { + \bool_if:NT \l_chemmacros_in_document_bool + { + \bool_if:NTF \l_chemmacros_inside_iupac_bool + { + \prop_map_inline:Nn \l_chemmacros_iupac_prop + { \cs_set_protected_nopar:cpn { ##1 } { ##2 } } + } + { + \bool_if:NF \l_chemmacros_iupac_restricted_bool + { + \bool_if:NTF \l_chemmacros_iupac_strict_bool + { + \prop_map_inline:Nn \l_chemmacros_iupac_prop + { \cs_set_protected_nopar:cpn { ##1 } { ##2 } } + } + { + \prop_map_inline:Nn \l_chemmacros_iupac_prop + { + \cs_if_exist:cF { ##1 } + { \cs_set_protected_nopar:cpn { ##1 } { ##2 } } + } + } + } + } + } + } + +\AtBeginDocument { \chemmacros_make_iupac: } + % stereo descriptors and other nomenclature commands % Cahn-Ingold-Prelog -\cs_new_protected_nopar:Npn \Rcip { \textit { (R) } } -\cs_new_protected_nopar:Npn \Scip { \textit { (S) } } -\cs_new_protected_nopar:Npn \cip #1 { \textit { (#1) } } +\NewDocumentCommand \cip { m } { \textit { (#1) } } + +\cs_new_protected_nopar:Npn \Rcip + { + \chemmacros_msg:nnxx { chemmacros } { command-deprecated } + { \Rcip } { \R } + \cip { R } + } +\cs_new_protected_nopar:Npn \Scip + { + \chemmacros_msg:nnxx { chemmacros } { command-deprecated } + { \Scip } { \S } + \cip { S } + } +\DeclareChemIUPAC \R { \cip { R } } +\DeclareChemIUPAC \S { \cip { S } } % TikZ needs : to be other \ExplSyntaxOff -\NewDocumentCommand\Sconf { O { S } }% +\NewDocumentCommand\Sconf{O{S}} {% \tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex] { @@ -710,61 +828,55 @@ }% } -\NewDocumentCommand \Rconf { O { R } }% +\NewDocumentCommand\Rconf{O{R}} {% \tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex] { \node(a) {#1} ; \draw[<-,thick,rotate=90] ($(a.center)+(20:.8em)$) arc (20:340:.8em) ; }% - }% + } \ExplSyntaxOn % E(ntgegen)/Z(usammen) -\AtBeginDocument - { - \bool_if:NTF \l_chemmacros_EZ_cool_bool - { - \cs_new_protected_nopar:Npn \Ent { \textit { (E) } } - \cs_new_protected_nopar:Npn \Zus { \textit { (Z) } } - } - { - \cs_if_free:NTF \E - { \cs_new_protected_nopar:Npn \E { \textit { (E) } } } - { \cs_set_protected_nopar:Npn \E { \textit { (E) } } } - \cs_new_protected_nopar:Npn \Z { \textit { (Z) } } - } - } +\DeclareChemIUPAC \E { \textit { (E) } } +\DeclareChemIUPAC \Z { \textit { (Z) } } % cis/trans & tert -\AtBeginDocument - { - \cs_if_free:NTF \cis - { \cs_new_protected_nopar:Npn \cis { \textit { cis } } } - { \cs_set_protected_nopar:Npn \cis { \textit { cis } } } - \cs_if_free:NTF \trans - { \cs_new_protected_nopar:Npn \trans { \textit { trans } } } - { \cs_set_protected_nopar:Npn \trans { \textit { trans } } } - } -\cs_new_protected_nopar:Npn \tert { \textit { tert } } +\DeclareChemIUPAC \cis { \textit{ cis } } +\DeclareChemIUPAC \trans { \textit { trans } } +\DeclareChemIUPAC \tert { \textit { tert } } % Fischer -\cs_new_protected_nopar:Npn \Dfi { \textsc { d } } -\cs_new_protected_nopar:Npn \Lfi { \textsc { l } } +\cs_set_protected_nopar:Npn \Dfi + { + \chemmacros_msg:nnxx { chemmacros } { command-deprecated } + { \Dfi } { \D } + \textsc { d } + } +\cs_set_protected_nopar:Npn \Lfi + { + \chemmacros_msg:nnxx { chemmacros } { command-deprecated } + { \Lfi } { \L } + \textsc { l } + } +\DeclareChemIUPAC \D { \textsc { d } } +\DeclareChemIUPAC \L { \textsc { l } } % ortho/meta/para -\cs_new_protected_nopar:Npn \ortho { \textsl { o } } -\cs_new_protected_nopar:Npn \meta { \textsl { m } } -\cs_new_protected_nopar:Npn \para { \textsl { p } } +\DeclareChemIUPAC \ortho { \textsl { o } } +\DeclareChemIUPAC \meta { \textsl { m } } +\DeclareChemIUPAC \para { \textsl { p } } % syn/anti -\cs_new_protected_nopar:Npn \syn { \textit { syn } } -\cs_new_protected_nopar:Npn \anti { \textit { anti } } +\DeclareChemIUPAC \syn { \textit { syn } } +\DeclareChemIUPAC \anti { \textit { anti } } % \iupac (basically the same as bpchem's \IUPAC) % - allows multiple breaking points as compound names can get really long and % especially in multicolumn documents can span more than two lines % - add a (very) little space after the hyphen +% - enables all naming commands regardless if they're definied otherwise or not \cs_new_protected:Nn \chemmacros_allow_hyphens: { \tex_penalty:D \c_ten_thousand \skip_horizontal:n { \c_zero_dim } } \cs_new_protected:Nn \chemmacros_break_point_hyphen: @@ -776,9 +888,13 @@ \chemmacros_allow_hyphens: } +\bool_new:N \l_chemmacros_inside_iupac_bool + \cs_new_protected:Nn \chemmacros_iupac:n { \group_begin: + \bool_set_true:N \l_chemmacros_inside_iupac_bool + \chemmacros_make_iupac: \tex_ignorespaces:D \cs_set_eq:NN \- \chemmacros_break_point_hyphen: \cs_set_eq:NN \| \chemmacros_break_point: @@ -793,7 +909,7 @@ \cs_set_protected_nopar:Npx \- { \exp_not:o { \- } } \cs_set_eq:NN \@dischyph \- -\cs_set_eq:NN \iupac \chemmacros_iupac:n +\cs_set_eq:NN \iupac \chemmacros_iupac:n % latin phrases \AtBeginDocument @@ -812,9 +928,15 @@ % --------------------------------------------------------------------------- % % acid/base \cs_new_nopar:Npn \pH - { \mbox { \chemmacros_detect_bold:n { \textsl { p } H } } \chemmacros_xspace: } + { + \mbox { \chemmacros_detect_bold:n { \textsl { p } H } } + \chemmacros_xspace: + } \cs_new_nopar:Npn \pOH - { \mbox { \chemmacros_detect_bold:n { \textsl { p } OH } } \chemmacros_xspace: } + { + \mbox { \chemmacros_detect_bold:n { \textsl { p } OH } } + \chemmacros_xspace: + } \NewDocumentCommand \p { m } { \mbox @@ -924,10 +1046,10 @@ % --------------------------------------------------------------------------- % % substituents -% \R[<sign>]{<subscript>} +% \Rad[<sign>]{<subscript>} \char_set_catcode_math_subscript:N \@ -\NewDocumentCommand \R { o g } +\NewDocumentCommand \Rad { o g } { \chemmacros_atom:n { @@ -1354,11 +1476,17 @@ \tikz[remember~picture,overlay] { \chemmacros_tikz_draw:f { \tl_use:N \l_chemmacros_redox_tikz_tl } - ($(\l_chemmacros_redox_begin_tl . \l_chemmacros_redox_side_tl)+(0,\l_chemmacros_redox_sep_dim)$) + ($ + (\l_chemmacros_redox_begin_tl . + \l_chemmacros_redox_side_tl)+(0,\l_chemmacros_redox_sep_dim) + $) -- ++(0,\l_chemmacros_redox_shift_tl * \l_chemmacros_redox_dist_dim) -| node [pos=.25,\l_chemmacros_redox_anchor_tl] { { #4 } } - ($(\l_chemmacros_redox_end_tl . \l_chemmacros_redox_side_tl)+(0,\l_chemmacros_redox_sep_dim)$) ; + ($ + (\l_chemmacros_redox_end_tl . + \l_chemmacros_redox_side_tl)+(0,\l_chemmacros_redox_sep_dim) + $) ; } } @@ -1766,10 +1894,10 @@ \tl_set:Nn \l_chemmacros_reaction_lorname_tl { #1 ~ } } -% \newreaction[<keyval>]{<name>}{<type>} +% \DeclareChemReaction[<keyval>]{<name>}{<type>} \bool_if:NF \l_chemmacros_version_one_bool { - \NewDocumentCommand \newreaction { o m m } + \NewDocumentCommand \DeclareChemReaction { o m m } { \cs_if_exist:cTF { #2 } { \msg_error:nnx { chemmacros } { already-defined } { #2 } } @@ -1834,6 +1962,12 @@ } \ignorespaces } + \cs_set:Npn \newreaction + { + \chemmacros_msg:nnxx { chemmacros } { command-deprecated } + { \newreaction } { \DeclareChemReaction } + \DeclareChemReaction + } } \cs_new:Npn \chemmacros_equation_chemformula:n #1 @@ -1847,8 +1981,8 @@ % predefined: \bool_if:NF \l_chemmacros_version_one_bool { - \newreaction [ star ] { reaction } { equation } - \newreaction [ star ] { reactions } { align } + \DeclareChemReaction [ star ] { reaction } { equation } + \DeclareChemReaction [ star ] { reactions } { align } } % --------------------------------------------------------------------------- % @@ -1998,10 +2132,10 @@ \l_chemmacros_thermod_delta_default_tl } -% \setnewstate[<keyval>]{<name>}{<symbol>}{<unit>} +% \DeclareChemState[<keyval>]{<name>}{<symbol>}{<unit>} \bool_if:NF \l_chemmacros_version_one_bool { - \cs_new:Npn \setnewstate + \cs_new:Npn \DeclareChemState { \bool_set_false:N \l_chemmacros_renewstate_bool \chemmacros_setnewstate_reset: @@ -2009,8 +2143,8 @@ { \setnewstate_aux_i:n } { \setnewstate_aux_ii:nnn } } -% \renewstate[<keyval>]{<name>}{<symbol>}{<unit>} - \cs_new:Npn \renewstate +% \RenewChemState[<keyval>]{<name>}{<symbol>}{<unit>} + \cs_new:Npn \RenewChemState { \bool_set_true:N \l_chemmacros_renewstate_bool \chemmacros_setnewstate_reset: @@ -2018,6 +2152,18 @@ { \setnewstate_aux_i:n } { \setnewstate_aux_ii:nnn } } + \cs_set:Npn \setnewstate + { + \chemmacros_msg:nnxx { chemmacros } { command-deprecated } + { \setnewstate } { \DeclareChemState } + \DeclareChemState + } + \cs_set:Npn \renewstate + { + \chemmacros_msg:nnxx { chemmacros } { command-deprecated } + { \renewstate } { \RenewChemState } + \RenewChemState + } } \cs_new_nopar:Npn \chemmacros_setnewstate_reset: @@ -2152,10 +2298,10 @@ % predefined: \bool_if:NF \l_chemmacros_version_one_bool { - \setnewstate {Enthalpy} {H} {\kilo\joule\per\mole} - \setnewstate [ delta=false, subscript-left=false ] {Entropy} + \DeclareChemState {Enthalpy} {H} {\kilo\joule\per\mole} + \DeclareChemState [ delta=false, subscript-left=false ] {Entropy} {S} {\joule\per\kelvin\per\mole} - \setnewstate {Gibbs} {G} {\kilo\joule\per\mole} + \DeclareChemState {Gibbs} {G} {\kilo\joule\per\mole} } % --------------------------------------------------------------------------- % @@ -2453,9 +2599,10 @@ \keys_define:nn { chemmacros / orbital / s } { phase .choice: , - phase / + .code:n = { \bool_set_true:N \l_chemmacros_orbital_s_phase_bool } , - phase / - .code:n = { \bool_set_false:N \l_chemmacros_orbital_s_phase_bool } , - phase .default:n = + , + phase / + .code:n = + { \bool_set_true:N \l_chemmacros_orbital_s_phase_bool } , + phase / - .code:n = + { \bool_set_false:N \l_chemmacros_orbital_s_phase_bool } , scale .tl_set:N = \l_chemmacros_orbital_s_scale_tl , color .tl_set:N = \l_chemmacros_orbital_s_color_tl } @@ -2501,8 +2648,10 @@ \keys_define:nn { chemmacros / orbital / p } { phase .choice: , - phase / + .code:n = { \bool_set_true:N \l_chemmacros_orbital_p_phase_bool } , - phase / - .code:n = { \bool_set_false:N \l_chemmacros_orbital_p_phase_bool } , + phase / + .code:n = + { \bool_set_true:N \l_chemmacros_orbital_p_phase_bool } , + phase / - .code:n = + { \bool_set_false:N \l_chemmacros_orbital_p_phase_bool } , scale .tl_set:N = \l_chemmacros_orbital_p_scale_tl , angle .fp_set:N = \l_chemmacros_orbital_angle_fp , color .tl_set:N = \l_chemmacros_orbital_p_color_tl , @@ -2595,8 +2744,10 @@ \keys_define:nn { chemmacros / orbital / sp } { phase .choice: , - phase / + .code:n = { \bool_set_true:N \l_chemmacros_orbital_sp_phase_bool } , - phase / - .code:n = { \bool_set_false:N \l_chemmacros_orbital_sp_phase_bool } , + phase / + .code:n = + { \bool_set_true:N \l_chemmacros_orbital_sp_phase_bool } , + phase / - .code:n = + { \bool_set_false:N \l_chemmacros_orbital_sp_phase_bool } , scale .tl_set:N = \l_chemmacros_orbital_sp_scale_tl , angle .fp_set:N = \l_chemmacros_orbital_angle_fp , color .tl_set:N = \l_chemmacros_orbital_sp_color_tl @@ -2684,8 +2835,10 @@ \keys_define:nn { chemmacros / orbital / sp2 } { phase .choice: , - phase / + .code:n = { \bool_set_true:N \l_chemmacros_orbital_sptwo_phase_bool } , - phase / - .code:n = { \bool_set_false:N \l_chemmacros_orbital_sptwo_phase_bool } , + phase / + .code:n = + { \bool_set_true:N \l_chemmacros_orbital_sptwo_phase_bool } , + phase / - .code:n = + { \bool_set_false:N \l_chemmacros_orbital_sptwo_phase_bool } , scale .tl_set:N = \l_chemmacros_orbital_sptwo_scale_tl , angle .fp_set:N = \l_chemmacros_orbital_angle_fp , color .tl_set:N = \l_chemmacros_orbital_sptwo_color_tl @@ -2773,8 +2926,10 @@ \keys_define:nn { chemmacros / orbital / sp3 } { phase .choice: , - phase / + .code:n = { \bool_set_true:N \l_chemmacros_orbital_spthree_phase_bool } , - phase / - .code:n = { \bool_set_false:N \l_chemmacros_orbital_spthree_phase_bool } , + phase / + .code:n = + { \bool_set_true:N \l_chemmacros_orbital_spthree_phase_bool } , + phase / - .code:n = + { \bool_set_false:N \l_chemmacros_orbital_spthree_phase_bool } , scale .tl_set:N = \l_chemmacros_orbital_spthree_scale_tl , angle .fp_set:N = \l_chemmacros_orbital_angle_fp , color .tl_set:N = \l_chemmacros_orbital_spthree_color_tl @@ -3046,10 +3201,11 @@ Version history - new commands \p, \fplus, \fminus, \fpch, \fmch, \fscrp, \fsrcm, \fdelp, \fdelm, \orbital, \chemsetup - various commands have a new syntax - - removed: \setmhName, \setredoxdist, \setstatesubscript, - \porb, \phorb, \pxorb, \pyorb, \pzorb, \setorbheight, - \solid, \liquid - - reaction environments work with hyperref and varioref + - removed: \setmhName, \setredoxdist, + \setstatesubscript, \porb, \phorb, \pxorb, \pyorb, + \pzorb, \setorbheight, \solid, \liquid + - reaction environments work with hyperref and + varioref 2011/11/03 - version 2.0a - minor bug fixes - new feature for \Nu - new command \ba @@ -3070,7 +3226,8 @@ Version history - renamed formula => chemformula and ghs => ghsystem to make the names unique (following a request by Karl Berry for TeXlive) -2012/02/03 - version 3.0b - new command \DeclareChemParticle, updated documentation +2012/02/03 - version 3.0b - new command \DeclareChemParticle, updated + documentation 2012/02/05 - version 3.0c - renamed pictogram files (following a request by Karl Berry for TeXlive) - new package option "Nu" @@ -3078,9 +3235,22 @@ Version history - bugfixes with \DeclareChemParticle - new command \RenewChemParticle - new option phases / pos - - new commands \DeclareChemPhase, \RenewChemPhase, \phase + - new commands \DeclareChemPhase, \RenewChemPhase, + \phase - changed default behaviour of phases - removed optional argument from \sld and \lqd +2012/02/19 - version 3.1 - new commands \DeclareChemIUPAC and \RenewChemIUPAC + - new option iupac + - deprecated option: EZ + - deprecated commands: + \newreaction => \DeclareChemReaction + \setnewstate => \DeclareChemState + \renewstate => \RenewChemState + \Rcip => \R + \Scip => \S + \Dfi => \D + \Lfi => \L + - new arrow types in the chemformula package % --------------------------------------------------------------------------- % % TODO: diff --git a/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty b/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty index 8ca91155606..0e729748933 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty @@ -5,7 +5,7 @@ % - macros and commands for chemists - % % --------------------------------------------------------------------------- % % - Clemens Niederberger - % -% - 2012/02/10 - % +% - 2012/02/19 - % % --------------------------------------------------------------------------- % % - https://bitbucket.org/cgnieder/chemmacros/ - % % - contact@mychemistry.eu - % @@ -28,7 +28,11 @@ % - The Current Maintainer of this work is Clemens Niederberger. - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{ expl3 } -\ProvidesExplPackage {ghsystem} {2012/02/10} {3.0d} {globally harmonised system} +\ProvidesExplPackage + {ghsystem} + {2012/02/19} + {3.1} + {globally harmonised system} % --------------------------------------------------------------------------- % % error and warning messages: @@ -47,8 +51,8 @@ } { You've~tried~to~call~statement~#1#2~ \msg_line_context: \c_space_tl but~it~ - it~is~not~defined~in~ghsystem.sty . ~ Are~you~sure~it~exists? ~ If~so~please~send - ~a~message~to~the~author.~Thanks. + it~is~not~defined~in~ghsystem.sty . ~ Are~you~sure~it~exists? ~ If~so~please + ~send~a~message~to~the~author.~Thanks. } \msg_set:nnnn { ghsystem } { booktabs } @@ -152,7 +156,8 @@ \bool_set_true:c { l_ghsystem_#1_bool } \input { language / ghsystem_#1.def } \ExplSyntaxOn , % \ghs options: - hide .bool_set:N = \l_ghsystem_hide_statement_bool , + hide .bool_set:N = + \l_ghsystem_hide_statement_bool , hide .default:n = true , fill-in .bool_set:N = \l_ghsystem_fill_in_bool , fill-in .default:n = true , @@ -168,8 +173,10 @@ \cs_set:Npn \ghsystem_substance: { ~ #1 } , text .code:n = \cs_set:Npn \ghsystem_text: { ~ #1 } , - space .tl_set:N = \l_ghsystem_number_space_tl , - C-temperature .tl_set:N = \l_ghsystem_celsius_temperature_tl , + space .tl_set:N = + \l_ghsystem_number_space_tl , + C-temperature .tl_set:N = + \l_ghsystem_celsius_temperature_tl , F-temperature .tl_set:N = \l_ghsystem_fahrenheit_temperature_tl , kg-mass .tl_set:N = \l_ghsystem_kg_mass_tl , @@ -185,8 +192,10 @@ % \ghslistall options: table-head-number .tl_set:N = \l_ghsystem_identifier_tl , table-head-text .tl_set:N = \l_ghsystem_table_text_tl , - table-next-page .tl_set:N = \l_ghsystem_table_next_page_tl , - table-row-sep .dim_set:N = \l_ghsystem_table_line_sep_dim , + table-next-page .tl_set:N = + \l_ghsystem_table_next_page_tl , + table-row-sep .dim_set:N = + \l_ghsystem_table_line_sep_dim , table-head-rule .choice: , table-head-rule / default .code:n = \tl_set:Nn \l_ghsystem_table_head_rule_tl { \hline } , @@ -237,7 +246,8 @@ \tl_clear:N \l_ghsystem_table_foot_rule_tl \tl_clear:N \l_ghsystem_table_last_foot_rule_tl , table-caption .tl_set:N = \l_ghsystem_table_caption_tl , - table-caption-short .tl_set:N = \l_ghsystem_table_caption_short_tl , + table-caption-short .tl_set:N = + \l_ghsystem_table_caption_short_tl , table-label .tl_set:N = \l_ghsystem_table_label_tl } @@ -349,11 +359,13 @@ \exp_args:No \label { \l_ghsystem_table_label_tl } } \\ \l_ghsystem_table_top_head_rule_tl - \textbf { \l_ghsystem_identifier_tl } & \textbf { \l_ghsystem_table_text_tl } \\ + \textbf { \l_ghsystem_identifier_tl } & + \textbf { \l_ghsystem_table_text_tl } \\ \l_ghsystem_table_head_rule_tl \endfirsthead \l_ghsystem_table_top_head_rule_tl - \textbf { \l_ghsystem_identifier_tl } & \textbf { \l_ghsystem_table_text_tl } \\ + \textbf { \l_ghsystem_identifier_tl } & + \textbf { \l_ghsystem_table_text_tl } \\ \l_ghsystem_table_head_rule_tl \endhead \l_ghsystem_table_last_foot_rule_tl @@ -416,7 +428,10 @@ \group_begin: \IfNoValueF { #1 } { \keys_set:nn { chemmacros / ghsystem } { #1 } } \ghsystem_includegraphics:xn - { scale=\fp_to_tl:N \l_ghsystem_picture_scale_fp \l_ghsystem_picture_includegraphics_tl } + { + scale = \fp_to_tl:N \l_ghsystem_picture_scale_fp + \l_ghsystem_picture_includegraphics_tl + } { pictures / ghsystem_ #2 . \l_ghsystem_picture_type_tl } \group_end: } @@ -432,8 +447,12 @@ VERSION HISTORY 2012/01/30 - version 3.0a - bugfix in chemormula.sty, renamed ghs => ghsystem 2012/02/03 - version 3.0b - updated documentation 2012/02/05 - version 3.0c - renamed pictogram files -2012/02/1ß - version 3.0d - several bugfixes in chemformula, some new commands +2012/02/10 - version 3.0d - several bugfixes in chemformula, some new commands and options in chemmacros +2012/02/19 - version 3.1 - new functions in the chemmacros package + - new arrow types and functions in the chemformula + package + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TODO: diff --git a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_english.def b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_english.def index 1b63cd3ca98..58d8f861c98 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_english.def +++ b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_english.def @@ -248,7 +248,7 @@ \prop_put:Nnn \l_ghsystem_p_prop { 321 } { Spe~ci\-fic~treat\-ment~(see ~ \l_ghsystem_dots_tl\ on~this~la\-bel). } \prop_put:Nnn \l_ghsystem_p_prop { 322 } { Spe~ci\-fic~mea\-sures~(see ~ \l_ghsystem_dots_tl\ on~this~la\-bel). } \prop_put:Nnn \l_ghsystem_p_prop { 330 } { Rinse~mouth. } -\prop_put:Nnn \l_ghsystem_p_prop { 331 } { Do~NOT~in\-duse~vo\-mitting. } +\prop_put:Nnn \l_ghsystem_p_prop { 331 } { Do~NOT~in\-duce~vo\-mitting. } \prop_put:Nnn \l_ghsystem_p_prop { 332 } { If~skin~irri\-tation~occurs : \ghsystem_text: } \prop_put:Nnn \l_ghsystem_p_prop { 333 } { If~skin~irri\-tation~or~rash~occurs : \ghsystem_text: } \prop_put:Nnn \l_ghsystem_p_prop { 334 } { Immerse~in~cool~wa\-ter/wrap~in~wet~ban\-da\-ges. } |