From 42cb2732743e6530de625c577c0e0e180652300e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 16 Jul 2016 21:41:37 +0000 Subject: ghsystem (16jul16) git-svn-id: svn://tug.org/texlive/trunk@41714 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/ghsystem/ghsystem.sty | 478 ++++++++++++---------- 1 file changed, 255 insertions(+), 223 deletions(-) (limited to 'Master/texmf-dist/tex/latex/ghsystem/ghsystem.sty') diff --git a/Master/texmf-dist/tex/latex/ghsystem/ghsystem.sty b/Master/texmf-dist/tex/latex/ghsystem/ghsystem.sty index 390c2db18c1..4583ad182d2 100644 --- a/Master/texmf-dist/tex/latex/ghsystem/ghsystem.sty +++ b/Master/texmf-dist/tex/latex/ghsystem/ghsystem.sty @@ -12,7 +12,7 @@ % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- -% Copyright 2011-2014 Clemens Niederberger +% Copyright 2011-2016 Clemens Niederberger % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -26,96 +26,62 @@ % % The Current Maintainer of this work is Clemens Niederberger. % -------------------------------------------------------------------------- -\RequirePackage{ expl3, xparse, l3keys2e } -\def\ghsystem@version{4.6} -\def\ghsystem@date{2014/08/07} +\RequirePackage{ expl3, xparse, chemmacros } +\ExplSyntaxOn + +\tl_const:Nn \c_ghsystem_version_tl {4.8} +\tl_const:Nn \c_ghsystem_date_tl {2016/07/16} +\tl_const:Nn \c_ghsystem_info_tl {globally~ harmonised~ system} + \ProvidesExplPackage {ghsystem} - {\ghsystem@date} - {\ghsystem@version} - {globally harmonised system} - -% -------------------------------------------------------------------------- -% check expl3 version: -\@ifpackagelater { expl3 } { 2012/11/21 } - { } - { - \PackageError { ghsystem } { Support~package~expl3~too~old } - { - You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~ - 'l3packages'.\MessageBreak - Loading~ghsystem~will~abort! - } - \tex_endinput:D - } + {\c_ghsystem_date_tl} + {\c_ghsystem_version_tl} + {\c_ghsystem_info_tl} % --------------------------------------------------------------------------- % % error and warning messages: -\msg_set:nnnn { ghsystem } { explicit } - { It~seems~you've~loaded~`ghsystem'~explicitly. } - { - It~seems~you've~loaded~`ghsystem'~explicitly.~This~should~work~but~the~ - recommended~way~is~to~load~it~via~the~bundle,~i.e.~by~using~ - \token_to_str:N \usepackage \{ chemmacros \}. - } - -\msg_set:nnnn { ghsystem } { statements } +\msg_new:nnn {ghsystem} {statements} { You've~tried~to~call~statement~#1#2~ \msg_line_context: \c_space_tl but~it~ it~is~not~defined~in~ghsystem.sty . } + +\msg_new:nnn {ghsystem} {language-file} { - 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. + You've~ tried~ to~ load~ the~ language~ file~ `#1'~ \msg_line_context: .~ + However,~ you~ can~ only~ load~ language~ files~ in~ the~ preamble! } - -\msg_set:nnnn { ghsystem } { booktabs } - { Package~`booktabs'~missing~\msg_line_context: . } + +\msg_new:nnn {ghsystem} {booktabs} { Option~#1~of~the~\token_to_str:N \ghslistall \c_space_tl command~ \msg_line_context: \c_space_tl needs~the~`booktabs'~package . ~Please~make~ sure~to~load~it~in~your~preamble. } -\cs_new_protected:Npn \ghsystem_msg:nnxx #1#2#3#4 +\msg_new:nnn {ghsystem} {unknown-type} { - \bool_if:NTF \l__ghsystem_strict_bool - { \msg_error:nnxx { #1 } { #2 } { #3 } { #4 } } - { \msg_warning:nnxx { #1 } { #2 } { #3 } { #4 } } + The~ statement~ type~ `#1'~ \msg_line_context: \c_space_tl is~ unkown.~ + Valid~ types~ are~ `H',~ `EUH',~ and~ `P'. } % -------------------------------------------------------------------------- % package options: -\bool_new:N \l__ghsystem_strict_bool -\keys_define:nn { chemmacros / ghsystem } - { - strict .bool_set:N = \l__ghsystem_strict_bool , - strict .default:n = true , - language .code:n = \ghsystem_load_language:n { #1 } - } - -\AtBeginDocument +\keys_define:nn {ghsystem} { - \@ifpackageloaded{ chemmacros } - { - \bool_if:NT \l_chemmacros_strict_bool - { \bool_set_true:N \l__ghsystem_strict_bool } - } - { - \cs_new:Npn \iupac #1 - { - \group_begin: - \cs_set_eq:NN \| \scan_stop: - #1 - \group_end: - } - } + % TODO + % strict .bool_set:N = \l__ghsystem_strict_bool , + % strict .default:n = true , + language .code:n = \ghsystem_load_languages:n {#1} } % --------------------------------------------------------------------------- % % variants of kernel functions: -\cs_generate_variant:Nn \file_if_exist:nTF { x } +\cs_generate_variant:Nn \file_if_exist:nTF {x} +\cs_generate_variant:Nn \prop_put:Nnn {cx} +\cs_generate_variant:Nn \prop_get:NnNTF {cx} +\cs_generate_variant:Nn \str_case:nnF {V} % --------------------------------------------------------------------------- % % scratch variables @@ -125,7 +91,7 @@ \int_new:N \l__ghsystem_tmpb_int % load required packages: -\RequirePackage{ translations , siunitx , graphicx , longtable , ifpdf } +\RequirePackage { translations , siunitx , graphicx , longtable , ifpdf } % --------------------------------------------------------------------------- % % define variables: @@ -152,31 +118,31 @@ \skip_horizontal:N \c_zero_skip } -\bool_new:N \l__ghsystem_fill_in_bool +\cs_new_protected:Npn \ghsystem_filler:n #1 + { \emph { $\langle$ #1 $\rangle$ } } + +\bool_new:N \l_ghsystem_fill_in_bool \bool_new:N \l__ghsystem_show_number_bool -\bool_new:N \l__ghsystem_substance_bool -\bool_new:N \l__ghsystem_organs_bool +\bool_new:N \l_ghsystem_substance_bool +\bool_new:N \l_ghsystem_organs_bool \bool_new:N \l__ghsystem_hide_statement_bool -\bool_new:N \l__ghsystem_engine_pdftex_bool -\bool_new:N \l__ghsystem_engine_xetex_bool -\bool_new:N \l__ghsystem_engine_luatex_bool \tl_new:N \l__ghsystem_number_space_tl -\tl_new:N \l__ghsystem_celsius_temperature_tl -\tl_new:N \l__ghsystem_fahrenheit_temperature_tl -\tl_new:N \l__ghsystem_kg_mass_tl -\tl_new:N \l__ghsystem_lbs_mass_tl -\tl_new:N \l__ghsystem_dots_tl -\tl_set:Nn \l__ghsystem_dots_tl { \ldots } +\tl_new:N \l_ghsystem_celsius_temperature_tl +\tl_new:N \l_ghsystem_fahrenheit_temperature_tl +\tl_new:N \l_ghsystem_kg_mass_tl +\tl_new:N \l_ghsystem_lbs_mass_tl +\tl_new:N \l_ghsystem_dots_tl +\tl_set:Nn \l_ghsystem_dots_tl { \ldots } \tl_new:N \l__ghsystem_picture_scale_default_tl \tl_set:Nn \l__ghsystem_picture_scale_default_tl { .05 } \tl_new:N \l__ghsystem_picture_scale_tl \tl_set_eq:NN \l__ghsystem_picture_scale_tl \l__ghsystem_picture_scale_default_tl \tl_new:N \l__ghsystem_picture_includegraphics_tl \tl_new:N \l__ghsystem_picture_type_tl -\tl_new:N \l__ghsystem_identifier_tl -\tl_new:N \l__ghsystem_table_text_tl -\tl_new:N \l__ghsystem_table_next_page_tl +\tl_new:N \l_ghsystem_identifier_tl +\tl_new:N \l_ghsystem_table_text_tl +\tl_new:N \l_ghsystem_table_next_page_tl \tl_new:N \l__ghsystem_table_head_rule_tl \tl_set:Nn \l__ghsystem_table_head_rule_tl { \hline } \tl_new:N \l__ghsystem_table_top_head_rule_tl @@ -185,90 +151,106 @@ \tl_set:Nn \l__ghsystem_table_foot_rule_tl { \hline } \tl_new:N \l__ghsystem_table_last_foot_rule_tl \tl_set:Nn \l__ghsystem_table_last_foot_rule_tl { \hline } -\tl_new:N \l__ghsystem_table_caption_tl -\tl_new:N \l__ghsystem_table_caption_short_tl +\tl_new:N \l_ghsystem_table_caption_tl +% TODO: implement usage: +\tl_new:N \l_ghsystem_table_caption_short_tl \tl_new:N \l__ghsystem_table_label_tl \tl_set:Nn \l__ghsystem_table_label_tl { tab : ghs-hp-statements } \tl_new:N \l__ghsystem_list_all_column_format_tl \dim_new:N \l__ghsystem_list_all_column_width_dim -\dim_set:Nn \l__ghsystem_list_all_column_width_dim { .7\linewidth } +\AtBeginDocument{ + \dim_set:Nn \l__ghsystem_list_all_column_width_dim { .7\linewidth } +} \dim_new:N \l__ghsystem_table_line_sep_dim \dim_set:Nn \l__ghsystem_table_line_sep_dim { 3pt } \fp_new:N \l__ghsystem_picture_scale_fp \fp_set:Nn \l__ghsystem_picture_scale_fp { \l__ghsystem_picture_scale_tl } -\DeclareSIUnit { \GHSfahrenheit } { \SIUnitSymbolDegree F } -\DeclareSIUnit { \GHScelsius } { \SIUnitSymbolDegree C } -\DeclareSIUnit { \GHSkilogram } { kg } -\DeclareSIUnit { \GHSpounds } { lbs } +\DeclareSIUnit \GHSfahrenheit { \SIUnitSymbolDegree F } +\DeclareSIUnit \GHScelsius { \SIUnitSymbolDegree C } +\DeclareSIUnit \GHSkilogram { kg } +\DeclareSIUnit \GHSpounds { lbs } % language settings \bool_new:N \l__ghsystem_language_file_loaded_bool -\bool_new:N \l__ghsystem_language_directory_bool -% load the language file -- it needs expl3 namespace but shouldn't care about -% what catcode regime was before and simply restore it... -% so we basically copy the definitions of \ExplSyntaxOn and \ExplSyntaxOff +\tl_const:Nn \c__ghsystem_definition_file_prefix_tl {ghsystem} +\tl_const:Nn \c__ghsystem_definition_file_extension_tl {def} -\cs_new_protected:Npn \__ghsystem_namespace_restore: {} -\bool_new:N \l__ghsystem_expl_namespace_bool +\tl_new:N \l_ghsystem_current_language_file_tl +\str_new:N \l_ghsystem_current_language_str +\seq_new:N \g__ghsystem_loadad_languages_seq -\cs_new_protected:Npn \__ghsystem_expl_namespace: +\cs_new_protected:Npn \__ghsystem_language_file:nn #1#2 { - \bool_if:NF \l__ghsystem_expl_namespace_bool + \ProvidesFile { - \cs_set_protected:Npx \__ghsystem_namespace_restore: + \c__ghsystem_definition_file_prefix_tl _ #1 . + \c__ghsystem_definition_file_extension_tl + } + [#2] + \ExplSyntaxOn + \tl_set:Nn \l_ghsystem_current_language_file_tl {#1} + } + +\NewDocumentCommand \ghsystemlanguagefile {mm} + { \__ghsystem_language_file:nn {#1} {#2} } + +% prop +% number +% statement +\cs_new_protected:Npn \ghsystem_add_statement:nnn #1#2#3 + { + \prop_put:cxn {l__ghsystem_ \str_lower_case:n {#1} _prop} + {\l_ghsystem_current_language_file_tl-#2} + {#3} + } + +\cs_new:Npn \ghsystem_load_language_file:n #1 + { + \ghsystem_if_language_file_loaded:nF {#1} + { + \cs_if_eq:NNTF \@onefilewithoptions\@notprerr + { \msg_error:nnn {ghsystem} {language-file} {#1} } { - \char_set_catcode:nn { 9 } { \char_value_catcode:n { 9 } } - \char_set_catcode:nn { 32 } { \char_value_catcode:n { 32 } } - \char_set_catcode:nn { 34 } { \char_value_catcode:n { 34 } } - \char_set_catcode:nn { 38 } { \char_value_catcode:n { 38 } } - \char_set_catcode:nn { 58 } { \char_value_catcode:n { 58 } } - \char_set_catcode:nn { 94 } { \char_value_catcode:n { 94 } } - \char_set_catcode:nn { 95 } { \char_value_catcode:n { 95 } } - \char_set_catcode:nn { 124 } { \char_value_catcode:n { 124 } } - \char_set_catcode:nn { 126 } { \char_value_catcode:n { 126 } } - \tex_endlinechar:D = \tex_the:D \tex_endlinechar:D \scan_stop: - \bool_set_false:N \l__ghsystem_expl_namespace_bool - \cs_set_protected:Npn \__ghsystem_namespace_restore: {} + \seq_gput_right:Nx \g__ghsystem_loadad_languages_seq + { \@trnslt@language {#1} } + \@onefilewithoptions + {\c__ghsystem_definition_file_prefix_tl _ #1} [][] + \c__ghsystem_definition_file_extension_tl } } - \char_set_catcode_ignore:n { 9 } - \char_set_catcode_ignore:n { 32 } - \char_set_catcode_other:n { 34 } - \char_set_catcode_math_toggle:n { 36 } - \char_set_catcode_alignment:n { 38 } - \char_set_catcode_letter:n { 58 } - \char_set_catcode_math_superscript:n { 94 } - \char_set_catcode_letter:n { 95 } - \char_set_catcode_other:n { 124 } - \char_set_catcode_space:n { 126 } - \tex_endlinechar:D = 32 \scan_stop: - \bool_set_true:N \l__ghsystem_expl_namespace_bool } +\cs_generate_variant:Nn \ghsystem_load_language_file:n { V } -\cs_new:Npn \ghsystem_load_language_file:n #1 +\prg_new_protected_conditional:Npnn \ghsystem_if_language_file_loaded:n #1 {T,F,TF} { - \__ghsystem_expl_namespace: - \file_input:n { ghsystem_#1.def } - \__ghsystem_namespace_restore: + \seq_if_in:NxTF \g__ghsystem_loadad_languages_seq + { \@trnslt@language {#1} } + { \prg_return_true: } + { \prg_return_false: } } +% TODO: an neuen Mechanismus anpassen: \cs_new_protected:Npn \ghsystem_load_language:n #1 { - \file_if_exist:xTF { ghsystem_ #1 .def } - { - \bool_set_true:N \l__ghsystem_language_file_loaded_bool - \ghsystem_load_language_file:n { #1 } - } - { \ghsystem_load_language_file:n { english } } + \ghsystem_if_language_file_loaded:nF {#1} + { \ghsystem_load_language_file:n {#1} } + \str_set:Nx \l_ghsystem_current_language_str { \@trnslt@language {#1} } + \bool_set_true:N \l__ghsystem_language_file_loaded_bool } \cs_generate_variant:Nn \ghsystem_load_language:n { V } -\NewDocumentCommand \loadghsystemlanguage { m } - { \ghsystem_load_language:n { #1 } } +\cs_new_protected:Npn \ghsystem_load_languages:n #1 + { \clist_map_inline:nn {#1} { \ghsystem_load_language:n {##1} } } + +% \NewDocumentCommand \loadghsystemlanguage {m} +% { \ghsystem_load_language:n {#1} } + +% \NewDocumentCommand \loadghsystemlanguages {m} +% { \ghsystem_load_languages:n {#1} } \AtBeginDocument{ \bool_if:NF \l__ghsystem_language_file_loaded_bool @@ -277,7 +259,7 @@ { \ghsystem_load_language:V \l_chemmacros_language_tl } { \ghsystem_load_language:n - { \@trnslt@language{\@trnslt@current@language} } + { \@trnslt@language {\@trnslt@current@language} } } } } @@ -285,40 +267,40 @@ \cs_new_nopar:Nn \ghsystem_booktabs:n { \cs_if_exist:cF { ver@booktabs.sty } - { \msg_error:nnx { ghsystem } { booktabs } { #1 } } + { \msg_error:nnx {ghsystem} { booktabs } {#1} } } % --------------------------------------------------------------------------- % % define options: -\keys_define:nn { chemmacros / ghsystem } +\keys_define:nn {ghsystem} { % \ghs options: 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 .bool_set:N = \l_ghsystem_fill_in_bool , fill-in .default:n = true , exposure .code:n = \cs_set:Npn \ghsystem_exposure: { ~ #1 } , effect .code:n = \cs_set:Npn \ghsystem_effect: { ~ #1 } , organs .code:n = - \bool_set_true:N \l__ghsystem_organs_bool + \bool_set_true:N \l_ghsystem_organs_bool \cs_set:Npn \ghsystem_organs: { ~ #1 } , substance .code:n = - \bool_set_true:N \l__ghsystem_substance_bool + \bool_set_true:N \l_ghsystem_substance_bool \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 , + \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 , - lbs-mass .tl_set:N = \l__ghsystem_lbs_mass_tl , - dots .tl_set:N = \l__ghsystem_dots_tl , + \l_ghsystem_fahrenheit_temperature_tl , + kg-mass .tl_set:N = \l_ghsystem_kg_mass_tl , + lbs-mass .tl_set:N = \l_ghsystem_lbs_mass_tl , + dots .tl_set:N = \l_ghsystem_dots_tl , % \ghspic options: scale .code:n = \fp_set:Nn \l__ghsystem_picture_scale_fp { #1 * \l__ghsystem_picture_scale_fp } , @@ -327,8 +309,8 @@ pic-type .choices:nn = { eps , jpg , png , pdf } { \tl_set_eq:NN \l__ghsystem_picture_type_tl \l_keys_choice_tl } , % \ghslistall options: - table-head-number .tl_set:N = \l__ghsystem_identifier_tl , - table-head-text .tl_set:N = \l__ghsystem_table_text_tl , + 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 = @@ -383,9 +365,9 @@ \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 , + \l_ghsystem_table_caption_tl , table-caption-short .tl_set:N = - \l__ghsystem_table_caption_short_tl , + \l_ghsystem_table_caption_short_tl , table-label .tl_set:N = \l__ghsystem_table_label_tl , table-column-format .tl_set:N = @@ -399,46 +381,41 @@ % \ghs{}{} % \ghs*{}{} : type without number % -\NewDocumentCommand \ghs { somm } +\NewDocumentCommand \ghs {somm} { \group_begin: - \IfBooleanF { #1 } { \bool_set_true:N \l__ghsystem_show_number_bool } - \IfNoValueF { #2 } { \keys_set:nn { chemmacros / ghsystem } { #2 } } - \ghsystem_read_args:nn { #3 } { #4 } + \IfBooleanF {#1} { \bool_set_true:N \l__ghsystem_show_number_bool } + \IfNoValueF {#2} { \keys_set:nn {ghsystem} {#2} } + \ghsystem_read_args:nn {#3} {#4} \group_end: } \cs_new:Nn \ghsystem_read_args:nn { - \__ghsystem_get_type:nN { #1 } \l__ghsystem_tmpa_tl - \prop_get:cnNTF { l__ghsystem_ \l__ghsystem_tmpa_tl _prop } { #2 } \l__ghsystem_tmpb_tl + \__ghsystem_get_type:nN {#1} \l__ghsystem_tmpa_tl + \prop_get:cxNTF + { l__ghsystem_ \l__ghsystem_tmpa_tl _prop } + {\l_ghsystem_current_language_str - #2} + \l__ghsystem_tmpb_tl { - \__ghsystem_is_combination:nn { #1 } { #2 } + \__ghsystem_is_combination:nn {#1} {#2} \bool_if:NF \l__ghsystem_hide_statement_bool { \tl_use:N \l__ghsystem_tmpb_tl } } - { \ghsystem_msg:nnxx { ghsystem } { statements } { #1 } { #2 } } + { \msg_error:nnnn {ghsystem} {statements} {#1} {#2} } } \cs_new_protected:Nn \__ghsystem_get_type:nN { - \tl_if_eq:nnT { #1 } { h } { \tl_set:Nn #2 { h } } - \tl_if_eq:nnT { #1 } { H } { \tl_set:Nn #2 { h } } - \tl_if_eq:nnT { #1 } { euh } { \tl_set:Nn #2 { euh } } - \tl_if_eq:nnT { #1 } { Euh } { \tl_set:Nn #2 { euh } } - \tl_if_eq:nnT { #1 } { euH } { \tl_set:Nn #2 { euh } } - \tl_if_eq:nnT { #1 } { eUh } { \tl_set:Nn #2 { euh } } - \tl_if_eq:nnT { #1 } { EUh } { \tl_set:Nn #2 { euh } } - \tl_if_eq:nnT { #1 } { EuH } { \tl_set:Nn #2 { euh } } - \tl_if_eq:nnT { #1 } { eUH } { \tl_set:Nn #2 { euh } } - \tl_if_eq:nnT { #1 } { EUH } { \tl_set:Nn #2 { euh } } - \tl_if_eq:nnT { #1 } { p } { \tl_set:Nn #2 { p } } - \tl_if_eq:nnT { #1 } { P } { \tl_set:Nn #2 { p } } + \tl_set:Nx #2 { \str_lower_case:n {#1} } + \str_case:VnF #2 + { {h} {} {p} {} {euh} {} } + { \msg_error:nnn {ghsystem} {unknown-type} {#2} } } - + \cs_new:Nn \__ghsystem_is_combination:nn { - \tl_if_in:nnTF { #2 } { + } + \tl_if_in:nnTF {#2} { + } { \__ghsystem_is_combination_aux_i:w #1,#2 \q_stop } { \__ghsystem_is_combination_aux_ii:w #1,#2 \q_stop } } @@ -447,13 +424,13 @@ { \bool_if:NT \l__ghsystem_show_number_bool { - \tl_to_uppercase:n { #1 } + \tl_upper_case:n {#1} \tl_use:N \l__ghsystem_number_space_tl #2 ~ + ~ - \tl_if_in:nnTF { #3 } { + } + \tl_if_in:nnTF {#3} { + } { \__ghsystem_is_combination_aux_iii:w #1,#3 \q_stop } { - \tl_to_uppercase:n { #1 } + \tl_upper_case:n {#1} \tl_use:N \l__ghsystem_number_space_tl #3 \bool_if:NF \l__ghsystem_hide_statement_bool { : ~ } } @@ -464,7 +441,7 @@ { \bool_if:NT \l__ghsystem_show_number_bool { - \tl_to_uppercase:n { #1 } + \tl_upper_case:n {#1} \tl_use:N \l__ghsystem_number_space_tl #2 \bool_if:NF \l__ghsystem_hide_statement_bool { : ~ } } @@ -474,10 +451,10 @@ { \bool_if:NT \l__ghsystem_show_number_bool { - \tl_to_uppercase:n { #1 } + \tl_upper_case:n {#1} \tl_use:N \l__ghsystem_number_space_tl #2 ~ + ~ - \tl_to_uppercase:n { #1 } + \tl_upper_case:n {#1} \tl_use:N \l__ghsystem_number_space_tl #3 \bool_if:NF \l__ghsystem_hide_statement_bool { : ~ } } @@ -486,73 +463,115 @@ % --------------------------------------------------------------------------- % % list all statements in a table % -\NewDocumentCommand \ghslistall { o } +\NewDocumentCommand \ghslistall {o} { \group_begin: - \IfNoValueF { #1 } { \keys_set:nn { chemmacros / ghsystem } { #1 } } + \IfNoValueF {#1} { \keys_set:nn {ghsystem} {#1} } \ghsystem_list_all: \group_end: } +% TODO: an neue Sprachauswahl anpassen: \cs_new_protected:Npn \ghsystem_list_all: { \int_zero:N \l__ghsystem_tmpa_int \int_zero:N \l__ghsystem_tmpb_int - \prop_map_inline:Nn \l__ghsystem_p_prop { \int_incr:N \l__ghsystem_tmpa_int } + \prop_map_inline:Nn \l__ghsystem_p_prop + { \int_incr:N \l__ghsystem_tmpa_int } \dim_set_eq:NN \extrarowheight \l__ghsystem_table_line_sep_dim - \begin { longtable } + \begin {longtable} { - l + @{} + p{ + \dim_eval:n { + \linewidth -\tabcolsep -\LTpre - \LTpost + -\l__ghsystem_list_all_column_width_dim + } + } >{ \l__ghsystem_list_all_column_format_tl } p{ \l__ghsystem_list_all_column_width_dim } + @{} } - \caption [ \l__ghsystem_table_caption_short_tl ] + \caption [ \l_ghsystem_table_caption_short_tl ] { - \l__ghsystem_table_caption_tl + \l_ghsystem_table_caption_tl \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 - \multicolumn{2}{r} { \textit { \l__ghsystem_table_next_page_tl } } + \multicolumn{2}{r} { \textit { \l_ghsystem_table_next_page_tl } } \endfoot \l__ghsystem_table_foot_rule_tl \multicolumn{2}{r} { } \endlastfoot \prop_map_inline:Nn \l__ghsystem_h_prop - { \__ghsystem_read_number:nn { H } { ##1 } & ##2 \\ } + { + \ghsystem_if_statement_in_current_language:nT {##1} + { \__ghsystem_read_number:nn {H} {##1} & ##2 \\ } + } \prop_map_inline:Nn \l__ghsystem_euh_prop - { \__ghsystem_read_number:nn { EUH } { ##1 } & ##2 \\ } + { + \ghsystem_if_statement_in_current_language:nT {##1} + { \__ghsystem_read_number:nn {EUH} {##1} & ##2 \\ } + } \int_zero:N \l__ghsystem_tmpa_int - \prop_map_inline:Nn \l__ghsystem_p_prop { \int_gincr:N \l__ghsystem_tmpa_int } + \prop_map_inline:Nn \l__ghsystem_p_prop + { + \ghsystem_if_statement_in_current_language:nT {##1} + { \int_gincr:N \l__ghsystem_tmpa_int } + } \int_zero:N \l__ghsystem_tmpb_int \prop_map_inline:Nn \l__ghsystem_p_prop { - \int_gincr:N \l__ghsystem_tmpb_int - \__ghsystem_read_number:nn { P } { ##1 } & ##2 - \int_compare:nNnT { \l__ghsystem_tmpb_int } < { \l__ghsystem_tmpa_int } { \\ } + \ghsystem_if_statement_in_current_language:nT {##1} + { + \int_gincr:N \l__ghsystem_tmpb_int + \__ghsystem_read_number:nn {P} {##1} & ##2 + \int_compare:nNnT + { \l__ghsystem_tmpb_int } < { \l__ghsystem_tmpa_int } + { \\ } + } } - \end { longtable } + \end {longtable} + } + +\prg_new_protected_conditional:Npnn + \ghsystem_if_statement_in_current_language:n #1 {T,F,TF} + { + % is it safe to check str with \tl_ functions? interface3 seems to + % implicate it… + \tl_if_in:nVTF {#1} \l_ghsystem_current_language_str + { \prg_return_true: } + { \prg_return_false: } } +\cs_generate_variant:Nn \tl_if_in:nnTF {nV} -\cs_new:Nn \__ghsystem_read_number:nn +\cs_new_protected:Nn \__ghsystem_read_number:nn { - \tl_if_in:nnTF { #2 } { + } + \tl_if_in:nnTF {#2} { + } { \__ghsystem_read_number_aux_i:w #1 , #2 \q_stop } - { #1 \tl_use:N \l__ghsystem_number_space_tl #2 } + { + #1 + \tl_use:N \l__ghsystem_number_space_tl + \__ghsystem_extract_number:n {#2} + } } -\cs_new:Npn \__ghsystem_read_number_aux_i:w #1,#2+#3\q_stop +\cs_new_protected:Npn \__ghsystem_read_number_aux_i:w #1,#2+#3\q_stop { - #1 \tl_use:N \l__ghsystem_number_space_tl #2 ~+~ - \tl_if_in:nnTF { #3 } { + } + #1 + \tl_use:N \l__ghsystem_number_space_tl + \__ghsystem_extract_number:n {#2} + \c_space_tl + \c_space_tl + \tl_if_in:nnTF {#3} { + } { \__ghsystem_read_number_aux_ii:w #1,#3 \q_stop } { #1#3 } } @@ -560,36 +579,38 @@ \cs_new:Npn \__ghsystem_read_number_aux_ii:w #1,#2+#3\q_stop { #1#2 ~+~ #1#3 } +\cs_new_protected:Npn \__ghsystem_extract_number:n #1 + { + \exp_after:wN \cs_set:Npn + \exp_after:wN \__ghsystem_extract_number_aux:w + \l_ghsystem_current_language_str - ##1 \q_stop {##1} + \__ghsystem_extract_number_aux:w #1 \q_stop + } + % --------------------------------------------------------------------------- % % the picture command % \ghspic[]{} % % test for compilation engine/mode: -\pdftex_if_engine:T { \bool_set_true:N \l__ghsystem_engine_pdftex_bool } -\xetex_if_engine:T { \bool_set_true:N \l__ghsystem_engine_xetex_bool } -\luatex_if_engine:T { \bool_set_true:N \l__ghsystem_engine_luatex_bool } - -\bool_new:N \l__ghsystem_picture_directory_bool - -\bool_if:NT \l__ghsystem_engine_pdftex_bool +\sys_if_engine_pdftex:T { \ifpdf - \tl_set:Nn \l__ghsystem_picture_type_tl { pdf } + \tl_set:Nn \l__ghsystem_picture_type_tl {pdf} \else - \tl_set:Nn \l__ghsystem_picture_type_tl { eps } + \tl_set:Nn \l__ghsystem_picture_type_tl {eps} \fi } -\bool_if:NT \l__ghsystem_engine_xetex_bool - { \tl_set:Nn \l__ghsystem_picture_type_tl { pdf } } -\bool_if:NT \l__ghsystem_engine_luatex_bool - { \tl_set:Nn \l__ghsystem_picture_type_tl { pdf } } +\sys_if_engine_xetex:T + { \tl_set:Nn \l__ghsystem_picture_type_tl {pdf} } +\sys_if_engine_luatex:T + { \tl_set:Nn \l__ghsystem_picture_type_tl {pdf} } % the command: -\NewDocumentCommand \ghspic { om } +\NewDocumentCommand \ghspic {om} { \group_begin: - \IfNoValueF { #1 } { \keys_set:nn { chemmacros / ghsystem } { #1 } } - \ghsystem_pic:n { #2 } + \IfNoValueF {#1} { \keys_set:nn {ghsystem} {#1} } + \ghsystem_pic:n {#2} \group_end: } @@ -609,13 +630,15 @@ % -------------------------------------------------------------------------- % options and setup -\ProcessKeysOptions{ chemmacros / ghsystem } - \cs_new_protected:Npn \ghsystem_setup:n #1 - { \keys_set:nn { chemmacros / ghsystem } { #1 } } + { \keys_set:nn {ghsystem} {#1} } + +\NewDocumentCommand \ghssetup {m} + { \ghsystem_setup:n {#1} } + +\chemmacros_load_module:n {nomenclature} -\NewDocumentCommand \ghssetup { m } - { \ghsystem_setup:n { #1 } } +\chemmacros_integrate_package:nnn {} {ghsystem} {2016/01/11} \tex_endinput:D @@ -625,7 +648,8 @@ VERSION HISTORY (following a request by Karl Berry for TeXlive) 2012/02/05 - version 3.0c - renamed pictogram files (following a request by Karl Berry for TeXlive) -2012/05/13 - version 3.3a - Italian translations of the H, EUH and P statements +2012/05/13 - version 3.3a - Italian translations of the H, EUH and P + statements, thanks to Jonas Rivetti 2012/05/18 - version 3.3b - compatibility with MiKTeX 2012/05/18 - version 3.3c - fix in the `ghsystem/language' option 2012/07/24 - version 3.3d - additional picture file type `pdf' @@ -646,8 +670,16 @@ VERSION HISTORY 2014/04/13 - version 4.5a - added Spanish translations, thanks to Ignacio Fernández Galván 2014/06/30 - version 4.5b - adapt to deprecated expl3 function -2014/08/07 - version 4.6 - split from `chemmacros' bundle as independent +2014/08/08 - version 4.6 - split from `chemmacros' bundle as independent package +2016/01/15 - version 4.7 - adapt to changes in expl3 + - adapt to v5 of chemmacros + - small changes to table preamble in \ghslistall + - set table column width of \ghslistall at begin + document when we can be sure \linewidth has a + proper value +2016/07/16 - version 4.8 - French translations, thanks to Bréal Frédéric and + Beaude Aurélien % -------------------------------------------------------------------------- % TODO: -- cgit v1.2.3