summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-06-24 21:32:31 +0000
committerKarl Berry <karl@freefriends.org>2015-06-24 21:32:31 +0000
commit6e8193718b99bbc13571c386278c30b325beea83 (patch)
treee85519e06290ce8a7744f2232c8ac581640e0e64
parent19c2f5408d14c02a9e40275fa0a918e2092aed21 (diff)
elements (24jun15)
git-svn-id: svn://tug.org/texlive/trunk@37660 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/elements/README34
-rw-r--r--Master/texmf-dist/doc/latex/elements/elements_en.pdfbin0 -> 417509 bytes
-rw-r--r--Master/texmf-dist/doc/latex/elements/elements_en.tex294
-rw-r--r--Master/texmf-dist/tex/latex/elements/elements.sty662
-rw-r--r--Master/texmf-dist/tex/latex/elements/elements_names_english.def114
-rw-r--r--Master/texmf-dist/tex/latex/elements/elements_names_french.def114
-rw-r--r--Master/texmf-dist/tex/latex/elements/elements_names_german.def114
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/elements.tlpsrc0
10 files changed, 1334 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/elements/README b/Master/texmf-dist/doc/latex/elements/README
new file mode 100644
index 00000000000..ce55bf650e2
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/elements/README
@@ -0,0 +1,34 @@
+--------------------------------------------------------------------------
+the ELEMENTS package
+
+ retrieve different properties of chemical elements
+
+--------------------------------------------------------------------------
+Clemens Niederberger
+Web: https://github.com/cgnieder/elements/
+E-Mail: contact@mychemistry.eu
+--------------------------------------------------------------------------
+Copyright 2015 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.
+--------------------------------------------------------------------------
+The elements package consists of the files
+ - elements.sty
+ - elements_en.tex, elements_en.pdf
+ - elements_names_english.def, elements_names_german.def,
+ elements_names_french.def
+ - README
+--------------------------------------------------------------------------
+If you have any ideas, questions, suggestions or bugs to report, please
+feel free to contact me.
+--------------------------------------------------------------------------
diff --git a/Master/texmf-dist/doc/latex/elements/elements_en.pdf b/Master/texmf-dist/doc/latex/elements/elements_en.pdf
new file mode 100644
index 00000000000..286a8d7763f
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/elements/elements_en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/elements/elements_en.tex b/Master/texmf-dist/doc/latex/elements/elements_en.tex
new file mode 100644
index 00000000000..fa71a62a894
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/elements/elements_en.tex
@@ -0,0 +1,294 @@
+% arara: pdflatex
+% arara: biber
+% arara: pdflatex
+% arara: pdflatex
+% --------------------------------------------------------------------------
+% the ELEMENTS package
+%
+% retrieve different properties of chemical elements
+%
+% --------------------------------------------------------------------------
+% Clemens Niederberger
+% Web: http://www.mychemistry.eu/forums/forum/elements/
+% E-Mail: contact@mychemistry.eu
+% --------------------------------------------------------------------------
+% Copyright 2015 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.
+% --------------------------------------------------------------------------
+% If you have any ideas, questions, suggestions or bugs to report, please
+% feel free to contact me.
+% --------------------------------------------------------------------------
+\documentclass[load-preamble+]{cnltx-doc}
+\usepackage[utf8]{inputenc}
+\usepackage{elements}
+
+\setcnltx{
+ package = elements ,
+ authors = Clemens Niederberger ,
+ email = contact@mychemistry.eu ,
+ url = http://www.mychemistry.eu/forums/forum/elements/ ,
+ add-cmds = {
+ atomicnumber,
+ DeclareAtomIsotopes,
+ DeclareAtomName,
+ DeclareAtomSymbol,
+ DeclareElectronDistribution,
+ elconf,
+ elementname,
+ elementsymbol,
+ saveatomicnumber,
+ saveelementisotopes,
+ saveelementname,
+ saveelementsymbol,
+ savemainelementisotope,
+ setatomisotopes,
+ setatomname,
+ setatomsymbol,
+ setelectrondistribution,
+ writeelconf,
+ Z
+ } ,
+ add-silent-cmds = {
+ endhead, foo, ifnumless, LTleft, LTright, midrule, theelement, toprule,
+ whileboolexpr
+ } ,
+ add-silent-envs = { longtable, landscape } ,
+ abstract = {%
+ This package provides means for retrieving properties of chemical elements
+ like atomic number, element symbol, element name, electron distribution or
+ isotope number. Properties are defined for the elements up to the atomic
+ number~112.
+
+ This package is a spin-off of the package \pkg{bohr}~\cite{pkg:bohr} by
+ the same author.
+ } ,
+ index-setup = {
+ othercode = \footnotesize ,
+ level = \addsec ,
+ noclearpage
+ } ,
+ makeindex-setup = {
+ columns = 3 ,
+ columnsep = 1em
+ }
+}
+
+\usepackage{array,booktabs,longtable}
+\usepackage{lscape}
+
+\defbibheading{bibliography}{\addsec{References}}
+
+\begin{document}
+
+\section{Licence and Requirements}
+\license
+
+\elements\ loads the packages \pkg{etoolbox}~\cite{pkg:etoolbox} and
+\pkg{translations}~\cite{pkg:translations}.
+
+\section{Element Names}
+
+\begin{commands}
+ \command{elementname}[\Marg{\meta{atomic number}|\meta{element symbol}}]
+ Prints the element name of a given element as defined with \cs{setatomname}.
+ \command{setatomname}[\oarg{alt.\@ name}\marg{atomic number}\marg{element
+ name}]
+ Define or redefine the name of an element. If \meta{element name}
+ contains non-ascii symbols the optional argument \meta{alt.\@ name} must
+ be given. In this case \meta{alt.\@ name} must be used in \elements'
+ other macros where an element's name can be given as argument.
+ \command{DeclareAtomName}[\oarg{alt.\@ name}\marg{atomic
+ number}\marg{element name}]
+ This is the same as \cs{setatomname} but used before begin document or in
+ packages/classes.
+ \command{saveelementname}[\marg{cs}\Marg{\meta{atomic number}|\meta{element
+ symbol}|\meta{element name}}]
+ Saves the name of the given element as replacement text for the macro
+ \meta{cs}.
+\end{commands}
+
+\begin{example}[side-by-side]
+ \elementname{Cu} \par
+ \elementname{11} \par
+ \saveelementname\foo{28}
+ \ttfamily\meaning\foo
+\end{example}
+
+\section{Element Symbols}
+
+\begin{commands}
+ \command{elementsymbol}[\Marg{\meta{atomic number}|\meta{element name}}]
+ Prints the element symbol of a given element as defined with \cs{setatomsymbol}.
+ \command{setatomsymbol}[\marg{atomic number}\marg{element symbol}]
+ Define or redefine the symbol of an element.
+ \command{DeclareAtomSymbol}[\marg{atomic number}\marg{element symbol}]
+ This is the same as \cs{setatomsymbol} but used before begin document or in
+ packages/classes.
+ \command{saveelementsymbol}[\marg{cs}\Marg{\meta{atomic number}|\meta{element
+ symbol}|\meta{element name}}]
+ Saves the symbol of the given element as replacement text for the macro
+ \meta{cs}.
+\end{commands}
+
+\begin{example}[side-by-side]
+ \elementsymbol{13} \par
+ \elementsymbol{Sulfur} \par
+ \saveelementsymbol\foo{83}
+ \ttfamily\meaning\foo
+\end{example}
+
+\section{Atomic Numbers}
+
+\begin{commands}
+ \command{atomicnumber}[\Marg{\meta{element symbol}|\meta{element name}}]
+ Prints the atomic number of a given element.
+ \command{Z}[\Marg{\meta{element symbol}|\meta{element name}}]
+ An alias of \cs{atomicnumber} but only defined at begin document and only
+ if it isn't defined by any other package.
+ \command{saveatomicnumber}[\marg{cs}\Marg{\meta{atomic number}|\meta{element
+ symbol}|\meta{element name}}]
+ Saves the atomic number of the given element as replacement text for the
+ macro \meta{cs}.
+\end{commands}
+
+\begin{example}[side-by-side]
+ \atomicnumber{U} \par
+ \atomicnumber{Chlorine} \par
+ \saveatomicnumber\foo{Kr}
+ \ttfamily\meaning\foo
+\end{example}
+
+\section{Electron Configuration}
+
+\begin{commands}
+ \command{elconf}[\Marg{\meta{atomic number}|\meta{element
+ symbol}|\meta{element name}}]
+ Typesets the electron configuration of the given element.
+ \command{writeelconf}[\marg{electron distribution}]
+ Typesets the electron distribution \meta{electron distribution}. The
+ input is the same as described below for \cs{setelectrondistribution}.
+ \command{setelectrondistribution}[\marg{atomic number}\marg{electron distribution}]
+ This set the electron distribution associated with the atom number
+ \meta{atomic number}. \meta{electron distribution} is a comma-separated
+ list of the number of electrons placed on each shell from inner to outer
+ shell. For example \verbcode+\setelectrondistribution{3}{2,0,1}+ would
+ be an excited \elementname{3}. The number of electrons with the same
+ principal quantum number but a different angular quantum number are
+ separated with a \code{+} ordered by the angular quantum number, \ie,
+ first \emph{s}, then \emph{p}, then \emph{d}, and then \emph{f} .
+ \elementname{29}’s distribution would be declared like this: \\
+ \verbcode!\setelectrondistribution{29}{2,2+6,2+6+10,1}!. \\
+ A declaration with \verbcode!\setelectrondistribution{29}{2,8,18,1}!
+ would work but then \verbcode!\elconf{29}! would give the wrong results.
+ \command{DeclareElectronDistribution}
+ This is the same as \cs{setelectrondistribution} but used before begin
+ document or in packages/classes.
+\end{commands}
+
+\begin{example}[side-by-side]
+ \writeelconf{2,2+6,2+6+7} \par
+ \elconf{Cl}
+\end{example}
+
+There is currently \emph{no way} to get the electron configuration in the
+shortened way (\eg: [Ar]$3d^{10}4s^1$).
+
+\section{Isotope Lists}
+
+\begin{commands}
+ \command{setatomisotopes}[\marg{atomic number}\marg{isotope list}]
+ Defines or redefines the isotope list for a given element. \meta{isotope
+ list} should be a comma seperated list of integers. One of the integers
+ may be preceded with a \code{!} to mark the main isotope for the given
+ element: \verbcode+\setatomisotopes{6}{10,11,!12,13,14,15,16}+
+ \command{DeclareAtomIsotopes}[\marg{atomic number}\marg{isotope list}]
+ This is the same as \cs{setatomisotopes} but used before begin document or
+ in packages/classes.
+ \command{saveelementisotopes}[\marg{cs}\Marg{\meta{atomic number}|\meta{element
+ symbol}|\meta{element name}}]
+ Saves the isotope list of the given element as replacement text for the
+ macro \meta{cs}.
+ \command{savemainelementisotope}[\marg{cs}\Marg{\meta{atomic number}|\meta{element
+ symbol}|\meta{element name}}]
+ Saves the main isotope of the given element as replacement text for the
+ macro \meta{cs}. If the isotope list of the element contains no main
+ isotope \meta{cs} will be equivalent to \cs*{@empty}.
+\end{commands}
+
+\begin{example}[side-by-side]
+ \ttfamily
+ \saveelementisotopes\foo{C}
+ \meaning\foo
+ \savemainelementisotope\foo{C}
+ \meaning\foo
+\end{example}
+
+\clearpage
+
+\addsec{Element Properties}
+
+On the following pages a table containing the properties known to \elements\
+is printed. For those interested: the code used to get the table is as follows
+(using the packages \pkg{lscape}~\cite{pkg:lscape},
+\pkg{longtable}~\cite{pkg:longtable} and \pkg{booktabs}~\cite{pkg:booktabs}).
+
+\begin{sourcecode}[gobble=0]
+\setlength\LTleft\fill
+\setlength\LTright\fill
+\newcounter{element}
+\setcounter{element}{1}
+\begin{landscape}
+\begin{longtable}{lllll}
+ \toprule
+ Number & Symbol & Name & Main Isotope & Electron Configuration \\
+ \midrule
+ \endhead
+ \whileboolexpr{test{\ifnumless{\value{element}}{113}}}
+ {
+ \theelement &
+ \elementsymbol{\arabic{element}} &
+ \elementname{\arabic{element}} &
+ \savemainelementisotope\foo{\arabic{element}}\foo &
+ \elconf{\arabic{element}}
+ \stepcounter{element} \\
+ }
+ {}
+\end{longtable}
+\end{landscape}
+\end{sourcecode}
+
+\setlength\LTleft\fill
+\setlength\LTright\fill
+\newcounter{element}
+\setcounter{element}{1}
+\begin{landscape}
+\begin{longtable}{lllll}
+ \toprule
+ Number & Symbol & Name & Main Isotope & Electron Configuration \\
+ \midrule
+ \endhead
+ \whileboolexpr{test{\ifnumless{\value{element}}{113}}}
+ {
+ \theelement &
+ \elementsymbol{\arabic{element}} &
+ \elementname{\arabic{element}} &
+ \savemainelementisotope\foo{\arabic{element}}\foo &
+ \elconf{\arabic{element}}
+ \stepcounter{element} \\
+ }
+ {}
+\end{longtable}
+\end{landscape}
+
+\end{document}
diff --git a/Master/texmf-dist/tex/latex/elements/elements.sty b/Master/texmf-dist/tex/latex/elements/elements.sty
new file mode 100644
index 00000000000..4024abf24cb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/elements/elements.sty
@@ -0,0 +1,662 @@
+% --------------------------------------------------------------------------
+% the ELEMENTS package
+%
+% retrieve different properties of chemical elements
+%
+% --------------------------------------------------------------------------
+% Clemens Niederberger
+% Web: https://github.com/cgnieder/elements/
+% E-Mail: contact@mychemistry.eu
+% --------------------------------------------------------------------------
+% Copyright 2015 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.
+% --------------------------------------------------------------------------
+% If you have any ideas, questions, suggestions or bugs to report, please
+% feel free to contact me.
+% --------------------------------------------------------------------------
+\newcommand*\@elements@date{2015/06/014}
+\newcommand*\@elements@version{v0.1}
+\newcommand*\@elements@description{properties of chemical elements}
+
+\ProvidesPackage{elements}[%
+ \@elements@date\space
+ \@elements@version\space
+ \@elements@description
+]
+
+\usepackage{etoolbox}
+
+% an idea by Herbert Voß (http://tex.stackexchange.com/a/7183/5049):
+% make the test character an (hopefully extremely) unlikely % with
+% catcode!=14; let's make & a temporary comment char
+% save both catcodes just in case someone changed the defaults:
+\edef\@elements@tmpa{
+ \catcode`\noexpand\%=\the\catcode`\%
+ \catcode`\noexpand\&=\the\catcode`\&
+}
+\catcode`\%=3
+\catcode`\&=14
+& the test:
+\newcommand*\@elements@ifisnum[1]{&
+ \if%\ifnum9<1#1%\else_\fi&
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+\@elements@tmpa
+
+% chack for following !:
+\newrobustcmd*\@elements@ifbang[1]{\@ifnextchar!{\@firstoftwo{#1}}}
+
+% --------------------------------------------------------------------------
+% atomic numbers and element symbols and names
+\newrobustcmd*\@elements@define@atom@symbol[2]{%
+ \csdef{@elements@atom@symbol@num@\romannumeral#1}{#2}%
+ \lowercase{\csdef{@elements@atom@number@#2}}{#1}%
+}
+\newrobustcmd*\@elements@define@atom@name[3]{%
+ \csdef{@elements@atom@name@\romannumeral#1}{#2}%
+ \lowercase{\csdef{@elements@atom@name@num@#3}}{#1}%
+}
+\newrobustcmd*\@elements@define@atom@isotopes[2]{%
+ \csdef{@elements@atom@isotopes@\romannumeral#1}{#2}%
+}
+
+% #1: optional name (umlauts...)
+% #2: atomic number
+% #3: element name
+\newrobustcmd*\DeclareAtomName[3][]{%
+ \ifblank{#1}
+ {\@elements@define@atom@name{#2}{#3}{#3}}
+ {\@elements@define@atom@name{#2}{#3}{#1}}%
+}
+% \@onlypreamble\DeclareAtomName
+\newrobustcmd*\setatomname[3][]{%
+ \ifblank{#1}
+ {\@elements@define@atom@name{#2}{#3}{#3}}
+ {\@elements@define@atom@name{#2}{#3}{#1}}%
+}
+
+% #1: atomic number
+% #2: element symbol
+\newrobustcmd*\DeclareAtomSymbol[2]{%
+ \@elements@define@atom@symbol{#1}{#2}%
+}
+\@onlypreamble\DeclareAtomSymbol
+\newrobustcmd*\setatomsymbol[2]{%
+ \@elements@define@atom@symbol{#1}{#2}%
+}
+
+% #1: atomic number
+% #2: clist of isotopes, the most common one preceded with !
+\newrobustcmd*\DeclareAtomIsotopes[2]{%
+ \@elements@define@atom@isotopes{#1}{#2}%
+}
+\@onlypreamble\DeclareAtomIsotopes
+\newrobustcmd*\setatomisotopes[2]{%
+ \@elements@define@atom@isotopes{#1}{#2}%
+}
+
+\newrobustcmd*\@elements@get@atom@symbol[1]{%
+ \csuse{@elements@atom@symbol@num@\romannumeral#1}%
+}
+\newrobustcmd*\@elements@get@atom@number[1]{%
+ \lowercase{\csuse{@elements@atom@number@#1}}%
+}
+\newcommand*\@elements@get@atom@name[1]{%
+ \csuse{@elements@atom@name@\romannumeral#1}%
+}
+
+\newrobustcmd*\@elements@element@symbol[1]{%
+ \lowercase{\ifcsdef{@elements@atom@name@num@#1}}
+ {\lowercase{\@elements@get@atom@symbol{\csuse{@elements@atom@name@num@#1}}}}
+ {\@elements@get@atom@symbol{#1}}%
+}
+
+\newrobustcmd*\@elements@atomic@number[1]{%
+ \lowercase{\ifcsdef{@elements@atom@number@#1}}
+ {\@elements@get@atom@number{#1}}
+ {\lowercase{\csuse{@elements@atom@name@num@#1}}}%
+}
+
+\newrobustcmd*\@elements@element@name[1]{%
+ \@elements@ifisnum{#1}
+ {\@elements@get@atom@name{#1}}
+ {\lowercase{\@elements@get@atom@name{\csuse{@elements@atom@number@#1}}}}%
+}
+
+\newrobustcmd*\elementsymbol[1]{\@elements@element@symbol{#1}}
+\newrobustcmd*\atomicnumber[1]{\@elements@atomic@number{#1}}
+\newrobustcmd*\elementname[1]{\@elements@element@name{#1}}
+\AtBeginDocument{\ifdef\Z{}{\let\Z\atomicnumber}}
+
+% #1: macro
+% #2: atomic number|element symbol|element name
+\newrobustcmd*\saveatomicnumber[2]{%
+ \@elements@ifisnum{#2}
+ {\edef#1{#2}}
+ {%
+ \lowercase{%
+ \ifcsdef{@elements@atom@name@num@#2}
+ {\edef#1{\csuse{@elements@atom@name@num@#2}}}
+ {\edef#1{\csuse{@elements@atom@number@#2}}}%
+ }%
+ }%
+}
+% #1: macro
+% #2: atomic number|element symbol|element name
+\newrobustcmd*\saveelementsymbol[2]{%
+ \saveatomicnumber#1{#2}%
+ \edef#1{\csuse{@elements@atom@symbol@num@\romannumeral#1}}%
+}
+% #1: macro
+% #2: atomic number|element symbol|element name
+\newrobustcmd*\saveelementname[2]{%
+ \saveatomicnumber#1{#2}%
+ \edef#1{\csuse{@elements@atom@name@\romannumeral#1}}%
+}
+% #1: macro
+% #2: atomic number|element symbol|element name
+\newrobustcmd*\saveelementisotopes[2]{%
+ \saveatomicnumber#1{#2}%
+ \edef#1{\csuse{@elements@atom@isotopes@\romannumeral#1}}%
+}
+
+\newbool{@elements@found@isotope}
+% #1: macro
+% #2: atomic number|element symbol|element name
+\newrobustcmd*\savemainelementisotope[2]{%
+ \boolfalse{@elements@found@isotope}%
+ \saveelementisotopes#1{#2}%
+ \expandafter\forcsvlist
+ \expandafter{\expandafter\@elements@extractmainisotope
+ \expandafter#1\expandafter}%
+ \expandafter{#1}%
+}
+
+\newcommand*\@elements@extractmainisotope[2]{%
+ \@elements@extractmainisotope@aux{#1}#2\q@stop
+}
+\newcommand*\@elements@extractmainisotope@aux[2]{%
+ \@elements@ifbang
+ {\@elements@saveisotope{#1}}
+ {\@elements@donothing{#1}}%
+ #2%
+}
+\def\@elements@saveisotope#1#2\q@stop{\def#1{#2}\booltrue{@elements@found@isotope}}
+\def\@elements@donothing#1#2\q@stop{\ifbool{@elements@found@isotope}{}{\let#1\@empty}}
+
+% --------------------------------------------------------------------------
+% electron distribution
+\newrobustcmd*\DeclareElectronDistribution[2]{%
+ \@elements@define@electron@distribution{#1}{#2}%
+}
+\@onlypreamble\DeclareElectronDistribution
+
+\newrobustcmd*\setelectrondistribution[2]{%
+ \@elements@define@electron@distribution{#1}{#2}%
+}
+
+\newrobustcmd*\@elements@define@electron@distribution[2]{%
+ \csdef{@elements@electron@distribution@\romannumeral#1}{#2}%
+}
+
+\newcounter{@elements@orbital@type}
+\newcounter{@elements@shell@number}
+
+\newrobustcmd*\elconf[1]{\@elements@elconf{#1}}
+\newrobustcmd*\writeelconf[1]{\@elements@read@elconf{#1}}
+
+\newcommand*\@elements@elconf[1]{%
+ \@elements@ifisnum{#1}
+ {\def\@elements@tmpa{#1}}
+ {%
+ \lowercase{\ifcsdef{@elements@atom@number@#1}}
+ {\lowercase{\edef\@elements@tmpa{\csuse{@elements@atom@number@#1}}}}
+ {\lowercase{\edef\@elements@tmpa{\csuse{@elements@atom@name@num@#1}}}}%
+ }%
+ % \cnltx@expandargs(Nf)%
+ \def\@elements@tmpb{%
+ \csuse{@elements@electron@distribution@\romannumeral\@elements@tmpa}%
+ }%
+ \expandafter\def\expandafter\@elements@tmpb\expandafter{\romannumeral-`0\@elements@tmpb}%
+ \expandafter\@elements@read@elconf\expandafter{\@elements@tmpb}%
+}
+
+\newrobustcmd*\@elements@read@elconf[1]{%
+ \def\@elements@current@elconf{}%
+ \setcounter{@elements@shell@number}{0}%
+ \@elements@getelconf{#1}%
+ \expandafter\@elements@write@elconf\expandafter{\@elements@current@elconf}%
+}
+
+\newcommand*\@elements@getelconf[1]{%
+ \forcsvlist{\@elements@getelconf@aux}{#1}%
+}
+\newcommand*\@elements@getelconf@aux[1]{%
+ \stepcounter{@elements@shell@number}%
+ \setcounter{@elements@orbital@type}{0}%
+ \@elements@parse@elconf#1+\q@stop
+}
+\protected\def\@elements@parse@elconf#1+#2\q@stop{%
+ \eappto\@elements@current@elconf{\arabic{@elements@shell@number}}%
+ \ifcase\value{@elements@orbital@type}\relax
+ \appto\@elements@current@elconf{s}%
+ \or
+ \appto\@elements@current@elconf{p}%
+ \or
+ \appto\@elements@current@elconf{d}%
+ \or
+ \appto\@elements@current@elconf{f}%
+ \fi
+ \appto\@elements@current@elconf{^{#1}}%
+ \stepcounter{@elements@orbital@type}%
+ \ifblank{#2}
+ {}
+ {\@elements@parse@elconf#2\q@stop}%
+}
+
+\newrobustcmd*\@elements@write@elconf[1]{$#1$}
+
+% --------------------------------------------------------------------------
+% declare electron distributions
+% period 1
+\DeclareElectronDistribution{1}{1}
+\DeclareElectronDistribution{2}{2}% He
+% period 2
+\DeclareElectronDistribution{3}{2,1}
+\DeclareElectronDistribution{4}{2,2}
+\DeclareElectronDistribution{5}{2,2+1}
+\DeclareElectronDistribution{6}{2,2+2}
+\DeclareElectronDistribution{7}{2,2+3}
+\DeclareElectronDistribution{8}{2,2+4}
+\DeclareElectronDistribution{9}{2,2+5}
+\DeclareElectronDistribution{10}{2,2+6}
+% period 3
+\DeclareElectronDistribution{11}{2,2+6,1}% Ne
+\DeclareElectronDistribution{12}{2,2+6,2}
+\DeclareElectronDistribution{13}{2,2+6,2+1}
+\DeclareElectronDistribution{14}{2,2+6,2+2}
+\DeclareElectronDistribution{15}{2,2+6,2+3}
+\DeclareElectronDistribution{16}{2,2+6,2+4}
+\DeclareElectronDistribution{17}{2,2+6,2+5}
+\DeclareElectronDistribution{18}{2,2+6,2+6}% Ar
+% period 4
+\DeclareElectronDistribution{19}{2,2+6,2+6,1}
+\DeclareElectronDistribution{20}{2,2+6,2+6,2}
+\DeclareElectronDistribution{21}{2,2+6,2+6+1,2}
+\DeclareElectronDistribution{22}{2,2+6,2+6+2,2}
+\DeclareElectronDistribution{23}{2,2+6,2+6+3,2}
+\DeclareElectronDistribution{24}{2,2+6,2+6+5,1}
+\DeclareElectronDistribution{25}{2,2+6,2+6+5,2}
+\DeclareElectronDistribution{26}{2,2+6,2+6+6,2}
+\DeclareElectronDistribution{27}{2,2+6,2+6+7,2}
+\DeclareElectronDistribution{28}{2,2+6,2+6+8,2}
+\DeclareElectronDistribution{29}{2,2+6,2+6+10,1}
+\DeclareElectronDistribution{30}{2,2+6,2+6+10,2}
+\DeclareElectronDistribution{31}{2,2+6,2+6+10,2+1}
+\DeclareElectronDistribution{32}{2,2+6,2+6+10,2+2}
+\DeclareElectronDistribution{33}{2,2+6,2+6+10,2+3}
+\DeclareElectronDistribution{34}{2,2+6,2+6+10,2+4}
+\DeclareElectronDistribution{35}{2,2+6,2+6+10,2+5}
+\DeclareElectronDistribution{36}{2,2+6,2+6+10,2+6}% Kr
+% period 5
+\DeclareElectronDistribution{37}{2,2+6,2+6+10,2+6,1}
+\DeclareElectronDistribution{38}{2,2+6,2+6+10,2+6,2}
+\DeclareElectronDistribution{39}{2,2+6,2+6+10,2+6+1,2}
+\DeclareElectronDistribution{40}{2,2+6,2+6+10,2+6+2,2}
+\DeclareElectronDistribution{41}{2,2+6,2+6+10,2+6+4,1}
+\DeclareElectronDistribution{42}{2,2+6,2+6+10,2+6+5,1}
+\DeclareElectronDistribution{43}{2,2+6,2+6+10,2+6+6,1}
+\DeclareElectronDistribution{44}{2,2+6,2+6+10,2+6+7,1}
+\DeclareElectronDistribution{45}{2,2+6,2+6+10,2+6+8,1}
+\DeclareElectronDistribution{46}{2,2+6,2+6+10,2+6+10}
+\DeclareElectronDistribution{47}{2,2+6,2+6+10,2+6+10,1}
+\DeclareElectronDistribution{48}{2,2+6,2+6+10,2+6+10,2}
+\DeclareElectronDistribution{49}{2,2+6,2+6+10,2+6+10,2+1}
+\DeclareElectronDistribution{50}{2,2+6,2+6+10,2+6+10,2+2}
+\DeclareElectronDistribution{51}{2,2+6,2+6+10,2+6+10,2+3}
+\DeclareElectronDistribution{52}{2,2+6,2+6+10,2+6+10,2+4}
+\DeclareElectronDistribution{53}{2,2+6,2+6+10,2+6+10,2+5}
+\DeclareElectronDistribution{54}{2,2+6,2+6+10,2+6+10,2+6}% Xe
+% period 6
+\DeclareElectronDistribution{55}{2,2+6,2+6+10,2+6+10,2+6,1}
+\DeclareElectronDistribution{56}{2,2+6,2+6+10,2+6+10,2+6,2}
+\DeclareElectronDistribution{57}{2,2+6,2+6+10,2+6+10,2+6+1,2}
+\DeclareElectronDistribution{58}{2,2+6,2+6+10,2+6+10+2,2+6,2}
+\DeclareElectronDistribution{59}{2,2+6,2+6+10,2+6+10+3,2+6,2}
+\DeclareElectronDistribution{60}{2,2+6,2+6+10,2+6+10+4,2+6,2}
+\DeclareElectronDistribution{61}{2,2+6,2+6+10,2+6+10+5,2+6,2}
+\DeclareElectronDistribution{62}{2,2+6,2+6+10,2+6+10+6,2+6,2}
+\DeclareElectronDistribution{63}{2,2+6,2+6+10,2+6+10+7,2+6,2}
+\DeclareElectronDistribution{64}{2,2+6,2+6+10,2+6+10+7,2+6+1,2}
+\DeclareElectronDistribution{65}{2,2+6,2+6+10,2+6+10+9,2+6,2}
+\DeclareElectronDistribution{66}{2,2+6,2+6+10,2+6+10+10,2+6,2}
+\DeclareElectronDistribution{67}{2,2+6,2+6+10,2+6+10+11,2+6,2}
+\DeclareElectronDistribution{68}{2,2+6,2+6+10,2+6+10+12,2+6,2}
+\DeclareElectronDistribution{69}{2,2+6,2+6+10,2+6+10+13,2+6,2}
+\DeclareElectronDistribution{70}{2,2+6,2+6+10,2+6+10+14,2+6,2}
+\DeclareElectronDistribution{71}{2,2+6,2+6+10,2+6+10+14,2+6+1,2}
+\DeclareElectronDistribution{72}{2,2+6,2+6+10,2+6+10+14,2+6+2,2}
+\DeclareElectronDistribution{73}{2,2+6,2+6+10,2+6+10+14,2+6+3,2}
+\DeclareElectronDistribution{74}{2,2+6,2+6+10,2+6+10+14,2+6+4,2}
+\DeclareElectronDistribution{75}{2,2+6,2+6+10,2+6+10+14,2+6+5,2}
+\DeclareElectronDistribution{76}{2,2+6,2+6+10,2+6+10+14,2+6+6,2}
+\DeclareElectronDistribution{77}{2,2+6,2+6+10,2+6+10+14,2+6+7,2}
+\DeclareElectronDistribution{78}{2,2+6,2+6+10,2+6+10+14,2+6+9,1}
+\DeclareElectronDistribution{79}{2,2+6,2+6+10,2+6+10+14,2+6+10,1}
+\DeclareElectronDistribution{80}{2,2+6,2+6+10,2+6+10+14,2+6+10,2}
+\DeclareElectronDistribution{81}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+1}
+\DeclareElectronDistribution{82}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+2}
+\DeclareElectronDistribution{83}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+3}
+\DeclareElectronDistribution{84}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+4}
+\DeclareElectronDistribution{85}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+5}
+\DeclareElectronDistribution{86}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+6}% Rn
+% period 7
+\DeclareElectronDistribution{87}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+6,1}
+\DeclareElectronDistribution{88}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+6,2}
+\DeclareElectronDistribution{89}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+6+1,2}
+\DeclareElectronDistribution{90}{2,2+6,2+6+10,2+6+10+14,2+6+10,2+6+2,2}
+\DeclareElectronDistribution{91}{2,2+6,2+6+10,2+6+10+14,2+6+10+2,2+6+1,2}
+\DeclareElectronDistribution{92}{2,2+6,2+6+10,2+6+10+14,2+6+10+3,2+6+1,2}
+\DeclareElectronDistribution{93}{2,2+6,2+6+10,2+6+10+14,2+6+10+4,2+6+1,2}
+\DeclareElectronDistribution{94}{2,2+6,2+6+10,2+6+10+14,2+6+10+6,2+6,2}
+\DeclareElectronDistribution{95}{2,2+6,2+6+10,2+6+10+14,2+6+10+7,2+6,2}
+\DeclareElectronDistribution{96}{2,2+6,2+6+10,2+6+10+14,2+6+10+7,2+6+1,2}
+\DeclareElectronDistribution{97}{2,2+6,2+6+10,2+6+10+14,2+6+10+9,2+6,2}
+\DeclareElectronDistribution{98}{2,2+6,2+6+10,2+6+10+14,2+6+10+10,2+6,2}
+\DeclareElectronDistribution{99}{2,2+6,2+6+10,2+6+10+14,2+6+10+11,2+6,2}
+\DeclareElectronDistribution{100}{2,2+6,2+6+10,2+6+10+14,2+6+10+12,2+6,2}
+\DeclareElectronDistribution{101}{2,2+6,2+6+10,2+6+10+14,2+6+10+13,2+6,2}
+\DeclareElectronDistribution{102}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6,2}
+\DeclareElectronDistribution{103}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+1,2}
+\DeclareElectronDistribution{104}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+2,2}
+\DeclareElectronDistribution{105}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+3,2}
+\DeclareElectronDistribution{106}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+4,2}
+\DeclareElectronDistribution{107}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+5,2}
+\DeclareElectronDistribution{108}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+6,2}
+\DeclareElectronDistribution{109}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+7,2}
+\DeclareElectronDistribution{110}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+9,1}
+\DeclareElectronDistribution{111}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+10,1}
+\DeclareElectronDistribution{112}{2,2+6,2+6+10,2+6+10+14,2+6+10+14,2+6+10,2}
+
+% --------------------------------------------------------------------------
+% declare atom symbols
+\DeclareAtomSymbol{1}{H}
+\DeclareAtomSymbol{2}{He}
+\DeclareAtomSymbol{3}{Li}
+\DeclareAtomSymbol{4}{Be}
+\DeclareAtomSymbol{5}{B}
+\DeclareAtomSymbol{6}{C}
+\DeclareAtomSymbol{7}{N}
+\DeclareAtomSymbol{8}{O}
+\DeclareAtomSymbol{9}{F}
+\DeclareAtomSymbol{10}{Ne}
+\DeclareAtomSymbol{11}{Na}
+\DeclareAtomSymbol{12}{Mg}
+\DeclareAtomSymbol{13}{Al}
+\DeclareAtomSymbol{14}{Si}
+\DeclareAtomSymbol{15}{P}
+\DeclareAtomSymbol{16}{S}
+\DeclareAtomSymbol{17}{Cl}
+\DeclareAtomSymbol{18}{Ar}
+\DeclareAtomSymbol{19}{K}
+\DeclareAtomSymbol{20}{Ca}
+\DeclareAtomSymbol{21}{Sc}
+\DeclareAtomSymbol{22}{Ti}
+\DeclareAtomSymbol{23}{V}
+\DeclareAtomSymbol{24}{Cr}
+\DeclareAtomSymbol{25}{Mn}
+\DeclareAtomSymbol{26}{Fe}
+\DeclareAtomSymbol{27}{Co}
+\DeclareAtomSymbol{28}{Ni}
+\DeclareAtomSymbol{29}{Cu}
+\DeclareAtomSymbol{30}{Zn}
+\DeclareAtomSymbol{31}{Ga}
+\DeclareAtomSymbol{32}{Ge}
+\DeclareAtomSymbol{33}{As}
+\DeclareAtomSymbol{34}{Se}
+\DeclareAtomSymbol{35}{Br}
+\DeclareAtomSymbol{36}{Kr}
+\DeclareAtomSymbol{37}{Rb}
+\DeclareAtomSymbol{38}{Sr}
+\DeclareAtomSymbol{39}{Y}
+\DeclareAtomSymbol{40}{Zr}
+\DeclareAtomSymbol{41}{Nb}
+\DeclareAtomSymbol{42}{Mo}
+\DeclareAtomSymbol{43}{Tc}
+\DeclareAtomSymbol{44}{Ru}
+\DeclareAtomSymbol{45}{Rh}
+\DeclareAtomSymbol{46}{Pd}
+\DeclareAtomSymbol{47}{Ag}
+\DeclareAtomSymbol{48}{Cd}
+\DeclareAtomSymbol{49}{In}
+\DeclareAtomSymbol{50}{Sn}
+\DeclareAtomSymbol{51}{Sb}
+\DeclareAtomSymbol{52}{Te}
+\DeclareAtomSymbol{53}{I}
+\DeclareAtomSymbol{54}{Xe}
+\DeclareAtomSymbol{55}{Cs}
+\DeclareAtomSymbol{56}{Ba}
+\DeclareAtomSymbol{57}{La}
+\DeclareAtomSymbol{58}{Ce}
+\DeclareAtomSymbol{59}{Pr}
+\DeclareAtomSymbol{60}{Nd}
+\DeclareAtomSymbol{61}{Pm}
+\DeclareAtomSymbol{62}{Sm}
+\DeclareAtomSymbol{63}{Eu}
+\DeclareAtomSymbol{64}{Gd}
+\DeclareAtomSymbol{65}{Tb}
+\DeclareAtomSymbol{66}{Dy}
+\DeclareAtomSymbol{67}{Ho}
+\DeclareAtomSymbol{68}{Er}
+\DeclareAtomSymbol{69}{Tm}
+\DeclareAtomSymbol{70}{Yb}
+\DeclareAtomSymbol{71}{Lu}
+\DeclareAtomSymbol{72}{Hf}
+\DeclareAtomSymbol{73}{Ta}
+\DeclareAtomSymbol{74}{W}
+\DeclareAtomSymbol{75}{Re}
+\DeclareAtomSymbol{76}{Os}
+\DeclareAtomSymbol{77}{Ir}
+\DeclareAtomSymbol{78}{Pt}
+\DeclareAtomSymbol{79}{Au}
+\DeclareAtomSymbol{80}{Hg}
+\DeclareAtomSymbol{81}{Tl}
+\DeclareAtomSymbol{82}{Pb}
+\DeclareAtomSymbol{83}{Bi}
+\DeclareAtomSymbol{84}{Po}
+\DeclareAtomSymbol{85}{At}
+\DeclareAtomSymbol{86}{Rn}
+\DeclareAtomSymbol{87}{Fr}
+\DeclareAtomSymbol{88}{Ra}
+\DeclareAtomSymbol{89}{Ac}
+\DeclareAtomSymbol{90}{Th}
+\DeclareAtomSymbol{91}{Pa}
+\DeclareAtomSymbol{92}{U}
+\DeclareAtomSymbol{93}{Np}
+\DeclareAtomSymbol{94}{Pu}
+\DeclareAtomSymbol{95}{Am}
+\DeclareAtomSymbol{96}{Cm}
+\DeclareAtomSymbol{97}{Bk}
+\DeclareAtomSymbol{98}{Cf}
+\DeclareAtomSymbol{99}{Es}
+\DeclareAtomSymbol{100}{Fm}
+\DeclareAtomSymbol{101}{Md}
+\DeclareAtomSymbol{102}{No}
+\DeclareAtomSymbol{103}{Lr}
+\DeclareAtomSymbol{104}{Rf}
+\DeclareAtomSymbol{105}{Db}
+\DeclareAtomSymbol{106}{Sg}
+\DeclareAtomSymbol{107}{Bh}
+\DeclareAtomSymbol{108}{Hs}
+\DeclareAtomSymbol{109}{Mt}
+\DeclareAtomSymbol{110}{Ds}
+\DeclareAtomSymbol{111}{Rg}
+\DeclareAtomSymbol{112}{Cn}
+
+% --------------------------------------------------------------------------
+
+\DeclareAtomIsotopes{1} {!1,2,3}
+\DeclareAtomIsotopes{2} {3,!4,5,6}
+\DeclareAtomIsotopes{3} {3,!4,5,6}
+\DeclareAtomIsotopes{4} {7,8,!9,10,11}
+\DeclareAtomIsotopes{5} {8,9,10,!11,12,13}
+\DeclareAtomIsotopes{6} {10,11,!12,13,14,15,16}
+\DeclareAtomIsotopes{7} {13,!14,15,16}
+\DeclareAtomIsotopes{8} {15,!16,17,18}
+\DeclareAtomIsotopes{9} {17,18,!19,20,21}
+\DeclareAtomIsotopes{10} {18,19,!20,21,22,23,24}
+\DeclareAtomIsotopes{11} {21,22,!23,24,25}
+\DeclareAtomIsotopes{12} {23,!24,25,26,27,28}
+\DeclareAtomIsotopes{13} {25,26,!27,28,29}
+\DeclareAtomIsotopes{14} {26,27,!28,29,30,31,32,33,34}
+\DeclareAtomIsotopes{15} {28,29,30,!31,32,33,34,35}
+\DeclareAtomIsotopes{16} {30,31,!32,33,34,35,36,37,38,39,40}
+\DeclareAtomIsotopes{17} {!35,36,37}
+\DeclareAtomIsotopes{18} {33,34,35,36,37,38,39,!40,41,42}
+\DeclareAtomIsotopes{19} {38,!39,40,41,42,43}
+\DeclareAtomIsotopes{20} {!40,41,42,43,44,45,46,47,48}
+\DeclareAtomIsotopes{21} {43,44,!45,46,47,48,49}
+\DeclareAtomIsotopes{22} {44,45,46,47,!48,49,50,51,52}
+\DeclareAtomIsotopes{23} {48,49,50,!51}
+\DeclareAtomIsotopes{24} {48,49,50,51,!52,53,54,55,56}
+\DeclareAtomIsotopes{25} {52,53,54,!55,56}
+\DeclareAtomIsotopes{26} {52,53,54,55,!56,57,58,59,60}
+\DeclareAtomIsotopes{27} {55,56,57,58,!59,60,61}
+\DeclareAtomIsotopes{28} {!58,59,60,61,62,63,64}
+\DeclareAtomIsotopes{29} {61,62,!63,64,65,66,67}
+\DeclareAtomIsotopes{30} {!64,65,66,67,68,69,70}
+\DeclareAtomIsotopes{31} {67,68,!69,70,71,72,73}
+\DeclareAtomIsotopes{32} {68,69,70,71,72,73,!74,75,76,77}
+\DeclareAtomIsotopes{33} {72,73,74,!75,76,77}
+\DeclareAtomIsotopes{34} {74,75,76,77,78,79,!80,81,82}
+\DeclareAtomIsotopes{35} {77,78,!79,80,81,82,83}
+\DeclareAtomIsotopes{36} {78,79,80,81,82,83,!84,85,86}
+\DeclareAtomIsotopes{37} {83,84,!85,86,87,88,89}
+\DeclareAtomIsotopes{38} {82,83,84,85,86,87,!88,89,90}
+\DeclareAtomIsotopes{39} {87,88,!89,90,91}
+\DeclareAtomIsotopes{40} {89,!90,91,92,93,94,95,96}
+\DeclareAtomIsotopes{41} {91,92,!93,94,95}
+\DeclareAtomIsotopes{42} {92,93,94,95,96,97,!98,99,100}
+\DeclareAtomIsotopes{43} {95,96,97,98,!99}
+\DeclareAtomIsotopes{44} {96,97,98,99,100,101,!102,103,104,105,106}
+\DeclareAtomIsotopes{45} {101,102,102,!103,104,105}
+\DeclareAtomIsotopes{46} {102,103,104,105,!106,107,108,109,110}
+\DeclareAtomIsotopes{47} {105,106,!107,108,109,110,111}
+\DeclareAtomIsotopes{48} {106,107,108,109,110,111,112,113,!114,115,116}
+\DeclareAtomIsotopes{49} {111,112,113,114,!115}
+\DeclareAtomIsotopes{50} {112,113,114,115,116,117,118,119,!120,121,122,123,124,125,126}
+\DeclareAtomIsotopes{51} {119,120,!121,122,123,124,125}
+\DeclareAtomIsotopes{52} {120,121,122,123,124,125,126,127,128,129,!130}
+\DeclareAtomIsotopes{53} {123,124,125,126,!127,128,129,130,131}
+\DeclareAtomIsotopes{54} {124,125,126,127,128,129,130,131,!132,133,134,135,136}
+\DeclareAtomIsotopes{55} {131,132,!133,134,135,136,137}
+\DeclareAtomIsotopes{56} {128,129,130,131,132,133,134,135,136,137,!138,139,140}
+\DeclareAtomIsotopes{57} {135,136,137,138,!139,140,141}
+\DeclareAtomIsotopes{58} {134,135,136,137,138,139,!140,141,142,143,144}
+\DeclareAtomIsotopes{59} {137,138,139,140,!141,142,143,144,145}
+\DeclareAtomIsotopes{60} {!142,143,144,145,146,147,148,149,150}
+\DeclareAtomIsotopes{61} {143,144,145,146,!147,148,149}
+\DeclareAtomIsotopes{62} {144,145,146,147,148,149,150,151,!152,153,154}
+\DeclareAtomIsotopes{63} {149,150,151,152,!153,154,155}
+\DeclareAtomIsotopes{64} {150,151,152,153,154,155,156,157,!158,159,160}
+\DeclareAtomIsotopes{65} {155,156,157,158,!159,160,161}
+\DeclareAtomIsotopes{66} {154,155,156,157,158,159,160,161,162,163,!164}
+\DeclareAtomIsotopes{67} {163,164,!165,166,167}
+\DeclareAtomIsotopes{68} {162,163,164,165,166,!167,168,169,170}
+\DeclareAtomIsotopes{69} {167,168,!169,170,171}
+\DeclareAtomIsotopes{70} {168,169,170,171,172,173,!174,175,176}
+\DeclareAtomIsotopes{71} {173,174,!175,176,177}
+\DeclareAtomIsotopes{72} {174,175,176,177,178,179,!180,181,182}
+\DeclareAtomIsotopes{73} {177,178,179,180,!181,182,183}
+\DeclareAtomIsotopes{74} {178,179,180,181,182,183,!184,185,186,187,188}
+\DeclareAtomIsotopes{75} {185,186,!187,188}
+\DeclareAtomIsotopes{76} {184,185,186,187,188,189,190,191,!192}
+\DeclareAtomIsotopes{77} {189,190,191,192,!193,194,195}
+\DeclareAtomIsotopes{78} {188,189,190,191,192,193,194,!195,196,197,198,199,200}
+\DeclareAtomIsotopes{79} {195,196,!197,198,199}
+\DeclareAtomIsotopes{80} {196,197,198,199,200,201,!202,203,204,206}
+\DeclareAtomIsotopes{81} {199,200,201,202,203,204,!205,206,207,208,210}
+\DeclareAtomIsotopes{82} {202,203,204,205,206,207,!208,209,210,211,212,213,214}
+\DeclareAtomIsotopes{83} {205,206,207,208,!209,210,211,212,213,214,215}
+\DeclareAtomIsotopes{84} {208,209,!210,211,212,213,214,215,216,217,218}
+% no main isotope:
+\DeclareAtomIsotopes{85} {209,210,211,212,213,214,215,218,219,220}
+\DeclareAtomIsotopes{86} {210,211,212,217,218,219,220,221,!222,223,224}
+\DeclareAtomIsotopes{87} {222,!223}
+\DeclareAtomIsotopes{88} {223,224,225,!226,227,228}
+\DeclareAtomIsotopes{89} {224,225,226,!227,228}
+\DeclareAtomIsotopes{90} {227,228,229,230,231,!232,233,234}
+\DeclareAtomIsotopes{91} {229,230,!231,232,233,234}
+\DeclareAtomIsotopes{92} {232,233,234,235,236,237,!238,239}
+% no main isotope:
+\DeclareAtomIsotopes{93} {235,236,237,238,239}
+\DeclareAtomIsotopes{94} {236,237,238,239,240,241,242,243,!244}
+% no main isotope:
+\DeclareAtomIsotopes{95} {238,239,240,241,242,243,244}
+% no main isotope:
+\DeclareAtomIsotopes{96} {240,241,242,243,244,245,246,247,248,249,250}
+% no main isotope:
+\DeclareAtomIsotopes{97} {242,243,244,245,246,247,248,249,250}
+% no main isotope:
+\DeclareAtomIsotopes{98} {244,245,246,247,248,249,250,251,252,253,254}
+% no main isotope:
+\DeclareAtomIsotopes{99} {248,249,250,251,252,253,254,255}
+% no main isotope:
+\DeclareAtomIsotopes{100}{250,251,252,253,254,255,256,257,258,259}
+% no main isotope:
+\DeclareAtomIsotopes{101}{257,258,259,260}
+% no main isotope:
+\DeclareAtomIsotopes{102}{257,259}
+% no main isotope:
+\DeclareAtomIsotopes{103}{260,261,262,266}
+% no main isotope:
+\DeclareAtomIsotopes{104}{253,254,255,256,257,258,259,260,261,262}
+% no main isotope:
+\DeclareAtomIsotopes{105}{261,262,263}
+% no main isotope:
+\DeclareAtomIsotopes{106}{265,266}
+% no main isotope:
+\DeclareAtomIsotopes{107}{261,262,264}
+% no main isotope:
+\DeclareAtomIsotopes{108}{268,269,270}
+% no main isotope:
+\DeclareAtomIsotopes{109}{266,267,268,270,274,275,276}
+% no main isotope:
+\DeclareAtomIsotopes{110}{267,268,269,270,271,272,273,279,280,281,282}
+% no main isotope:
+\DeclareAtomIsotopes{111}{272,274,278,279,280}
+% no main isotope:
+\DeclareAtomIsotopes{112}{277,283,285}
+
+% --------------------------------------------------------------------------
+% extendable language settings
+\RequirePackage{translations}
+\AfterEndPreamble{
+ % this will load a file `elements_elements_<lang>.def', <lang> is a
+ % `translations' base language
+ % currently only German and English are available, English being the
+ % fallback; other languages are added by providing the corresponding file
+ \ifdef\@elements@language
+ {\edef\@elements@language{\@trnslt@language{\@elements@language}}}
+ {\def\@elements@language{\@trnslt@language{\@trnslt@current@language}}}
+ \InputIfFileExists
+ {elements_names_\@elements@language.def}
+ {}
+ {\input{elements_elements_english.def}}
+}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/elements/elements_names_english.def b/Master/texmf-dist/tex/latex/elements/elements_names_english.def
new file mode 100644
index 00000000000..e5fb902ed90
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/elements/elements_names_english.def
@@ -0,0 +1,114 @@
+\DeclareAtomName{1}{Hydrogen}
+\DeclareAtomName{2}{Helium}
+\DeclareAtomName{3}{Lithium}
+\DeclareAtomName{4}{Beryllium}
+\DeclareAtomName{5}{Boron}
+\DeclareAtomName{6}{Carbon}
+\DeclareAtomName{7}{Nitrogen}
+\DeclareAtomName{8}{Oxygen}
+\DeclareAtomName{9}{Fluorine}
+\DeclareAtomName{10}{Neon}
+\DeclareAtomName{11}{Sodium}
+\DeclareAtomName{12}{Magnesium}
+\DeclareAtomName{13}{Aluminium}
+\DeclareAtomName{14}{Silicon}
+\DeclareAtomName{15}{Phosphorus}
+\DeclareAtomName{16}{Sulfur}
+\DeclareAtomName{17}{Chlorine}
+\DeclareAtomName{18}{Argon}
+\DeclareAtomName{19}{Potassium}
+\DeclareAtomName{20}{Calcium}
+\DeclareAtomName{21}{Scandium}
+\DeclareAtomName{22}{Titanium}
+\DeclareAtomName{23}{Vanadium}
+\DeclareAtomName{24}{Chromium}
+\DeclareAtomName{25}{Manganese}
+\DeclareAtomName{26}{Iron}
+\DeclareAtomName{27}{Cobalt}
+\DeclareAtomName{28}{Nickel}
+\DeclareAtomName{29}{Copper}
+\DeclareAtomName{30}{Zinc}
+\DeclareAtomName{31}{Gallium}
+\DeclareAtomName{32}{Germanium}
+\DeclareAtomName{33}{Arsenic}
+\DeclareAtomName{34}{Selenium}
+\DeclareAtomName{35}{Bromine}
+\DeclareAtomName{36}{Krypton}
+\DeclareAtomName{37}{Rubidium}
+\DeclareAtomName{38}{Strontium}
+\DeclareAtomName{39}{Yttrium}
+\DeclareAtomName{40}{Zirconium}
+\DeclareAtomName{41}{Niobium}
+\DeclareAtomName{42}{Molybdenum}
+\DeclareAtomName{43}{Technetium}
+\DeclareAtomName{44}{Ruthenium}
+\DeclareAtomName{45}{Rhodium}
+\DeclareAtomName{46}{Palladium}
+\DeclareAtomName{47}{Silver}
+\DeclareAtomName{48}{Cadmium}
+\DeclareAtomName{49}{Indium}
+\DeclareAtomName{50}{Tin}
+\DeclareAtomName{51}{Antimony}
+\DeclareAtomName{52}{Tellurium}
+\DeclareAtomName{53}{Iodine}
+\DeclareAtomName{54}{Xenon}
+\DeclareAtomName{55}{Caesium}
+\DeclareAtomName{56}{Barium}
+\DeclareAtomName{57}{Lanthanum}
+\DeclareAtomName{58}{Cerium}
+\DeclareAtomName{59}{Praseodymium}
+\DeclareAtomName{60}{Neodymium}
+\DeclareAtomName{61}{Promethium}
+\DeclareAtomName{62}{Samarium}
+\DeclareAtomName{63}{Europium}
+\DeclareAtomName{64}{Gadolinium}
+\DeclareAtomName{65}{Terbium}
+\DeclareAtomName{66}{Dysprosium}
+\DeclareAtomName{67}{Holmium}
+\DeclareAtomName{68}{Erbium}
+\DeclareAtomName{69}{Thulium}
+\DeclareAtomName{70}{Ytterbium}
+\DeclareAtomName{71}{Lutetium}
+\DeclareAtomName{72}{Hafnium}
+\DeclareAtomName{73}{Tantalium}
+\DeclareAtomName{74}{Tungsten}
+\DeclareAtomName{75}{Rhenium}
+\DeclareAtomName{76}{Osmium}
+\DeclareAtomName{77}{Iridium}
+\DeclareAtomName{78}{Platinum}
+\DeclareAtomName{79}{Gold}
+\DeclareAtomName{80}{Mercury}
+\DeclareAtomName{81}{Thallium}
+\DeclareAtomName{82}{Lead}
+\DeclareAtomName{83}{Bismuth}
+\DeclareAtomName{84}{Polonium}
+\DeclareAtomName{85}{Astatine}
+\DeclareAtomName{86}{Radon}
+\DeclareAtomName{87}{Francium}
+\DeclareAtomName{88}{Radium}
+\DeclareAtomName{89}{Actinium}
+\DeclareAtomName{90}{Thorium}
+\DeclareAtomName{91}{Protactinium}
+\DeclareAtomName{92}{Uranium}
+\DeclareAtomName{93}{Neptunium}
+\DeclareAtomName{94}{Plutonium}
+\DeclareAtomName{95}{Americium}
+\DeclareAtomName{96}{Curium}
+\DeclareAtomName{97}{Berkelium}
+\DeclareAtomName{98}{Californium}
+\DeclareAtomName{99}{Einsteinium}
+\DeclareAtomName{100}{Fermium}
+\DeclareAtomName{101}{Mendelevium}
+\DeclareAtomName{102}{Nobelium}
+\DeclareAtomName{103}{Lawrencium}
+\DeclareAtomName{104}{Rutherfordium}
+\DeclareAtomName{105}{Dubnium}
+\DeclareAtomName{106}{Seaborgium}
+\DeclareAtomName{107}{Bohrium}
+\DeclareAtomName{108}{Hassium}
+\DeclareAtomName{109}{Meitnerium}
+\DeclareAtomName{110}{Darmstadtium}
+\DeclareAtomName{111}{Roentgenium}
+\DeclareAtomName{112}{Copernicium}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/elements/elements_names_french.def b/Master/texmf-dist/tex/latex/elements/elements_names_french.def
new file mode 100644
index 00000000000..b729ff7bb8b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/elements/elements_names_french.def
@@ -0,0 +1,114 @@
+\DeclareAtomName[Hydrogene]{1}{Hydrog\`ene}
+\DeclareAtomName[Helium]{2}{H\'elium}
+\DeclareAtomName{3}{Lithium}
+\DeclareAtomName[Beryllium]{4}{B\'eryllium}
+\DeclareAtomName{5}{Bore}
+\DeclareAtomName{6}{Carbone}
+\DeclareAtomName{7}{Azote}
+\DeclareAtomName[Oxygene]{8}{Oxyg\`ene}
+\DeclareAtomName{9}{Fluor}
+\DeclareAtomName[Neon]{10}{N\'eon}
+\DeclareAtomName{11}{Sodium}
+\DeclareAtomName[Magnesium]{12}{Magn\'esium}
+\DeclareAtomName{13}{Aluminium}
+\DeclareAtomName{14}{Silicium}
+\DeclareAtomName{15}{Phosphore}
+\DeclareAtomName{16}{Soufre}
+\DeclareAtomName{17}{Chlor}
+\DeclareAtomName{18}{Argon}
+\DeclareAtomName{19}{Potassium}
+\DeclareAtomName{20}{Calcium}
+\DeclareAtomName{21}{Scandium}
+\DeclareAtomName{22}{Titane}
+\DeclareAtomName{23}{Vanadium}
+\DeclareAtomName{24}{Chrome}
+\DeclareAtomName[Manganese]{25}{Mangan\`ese}
+\DeclareAtomName{26}{Fer}
+\DeclareAtomName{27}{Cobalt}
+\DeclareAtomName{28}{Nickel}
+\DeclareAtomName{29}{Cuivre}
+\DeclareAtomName{30}{Zinc}
+\DeclareAtomName{31}{Gallium}
+\DeclareAtomName{32}{Germanium}
+\DeclareAtomName{33}{Arsenic}
+\DeclareAtomName[Selenium]{34}{S\'el\'enium}
+\DeclareAtomName{35}{Brome}
+\DeclareAtomName{36}{Krypton}
+\DeclareAtomName{37}{Rubidium}
+\DeclareAtomName{38}{Strontium}
+\DeclareAtomName{39}{Yttrium}
+\DeclareAtomName{40}{Zirconium}
+\DeclareAtomName{41}{Niobium}
+\DeclareAtomName[Molybdene]{42}{Molybd\`en}
+\DeclareAtomName[Technetium]{43}{Techn\'etium}
+\DeclareAtomName[Ruthenium]{44}{Ruth\'enium}
+\DeclareAtomName{45}{Rhodium}
+\DeclareAtomName{46}{Palladium}
+\DeclareAtomName{47}{Argent}
+\DeclareAtomName{48}{Cadmium}
+\DeclareAtomName{49}{Indium}
+\DeclareAtomName{50}{Etain}
+\DeclareAtomName{51}{Antimoine}
+\DeclareAtomName{52}{Tellure}
+\DeclareAtomName{53}{Iode}
+\DeclareAtomName[Xenon]{54}{X\'enon}
+\DeclareAtomName[Cesium]{55}{C\'esium}
+\DeclareAtomName{56}{Baryum}
+\DeclareAtomName{57}{Lanthane}
+\DeclareAtomName[Cerium]{58}{C\'erium}
+\DeclareAtomName[Praseodyme]{59}{Pras\'eodyme}
+\DeclareAtomName[Neodyme]{60}{N\'eodyme}
+\DeclareAtomName{61}{Prom\'ethium}
+\DeclareAtomName{62}{Samarium}
+\DeclareAtomName{63}{Europium}
+\DeclareAtomName{64}{Gadolinium}
+\DeclareAtomName{65}{Terbium}
+\DeclareAtomName{66}{Dysprosium}
+\DeclareAtomName{67}{Holmium}
+\DeclareAtomName{68}{Erbium}
+\DeclareAtomName{69}{Thulium}
+\DeclareAtomName{70}{Ytterbium}
+\DeclareAtomName[Luthetium]{71}{Lut\'etium}
+\DeclareAtomName{72}{Hafnium}
+\DeclareAtomName{73}{Tantale}
+\DeclareAtomName[Tungstene]{74}{Tungst\`ene}
+\DeclareAtomName[Rhenium]{75}{Rh\'enium}
+\DeclareAtomName{76}{Osmium}
+\DeclareAtomName{77}{Iridium}
+\DeclareAtomName{78}{Platine}
+\DeclareAtomName{79}{Or}
+\DeclareAtomName{80}{Mercure}
+\DeclareAtomName{81}{Thallium}
+\DeclareAtomName{82}{Plomb}
+\DeclareAtomName{83}{Bismuth}
+\DeclareAtomName{84}{Polonium}
+\DeclareAtomName{85}{Astate}
+\DeclareAtomName{86}{Radon}
+\DeclareAtomName{87}{Francium}
+\DeclareAtomName{88}{Radium}
+\DeclareAtomName{89}{Actinium}
+\DeclareAtomName{90}{Thorium}
+\DeclareAtomName{91}{Protactinium}
+\DeclareAtomName{92}{Uranium}
+\DeclareAtomName{93}{Neptunium}
+\DeclareAtomName{94}{Plutonium}
+\DeclareAtomName[Americium]{95}{Am\'ericium}
+\DeclareAtomName{96}{Curium}
+\DeclareAtomName[Berkelium]{97}{Berk\'elium}
+\DeclareAtomName{98}{Californium}
+\DeclareAtomName{99}{Einsteinium}
+\DeclareAtomName{100}{Fermium}
+\DeclareAtomName[Mendelevium]{101}{Mendel\'evium}
+\DeclareAtomName[Nobelium]{102}{Nob\'elium}
+\DeclareAtomName{103}{Lawrencium}
+\DeclareAtomName{104}{Rutherfordium}
+\DeclareAtomName{105}{Dubnium}
+\DeclareAtomName{106}{Seaborgium}
+\DeclareAtomName{107}{Bohrium}
+\DeclareAtomName{108}{Hassium}
+\DeclareAtomName{109}{Meitnerium}
+\DeclareAtomName{110}{Darmstadtium}
+\DeclareAtomName{111}{Roentgenium}
+\DeclareAtomName{112}{Copernicium}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/elements/elements_names_german.def b/Master/texmf-dist/tex/latex/elements/elements_names_german.def
new file mode 100644
index 00000000000..c9af43eaa86
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/elements/elements_names_german.def
@@ -0,0 +1,114 @@
+\DeclareAtomName{1}{Wasserstoff}
+\DeclareAtomName{2}{Helium}
+\DeclareAtomName{3}{Lithium}
+\DeclareAtomName{4}{Beryllium}
+\DeclareAtomName{5}{Bor}
+\DeclareAtomName{6}{Kohlenstoff}
+\DeclareAtomName{7}{Stickstoff}
+\DeclareAtomName{8}{Souerstoff}
+\DeclareAtomName{9}{Fluor}
+\DeclareAtomName{10}{Neon}
+\DeclareAtomName{11}{Natrium}
+\DeclareAtomName{12}{Magnesium}
+\DeclareAtomName{13}{Aluminium}
+\DeclareAtomName{14}{Silicium}
+\DeclareAtomName{15}{Phosphor}
+\DeclareAtomName{16}{Schwefel}
+\DeclareAtomName{17}{Chlor}
+\DeclareAtomName{18}{Argon}
+\DeclareAtomName{19}{Kalium}
+\DeclareAtomName{20}{Calcium}
+\DeclareAtomName{21}{Scandium}
+\DeclareAtomName{22}{Titan}
+\DeclareAtomName{23}{Vanadium}
+\DeclareAtomName{24}{Chrom}
+\DeclareAtomName{25}{Mangan}
+\DeclareAtomName{26}{Eisen}
+\DeclareAtomName{27}{Cobalt}
+\DeclareAtomName{28}{Nickel}
+\DeclareAtomName{29}{Kupfer}
+\DeclareAtomName{30}{Zink}
+\DeclareAtomName{31}{Gallium}
+\DeclareAtomName{32}{Germanium}
+\DeclareAtomName{33}{Arsen}
+\DeclareAtomName{34}{Selen}
+\DeclareAtomName{35}{Brom}
+\DeclareAtomName{36}{Krypton}
+\DeclareAtomName{37}{Rubidium}
+\DeclareAtomName{38}{Strontium}
+\DeclareAtomName{39}{Yttrium}
+\DeclareAtomName{40}{Zirconium}
+\DeclareAtomName{41}{Niobium}
+\DeclareAtomName[Molybdaen]{42}{Molybd\"{a}n}
+\DeclareAtomName{43}{Technetium}
+\DeclareAtomName{44}{Ruthenium}
+\DeclareAtomName{45}{Rhodium}
+\DeclareAtomName{46}{Palladium}
+\DeclareAtomName{47}{Silber}
+\DeclareAtomName{48}{Cadmium}
+\DeclareAtomName{49}{Indium}
+\DeclareAtomName{50}{Zinn}
+\DeclareAtomName{51}{Antimon}
+\DeclareAtomName{52}{Tellur}
+\DeclareAtomName{53}{Iod}
+\DeclareAtomName{54}{Xenon}
+\DeclareAtomName[Caesium]{55}{C\"{a}sium}
+\DeclareAtomName{56}{Barium}
+\DeclareAtomName{57}{Lanthan}
+\DeclareAtomName{58}{Cer}
+\DeclareAtomName{59}{Praseodym}
+\DeclareAtomName{60}{Neodym}
+\DeclareAtomName{61}{Promethium}
+\DeclareAtomName{62}{Samarium}
+\DeclareAtomName{63}{Europium}
+\DeclareAtomName{64}{Gadolinium}
+\DeclareAtomName{65}{Terbium}
+\DeclareAtomName{66}{Dysprosium}
+\DeclareAtomName{67}{Holmium}
+\DeclareAtomName{68}{Erbium}
+\DeclareAtomName{69}{Thulium}
+\DeclareAtomName{70}{Ytterbium}
+\DeclareAtomName{71}{Lutetium}
+\DeclareAtomName{72}{Hafnium}
+\DeclareAtomName{73}{Tantal}
+\DeclareAtomName{74}{Wolfram}
+\DeclareAtomName{75}{Rhenium}
+\DeclareAtomName{76}{Osmium}
+\DeclareAtomName{77}{Iridium}
+\DeclareAtomName{78}{Platin}
+\DeclareAtomName{79}{Gold}
+\DeclareAtomName{80}{Quecksilber}
+\DeclareAtomName{81}{Thallium}
+\DeclareAtomName{82}{Blei}
+\DeclareAtomName{83}{Bismut}
+\DeclareAtomName{84}{Polonium}
+\DeclareAtomName{85}{Astat}
+\DeclareAtomName{86}{Radon}
+\DeclareAtomName{87}{Francium}
+\DeclareAtomName{88}{Radium}
+\DeclareAtomName{89}{Actinium}
+\DeclareAtomName{90}{Thorium}
+\DeclareAtomName{91}{Protactinium}
+\DeclareAtomName{92}{Uran}
+\DeclareAtomName{93}{Neptunium}
+\DeclareAtomName{94}{Plutonium}
+\DeclareAtomName{95}{Americium}
+\DeclareAtomName{96}{Curium}
+\DeclareAtomName{97}{Berkelium}
+\DeclareAtomName{98}{Californium}
+\DeclareAtomName{99}{Einsteinium}
+\DeclareAtomName{100}{Fermium}
+\DeclareAtomName{101}{Mendelevium}
+\DeclareAtomName{102}{Nobelium}
+\DeclareAtomName{103}{Lawrencium}
+\DeclareAtomName{104}{Rutherfordium}
+\DeclareAtomName{105}{Dubnium}
+\DeclareAtomName{106}{Seaborgium}
+\DeclareAtomName{107}{Bohrium}
+\DeclareAtomName{108}{Hassium}
+\DeclareAtomName{109}{Meitnerium}
+\DeclareAtomName{110}{Darmstadtium}
+\DeclareAtomName{111}{Roentgenium}
+\DeclareAtomName{112}{Copernicium}
+
+\endinput
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index f9add8e22f4..ffdb2394833 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -201,7 +201,7 @@ my @TLP_working = qw(
ec ecc ecclesiastic ecltree eco economic
ecv ed edfnotes edmac edmargin ednotes eemeir eepic efbox egameps
egplot eiad eiad-ltx eijkhout einfuehrung ejpecp ekaia
- elbioimp electrum eledform eledmac ellipsis elmath elocalloc
+ elbioimp electrum eledform eledmac elements ellipsis elmath elocalloc
elpres elsarticle
elteikthesis eltex elvish elzcards
emarks embedall embrac emptypage emulateapj emp
diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
index 1027d132f8d..f453a462517 100644
--- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
@@ -289,6 +289,7 @@ depend edmargin
depend eemeir
depend efbox
depend egplot
+depend elements
depend ellipsis
depend elmath
depend elocalloc
diff --git a/Master/tlpkg/tlpsrc/elements.tlpsrc b/Master/tlpkg/tlpsrc/elements.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/elements.tlpsrc