summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/chemmacros/chemmacros.module.lang.code.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/chemmacros/chemmacros.module.lang.code.tex
Initial commit
Diffstat (limited to 'macros/latex/contrib/chemmacros/chemmacros.module.lang.code.tex')
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.lang.code.tex177
1 files changed, 177 insertions, 0 deletions
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.lang.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.lang.code.tex
new file mode 100644
index 0000000000..b9dea089d2
--- /dev/null
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.lang.code.tex
@@ -0,0 +1,177 @@
+% --------------------------------------------------------------------------
+%
+% the CHEMMACROS package -- module: `lang'
+%
+% --------------------------------------------------------------------------
+% Clemens Niederberger
+% --------------------------------------------------------------------------
+% https://github.org/cgnieder/chemmacros/
+% contact@mychemistry.eu
+% --------------------------------------------------------------------------
+% If you have any ideas, questions, suggestions or bugs to report, please
+% feel free to contact me.
+% --------------------------------------------------------------------------
+% Copyright 2011-2017 Clemens Niederberger
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Clemens Niederberger.
+% --------------------------------------------------------------------------
+\ChemModule{lang}{2016/05/31 language settings for chemmacros}
+
+\RequirePackage{translations}
+
+\msg_new:nnn {chemmacros} {language-not-defined}
+ {
+ You~ chose~ the~ language~ `#1'~ which~ is~ not~ defined~ by~ chemmacros.~
+ `english'~ is~ used~ instead.~ If~ you~ just~ mistyped~ try~ again!~
+ Otherwise~ contact~ the~ author~ and~ he'll~ probably~ add~ your~ language.
+ }
+
+% --------------------------------------------------------------------------
+% language settings:
+\bool_new:N \l__chemmacros_language_auto_bool
+\bool_set_true:N \l__chemmacros_language_auto_bool
+% this token list will hold the chosen language for chemmacros; since the
+% language is either chosen automatically or by option it is only available at
+% begin document
+\tl_new:N \l_chemmacros_language_tl
+\tl_set:Nn \l_chemmacros_language_tl {english}
+\tl_new:N \l__chemmacros_current_language_tl
+
+\tl_const:Nx \c__chemmacros_keyword_prefix_tl
+ { \chemmacros_if_compatibility:nnT {>=} {5.7} {chem-keyword-} }
+
+\prop_new:N \g_chemmacros_translations_prop
+
+% translate the key #1
+\cs_new:Npn \chemmacros_translate:n #1
+ {
+ \bool_if:NTF \l__chemmacros_language_auto_bool
+ { \GetTranslation { \c__chemmacros_keyword_prefix_tl #1 } }
+ {
+ \GetTranslationFor
+ {\l_chemmacros_language_tl}
+ { \c__chemmacros_keyword_prefix_tl #1 }
+ }
+ }
+
+\DeclareExpandableDocumentCommand \ChemTranslate {m}
+ { \chemmacros_translate:n {#1} }
+
+\chemmacros_define_global_keys:n
+ {
+ language .value_required:n = true ,
+ language .code:n =
+ \tl_if_eq:nnTF {#1} {auto}
+ { \bool_set_true:N \l__chemmacros_language_auto_bool }
+ {
+ \bool_set_false:N \l__chemmacros_language_auto_bool
+ \tl_set:Nn \l__chemmacros_current_language_tl {#1}
+ } ,
+ language .initial:n = auto
+ }
+
+\ChemCompatibilityTo{5.3}
+\chemmacros_define_global_keys:n
+ {
+ german .meta:n = { language = german } ,
+ ngerman .meta:n = { language = ngerman }
+ }
+\EndChemCompatibility
+
+\AtBeginDocument{
+ \bool_if:NTF \l__chemmacros_language_auto_bool
+ {
+ \tl_set:Nx \l_chemmacros_language_tl
+ { \@trnslt@language{\@trnslt@current@language} }
+ }
+ {
+ \tl_set_eq:NN
+ \l_chemmacros_language_tl
+ \l__chemmacros_current_language_tl
+ }
+}
+
+% --------------------------------------------------------------------------
+\cs_new_protected:Npn \__chemmacros_declare_translation:nw #1#2=#3\q_stop
+ {
+ \tl_set:Nx \l__chemmacros_tmpa_tl { \tl_trim_spaces:n {#2} }
+ \tl_set:Nx \l__chemmacros_tmpb_tl { \tl_trim_spaces:n {#3} }
+ \use:x
+ {
+ \chemmacros_declare_translation:nnn
+ { \exp_not:n {#1} }
+ { \exp_not:V \l__chemmacros_tmpa_tl }
+ { \exp_not:V \l__chemmacros_tmpb_tl }
+ }
+ }
+
+% #1: key
+% #2: lang
+% #3: translation
+\cs_new_protected:Npn \chemmacros_declare_translation:nnn #1#2#3
+ {
+ \declaretranslation
+ {#2}
+ { \c__chemmacros_keyword_prefix_tl #1 }
+ {#3}
+ \prop_gput:Nnn \g_chemmacros_translations_prop {#1(#2)} {#3}
+ }
+\cs_generate_variant:Nn \chemmacros_declare_translation:nnn {V}
+
+% #1: key
+% #2: csv list: { <lang1> = <translation1> , <lang2> = <translation2> }
+\cs_new_protected:Npn \chemmacros_declare_translations:nn #1#2
+ {
+ \clist_map_inline:nn {#2}
+ { \__chemmacros_declare_translation:nw {#1} ##1 \q_stop }
+ }
+
+\NewDocumentCommand \DeclareChemTranslations {mm}
+ { \chemmacros_declare_translations:nn {#1} {#2} }
+\@onlypreamble \DeclareChemTranslations
+
+\NewDocumentCommand \DeclareChemTranslation {mmm}
+ { \chemmacros_declare_translation:nnn {#1} {#2} {#3} }
+\@onlypreamble \DeclareChemTranslation
+
+\cs_new:Npn \__chemmacros_parse_translate_list_entry:nnn #1#2#3 {}
+
+\cs_new_protected:Npn \__chemmacros_parse_translate_list_entry:www #1(#2)\q_mark#3\q_stop
+ { \__chemmacros_parse_translate_list_entry:nnn {#1} {#2} {#3} }
+
+\cs_new_protected:Npn \chemmacros_for_all_translations_do:n #1
+ {
+ \cs_set:Npn \__chemmacros_parse_translate_list_entry:nnn ##1##2##3 {#1}
+ \prop_map_inline:Nn \g_chemmacros_translations_prop
+ { \__chemmacros_parse_translate_list_entry:www ##1 \q_mark ##2 \q_stop }
+ }
+
+\ChemCompatibilityFrom{5.7}
+\NewDocumentCommand \ForAllChemTranslationsDo {+m}
+ { \chemmacros_for_all_translations_do:n {#1} }
+\EndChemCompatibility
+
+% --------------------------------------------------------------------------
+\tex_endinput:D
+
+2015/11/17 - remove options `german' and `ngerman', starting with v5.3
+2016/02/03 - adapt to changes in `acid-base' module
+2016/04/27 - additions/changes to reaction and scheme translations
+ - \chemmacros_declare_translation:nnn and
+ \chemmacros_declare_translations:nn
+ - \DeclareChemTranslation and \DeclareChemTranslations
+ - moved translations from lang module to the corresponding modules
+ they belong to
+2016/05/31 - add prefix string to translation keywords
+ - add logging of translation keywords
+ - \ForAllChemTranslationsDo