diff options
Diffstat (limited to 'graphics/pgf/contrib/pgf-periodictable/pgfPT.process.language.tex')
-rw-r--r-- | graphics/pgf/contrib/pgf-periodictable/pgfPT.process.language.tex | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/pgf-periodictable/pgfPT.process.language.tex b/graphics/pgf/contrib/pgf-periodictable/pgfPT.process.language.tex new file mode 100644 index 0000000000..82f6157158 --- /dev/null +++ b/graphics/pgf/contrib/pgf-periodictable/pgfPT.process.language.tex @@ -0,0 +1,171 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% -------------------------------------------------------------------------------------------------- +% subfile of pgf-PeriodicTable package ---------------------------------------------------------- +% -------------------------------------------------------------------------------------------------- +% «The macros for process the language(s) data to display in the Periodic Table» ------------ +% -------------------------------------------------------------------------------------------------- +% Labels available in: pt, en, fr, de, it, es, br +% -------------------------------------------------------------------------------------------------- +% \pgfPTsetLanguage{<language flag>} +% -------------------------------------------------------------------------------------------------- +% Used to change the default language +% Language flags: +% - pt, Portuguese (Portugal) +% - en, English +% - fr, French +% - de, German +% - it, Italian +% - es, Spanish +% - br, Portuguese (Brazil) +\def\pgfPTsetLanguage#1{% +\pgfPT@validLang{#1}% +\ifx\pgfPT@langOK\undefined\relax% +\PackageError{pgfPT}{invalid language flag '#1'. It will be ignored (default 'en'\space will be used)}{}% +\xdef\pgfPT@defaultLanguage{en}% +\else\xdef\pgfPT@defaultLanguage{#1}\global\let\pgfPT@langOK\undefined\relax% +\fi}% +% -------------------------------------------------------------------------------------------------- +% List of available languages +% -------------------------------------------------------------------------------------------------- +\def\pgfPT@languagesList{pt,en,fr,de,it,es,br}% +% -------------------------------------------------------------------------------------------------- +% Validating language +\def\pgfPT@validLang#1{\ignorespaces% +\edef\pgfPT@lang{#1}% +\@for\@pgfPT@tmp:=\pgfPT@languagesList\do{% + \edef\pgfPT@currLang{\@pgfPT@tmp}% + \ifx\pgfPT@lang\pgfPT@currLang\relax\xdef\pgfPT@langOK{OK}\fi% + }% +}% +% -------------------------------------------------------------------------------------------------- +% +% ######################################################## +% macros for processing Periodic Table Labels +% ######################################################## +% +% -------------------------------------------------------------------------------------------------- +% DATA @ pgfPT.labels.tex -> +% \pgfPT@labels@titulo{Tabela Periódica dos Elementos/pt,Periodic Table of Elements/en,Periodic... +% \pgfPT@labels@La{... +% \pgfPT@labels@... +% +% -------------------------------------------------------------------------------------------------- +% \pgfPT@setlabels[languages list]{label} +% OUTPUT: +% \pgfPT@labels@<label>@lang1{txt} , \pgfPT@labels@<label>@lang2{txt} , ... +% -------------------------------------------------------------------------------------------------- +\def\pgfPT@setlabels{\@ifnextchar[\@pgfPT@setlabels{\@pgfPT@setlabels[\pgfPT@defaultLanguage]}}% +\def\@pgfPT@setlabels[#1]#2{\ignorespaces% +\@for\@pgfPT@lang:=#1\do{% + \pgfPT@validLang{\@pgfPT@lang}% + \ifx\pgfPT@langOK\undefined\relax% + \PackageError{pgfPT}{invalid language flag '\@pgfPT@lang'. It will be ignored...}{}% + \else% + \global\let\pgfPT@langOK\undefined\relax% + \@pgfPT@buildlabelmacro{\@pgfPT@lang}{#2}% + \fi% + }% +}% +% Aux macro +% \@pgfPT@buildlabelmacro{language}{label} +% OUTPUT: +% \pgfPT@labels@<label>@lang{txt} +\def\@pgfPT@buildlabelmacro#1#2{\ignorespaces% +\edef\@pgf@tmplist{\csname pgfPT@labels@#2\endcsname}% +\edef\@pgfPT@testlanguage{#1}% +\@for\@pgfPT@tmp:=\@pgf@tmplist\do{% + \expandafter\@pgfPT@list@info\@pgfPT@tmp\relax% + \ifx\@pgfPT@testlanguage\@pgfPT@list@info@ii\expandafter\edef\csname pgfPT@labels@#2@#1\endcsname{\@pgfPT@list@info@i}\fi% + }% +}% +% -------------------------------------------------------------------------------------------------- +% \pgfPT@setacro[languages list]{label} +% OUTPUT: +% \pgfPT@acro@@{txt} +% -------------------------------------------------------------------------------------------------- +\def\pgfPT@setacro{\@ifnextchar[\@pgfPT@setacro{\@pgfPT@setacro[\pgfPT@defaultLanguage]}}% +\def\@pgfPT@setacro[#1]#2{\ignorespaces% +\expandafter\@pgfPT@setacro@setlang#1, \relax% +\pgfPT@validLang{\@pgfPT@setacro@lang}% +\ifx\pgfPT@langOK\undefined\relax% + \PackageError{pgfPT}{invalid language flag '\@pgfPT@setacro@lang'. It will be ignored...}{}% +\else% + \global\let\pgfPT@langOK\undefined\relax% + \edef\pgfPT@acrolist{\csname pgfPT@acr@#2\endcsname}% + \edef\@pgfPT@testa{\@pgfPT@setacro@lang}% + \foreach \@@pgfPT@acro/\@@pgfPT@langflag in \pgfPT@acrolist{% + \edef\@pgfPT@testb{\@@pgfPT@langflag}\relax% + \ifx\@pgfPT@testa\@pgfPT@testb\relax\xdef\pgfPT@theacro{\@@pgfPT@acro}\relax\breakforeach\fi% + }% +\fi% +}% +\def\@pgfPT@setacro@setlang#1,#2\relax{\edef\@pgfPT@setacro@lang{#1}}% +% -------------------------------------------------------------------------------------------------- +% \pgfPT@setacroDesc[languages list]{label} +% OUTPUT: +% \pgfPT@acro@<acro>@<lang> +% -------------------------------------------------------------------------------------------------- +\def\pgfPT@setacroDesc{\@ifnextchar[\@pgfPT@setacroDesc{\@pgfPT@setacroDesc[\pgfPT@defaultLanguage]}}% +\def\@pgfPT@setacroDesc[#1]#2{\ignorespaces% +\@for\@pgfPT@lang:=#1\do{% + \pgfPT@validLang{\@pgfPT@lang}% + \ifx\pgfPT@langOK\undefined\relax% + \PackageError{pgfPT}{invalid language flag '\@pgfPT@lang'. It will be ignored...}{}% + \else% + \global\let\pgfPT@langOK\undefined\relax% + \@pgfPT@buildlabelmacro{\@pgfPT@lang}{#2}% + \fi% + }% +}% +% -------------------------------------------------------------------------------------------------- +% +% ######################################################## +% macros for processing Element Names +% ######################################################## +% +% -------------------------------------------------------------------------------------------------- +% DATA @ pgfPT.names.tex -> +% \pgfPT@nomes@i{Hidrogénio/pt,Hydrogen/en,... +% \pgfPT@nomes@ii{... +% +% -------------------------------------------------------------------------------------------------- +% \pgfPT@getnames[languages list]{Z} +% OUTPUT: +% \pgfPTdata@name@<roman Z>@lang{name} +% -------------------------------------------------------------------------------------------------- +\def\pgfPT@setnames{\@ifnextchar[\@pgfPT@setnames{\@pgfPT@setnames[\pgfPT@defaultLanguage]}}% +\def\@pgfPT@setnames[#1]#2{\ignorespaces% +\@for\@pgfPT@lang:=#1\do{% + \pgfPT@validLang{\@pgfPT@lang}% + \ifx\pgfPT@langOK\undefined\relax% + \PackageError{pgfPT}{invalid language flag '\@pgfPT@lang'. It will be ignored...}{}% + \else% + \global\let\pgfPT@langOK\undefined\relax% + \@pgfPT@buildnamemacro{\@pgfPT@lang}{#2}% + \fi% + }% +}% +% Aux macro +% \@pgfPT@buildnamemacro{language}{Z} +% OUTPUT: +% \pgfPTdata@name@<roman Z>@lang{txt} +\def\@pgfPT@buildnamemacro#1#2{\ignorespaces% +\edef\@pgf@tmplist{\csname pgfPT@nomes@\@roman{#2}\endcsname}% +\edef\@pgfPT@testlanguage{#1}% +\@for\@pgfPT@tmp:=\@pgf@tmplist\do{% + \expandafter\@pgfPT@list@info\@pgfPT@tmp\relax% + \ifx\@pgfPT@testlanguage\@pgfPT@list@info@ii\expandafter\edef\csname pgfPTdata@name@\@roman{#2}@#1\endcsname{\@pgfPT@list@info@i}\fi% + }% +}% +% +% ######################################################## +% macros for common processing +% ######################################################## +% -------------------------------------------------------------------------------------------------- +% \@pgfPT@list@info list element 1/list element 2\relax +% OUTPUT: +% \@pgfPT@list@info@i{list element 1} +% \@pgfPT@list@info@ii{list element 2} +% ---------------------------------------------------------------------------------------------------------------- +\def\@pgfPT@list@info#1/#2\relax{\edef\@pgfPT@list@info@i{#1}\edef\@pgfPT@list@info@ii{#2}}% +\endinput |