summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-11-05 23:20:52 +0000
committerKarl Berry <karl@freefriends.org>2013-11-05 23:20:52 +0000
commit716054507cf3c82578fca00f234f742a74ed6b07 (patch)
treeb69b6d0feeeff3e72121ead07f562b96ca0ccaeb
parentb5ba601a229f163d52b5f8b68a297e92e675b401 (diff)
bohr (5nov13)
git-svn-id: svn://tug.org/texlive/trunk@32083 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/bohr/README11
-rw-r--r--Master/texmf-dist/doc/latex/bohr/bohr_en.pdfbin103404 -> 429030 bytes
-rw-r--r--Master/texmf-dist/doc/latex/bohr/bohr_en.tex425
-rw-r--r--Master/texmf-dist/tex/latex/bohr/bohr.sty433
-rw-r--r--Master/texmf-dist/tex/latex/bohr/bohr_elements_english.def4
-rw-r--r--Master/texmf-dist/tex/latex/bohr/bohr_elements_french.def114
-rw-r--r--Master/texmf-dist/tex/latex/bohr/bohr_elements_german.def4
7 files changed, 673 insertions, 318 deletions
diff --git a/Master/texmf-dist/doc/latex/bohr/README b/Master/texmf-dist/doc/latex/bohr/README
index e521e1022a2..0393d2d5081 100644
--- a/Master/texmf-dist/doc/latex/bohr/README
+++ b/Master/texmf-dist/doc/latex/bohr/README
@@ -1,15 +1,15 @@
--------------------------------------------------------------------------
-the BOHR package v0.2c
+the BOHR package v0.3
simple atom representation according to the Bohr model
-2012/12/30
+2013/11/05
--------------------------------------------------------------------------
Clemens Niederberger
Web: https://bitbucket.org/cgnieder/bohr/
E-Mail: contact@mychemistry.eu
--------------------------------------------------------------------------
-Copyright 2012 Clemens Niederberger
+Copyright 2012-2013 Clemens Niederberger
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -26,9 +26,10 @@ The Current Maintainer of this work is Clemens Niederberger.
The bohr package consists of the files
- bohr.sty
- bohr_en.tex, bohr_en.pdf
- - bohr_elements_english.def, bohr_elements_german.def
+ - bohr_elements_english.def, bohr_elements_german.def,
+ bohr_elements_french.def
- README
--------------------------------------------------------------------------
If you have any ideas, questions, suggestions or bugs to report, please
feel free to contact me.
--------------------------------------------------------------------------- \ No newline at end of file
+--------------------------------------------------------------------------
diff --git a/Master/texmf-dist/doc/latex/bohr/bohr_en.pdf b/Master/texmf-dist/doc/latex/bohr/bohr_en.pdf
index 4b4549ba79c..59af9fe18e1 100644
--- a/Master/texmf-dist/doc/latex/bohr/bohr_en.pdf
+++ b/Master/texmf-dist/doc/latex/bohr/bohr_en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/bohr/bohr_en.tex b/Master/texmf-dist/doc/latex/bohr/bohr_en.tex
index d08e45bff10..3802ad3ed9c 100644
--- a/Master/texmf-dist/doc/latex/bohr/bohr_en.tex
+++ b/Master/texmf-dist/doc/latex/bohr/bohr_en.tex
@@ -1,5 +1,5 @@
-% arara: xelatex
-% arara: xelatex
+% arara: pdflatex
+% arara: pdflatex
% --------------------------------------------------------------------------
% the BOHR package
%
@@ -34,214 +34,233 @@
% feel free to contact me.
% --------------------------------------------------------------------------
%
-% if you want to compile this documentation you'll need the document class
-% `cnpkgdoc' which you can get here:
-% https://bitbucket.org/cgnieder/cnpkgdoc/
-% the class is licensed LPPL 1.3 or later
+% if you want to compile this documentation you'll need my `cnltx` bundle
+% which you can get here:
+% https://github.com/cgnieder/cnltx/
%
-% use `xelatex --shell-scape' for compilation
-%
-\documentclass[toc=index]{cnpkgdoc}
-\docsetup{
- pkg = bohr ,
- cmd = \BOHR ,
- code-box = {
- skipbelow = .5\baselineskip plus .5ex minus .5ex ,
- skipabove = .5\baselineskip plus .5ex minus .5ex ,
- roundcorner = 3pt ,
- innerleftmargin = 1.5em ,
- innerrightmargin = 1.5em
+\documentclass[load-preamble+]{cnltx-doc}
+\usepackage[utf8]{inputenc}
+\usepackage{bohr}
+
+\setcnltx{
+ package = bohr ,
+ authors = Clemens Niederberger ,
+ email = contact@mychemistry.eu ,
+ url = https://bitbucket.org/cgnieder/bohr/ ,
+ add-cmds = {
+ atomicnumber,
+ bohr,
+ DeclareAtomName,
+ DeclareAtomSymbol,
+ DeclareElectronDistribution,
+ elementname,
+ elementsymbol,
+ setbohr,
+ Z
+ } ,
+ add-silent-cmds = ch ,
+ abstract = {%
+ This package provides means for the creation of simple
+ Bohr models of atoms up to the atomic number 112. Additionally commands
+ are provided to convert atomic numbers to element symbols or element names
+ and vice versa.\par
+ The package is inspired by a question on
+ \url{http://tex.stackexchange.com/}:
+ \href{http://tex.stackexchange.com/questions/73410/draw-bohr-atomic-model-with-electron-shells-in-tex}%
+ {Draw Bohr atomic model with electron shells in \TeX?}%
} ,
- gobble = 1
+ index-setup = {
+ othercode = \footnotesize ,
+ level = \addsec ,
+ noclearpage
+ } ,
+ makeindex-setup = {
+ columns = 3 ,
+ columnsep = 1em
+ }
}
-\addcmds{bohr,ch,elementname,elementsymbol,setbohr}
-\usepackage{chemmacros}
-\usepackage{fontspec}
-\usepackage{superiors}
-\usepackage{fnpct}
-
-\usepackage{embrac}[2012/06/29]
-\ChangeEmph{[}[,.02em]{]}[.055em,-.08em]
-\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em]
-
-\renewcommand*\othersectionlevelsformat[3]{\textcolor{main}{#3\autodot}\enskip}
-\renewcommand*\partformat{\textcolor{main}{\partname~\thepart\autodot}}
-
-\usepackage{filecontents}
-\begin{filecontents}{\jobname.ist}
- heading_prefix "{\\bfseries "
- heading_suffix "\\hfil}\\nopagebreak\n"
- headings_flag 1
- delim_0 "\\dotfill "
- delim_1 "\\dotfill "
- delim_2 "\\dotfill "
- delim_r "\\textendash"
- suffix_2p "\\nohyperpage{\\,f.}"
- suffix_3p "\\nohyperpage{\\,ff.}"
-\end{filecontents}
-
-\usepackage{imakeidx}
-% \indexsetup{noclearpage}
-\makeindex[columns=2,intoc,options={-sl \jobname.ist}]
-
-\TitlePicture{%
- \parbox{.7\linewidth}{This package provides means for the creation of simple
- Bohr models of atoms up to the atomic number 112. Additionally commands are
- provided to convert atomic numbers to element symbols or element names and vice
- versa.\par
- The package is inspired by a question on \url{http://tex.stackexchange.com/}:
- \href{http://tex.stackexchange.com/questions/73410/draw-bohr-atomic-model-with-electron-shells-in-tex}%
- {Draw Bohr atomic model with electron shells in TeX?}}%
-}
+% \microtypesetup{tracking=scshape}
-\newcommand*\Default[1]{%
- \hfill\llap
- {%
- \ifblank{#1}%
- {(initially~empty)}%
- {Default:~\code{#1}}%
- }%
- \newline
-}
+\defbibheading{bibliography}{\addsec{References}}
+
+\newpackagename\BOHR{bohr}
+
+\usepackage{chemmacros}
\begin{document}
-\section{Licence and Requirements}\secidx{License}
-\BOHR is placed under the terms of the \LaTeX{} Project Public License,
-version 1.3 or later (\url{http://www.latex-project.org/lppl.txt}).
-It has the status ``maintained.''
-
-\BOHR loads and needs the packages \paket[pgf]{tikz}, \paket{pgfopts} and
-\paket{etoolbox}.
-\secidx*{License}
-
-\section{Options}\secidx{Options}
-Every option described in the manual can also be used as package option. Options
-are indicated as \key{option} and are all key/value like options. Some options can
-be set without value, too. Then the \default{underlined} value is used.
-\secidx*{Options}
-
-\section{Usage}\secidx{Usage}
-\BOHR is used like any other \LaTeXe\ package:
-\begin{beispiel}[code only]
- \usepackage{bohr}
-\end{beispiel}
-
-The main command, \cmd{bohr}, creates the models:
-\begin{beschreibung}
- \Befehl{bohr}\oa{<num of shells>}\ma{<number of electrons>}\ma{<atom name>}
-\end{beschreibung}
+\section{Licence and Requirements}
+\license
+
+The \BOHR\ package loads and needs the packages
+\needpackage[graphics]{pgf}~\cite{pkg:pgf} and
+\pkg{cnltx-base}\footnote{\CTANurl{cnltx}}~\cite{bnd:cnltx}.
+
+\section{Options}
+Every option described in the manual can also be used as package option.
+Options are indicated as \option*{option} and are all key/value like options.
+Some options can be set without value, too. Then the
+\code{\default{underlined}} value is used.
+
+\section{Usage}
+\BOHR\ is used like any other \LaTeXe\ package:
+\begin{sourcecode}
+ \usepackage{bohr}
+\end{sourcecode}
+
+The main command, \cs{bohr}, creates the models:
+\begin{commands}
+ \command{bohr}[\oarg{num of shells}\marg{num of electrons}\marg{atom name}]
+ The main command. The mandatory arguments take the number of electrons to
+ be printed and the atom symbol that is printed in the center.
+\end{commands}
+
This is described best by an example:
-\begin{beispiel}
- \bohr{3}{Li}
-\end{beispiel}
-There is not much more to it. Another example using the optional argument:
-\begin{beispiel}
- \bohr[2]{2}{$\mathrm{Li^+}$}
-\end{beispiel}
-\secidx*{Usage}
-
-\section{Customization}\secidx{Customization}
-\BOHR provides a handful of options to customize the appearance:
-\begin{beschreibung}
- \Befehl{setbohr}{<options>}\newline
- Options are set in a key/value syntax using this command.
- \Option{insert-symbol}{\default{true}|false}\Default{false}
- If set to \code{true} \BOHR will insert the atomic symbol suiting to the given
- electron number if \emph{no} third argument is given.
- \Option{insert-number}{\default{true}|false}\Default{false}
- If set to \code{true} \BOHR will use the appropriate number of electrons
- for the given element symbol in the third argument if \emph{no} second argument
- is given. This of course only works if the third argument is one of the 112
- element symbols.
- \Option{insert-missing}{\default{true}|false}\Default{false}
- Sets both \key{insert-symbol} and \key{insert-number}.
- \Option{atom-style}{<code>}\Default{}
- This code will be placed immediatly before the third argument of \cmd{bohr}.
- The last macro in it may need one argument.
- \Option{name-options-set}{<tikz>}\Default{}
- This value is passed to the options of the \cmd*{node} the third argument of
- \cmd{bohr} is placed in.
- \Option{name-options-add}{<tikz>}\Default{}
- This value will be added to options set with \key{name-options-set}.
- \Option{nucleus-options-set}{<tikz>}\Default{draw=black!80,fill=black!10,opacity=.25}
- This value is passed to the options of the \cmd*{draw} command that draws the
- circle around the name-node.
- \Option{nucleus-options-add}{<tikz>}\Default{}
- This value will be added to options set with \key{nucleus-options-set}.
- \Option{nucleus-radius}{<dim>}\Default{1em}
- The radius of the circle around the name-node.
- \Option{electron-options-set}{<tikz>}\Default{blue!50!black!50}
- This value is passed to the options of the \cmd*{fill} command that draws the
- electrons.
- \Option{electron-options-add}{<tikz>}\Default{}
- This value will be added to options set with \key{electron-options-set}.
- \Option{electron-radius}{<dim>}\Default{1.5pt}
- The radius of the circles that represent the electrons.
- \Option{shell-options-set}{<tikz>}\Default{draw=blue!75,thin}
- This value is passed to the options of the \cmd*{draw} command that draws the
- circles that represent the shells.
- \Option{shell-options-add}{<tikz>}\Default{}
- This value will be added to options set with \key{shell-options-set}.
- \Option{shell-dist}{<dim>}\Default{1em}
- The distance between the nucleus and the first shell and between subsequent
- shells.
- \Option{german}{\default{true}|false}\Default{false}
- If set to \code{true} the German names are defined (see section~\ref{sec:additional}
- to understand what I mean). They are also defined if you use \paket{babel} and
- select language \code{german} or \code{ngerman} in the preamble. The same holds
- for \paket{polyglossia}.
-\end{beschreibung}
-
-\begin{beispiel}
- \setbohr{name-options-set={font=\footnotesize\sffamily}}
- \bohr{2}{He} \bohr{7}{N}
-\end{beispiel}
-
-\begin{beispiel}
- % uses package `chemmacros'
- \setbohr{atom-style={\footnotesize\sffamily\ch}}
- \bohr{0}{H+} \bohr{10}{F-}
-\end{beispiel}
-
-\begin{beispiel}
- \setbohr{
- shell-options-add = dashed,
- shell-dist = .5em,
- insert-missing
- }
- \bohr{6}{} \bohr{}{K}
-\end{beispiel}
-\secidx*{Customization}
-
-\section{Additional Commands}\label{sec:additional}
-\BOHR provides some additional commands that return the element symbol or the
+\begin{example}[side-by-side]
+ \bohr{3}{Li}
+\end{example}
+There is not much more to it. Another example using the optional argument:
+\begin{example}[side-by-side]
+ \bohr[2]{2}{$\mathrm{Li^+}$}
+\end{example}
+
+\section{Customization}
+\BOHR\ provides a handful of options to customize the appearance:
+\begin{commands}
+ \command{setbohr}[\marg{options}]
+ Options are set in a key/value syntax using this command.
+\end{commands}
+\begin{options}
+ \keybool{insert-symbol}\Default{false}
+ If set to \code{true} \BOHR\ will insert the atomic symbol suiting to the
+ given electron number if \emph{no} third argument is given.
+ \keybool{insert-number}\Default{false}
+ If set to \code{true} \BOHR\ will use the appropriate number of electrons
+ for the given element symbol in the third argument if \emph{no} second
+ argument is given. This of course only works if the third argument is one
+ of the 112 element symbols.
+ \keybool{insert-missing}\Default{false}
+ Sets both \option{insert-symbol} and \option{insert-number}.
+ \keyval{atom-style}{code}\Default
+ This code will be placed immediatly before the third argument of
+ \cs{bohr}. The last macro in it may need one argument.
+ \keyval{name-options-set}{tikz option}\Default
+ This value is passed to the options of the \cs*{node} the third argument
+ of \cs{bohr} is placed in.
+ \keyval{name-options-add}{tikz options}\Default
+ This value will be added to options set with \option{name-options-set}.
+ \keyval{nucleus-options-set}{tikz options}{}
+ \Default{draw=black!80,fill=black!10,opacity=.25}
+ This value is passed to the options of the \cs*{draw} command that draws
+ the circle around the name-node.
+ \keyval{nucleus-options-add}{tikz options}\Default
+ This value will be added to options set with \option{nucleus-options-set}.
+ \keyval{nucleus-radius}{dimension}\Default{1em}
+ The radius of the circle around the name-node.
+ \keyval{electron-options-set}{tikz options}\Default{blue!50!black!50}
+ This value is passed to the options of the \cs*{fill} command that draws
+ the electrons.
+ \keyval{electron-options-add}{tikz options}\Default
+ This value will be added to options set with \option{electron-options-set}.
+ \keyval{electron-radius}{dimension}\Default{1.5pt}
+ The radius of the circles that represent the electrons.
+ \keyval{shell-options-set}{tikz options}\Default{draw=blue!75,thin}
+ This value is passed to the options of the \cs*{draw} command that draws
+ the circles that represent the shells.
+ \keyval{shell-options-add}{tikz options}\Default
+ This value will be added to options set with \option{shell-options-set}.
+ \keyval{shell-dist}{dimension}\Default{1em}
+ The distance between the nucleus and the first shell and between subsequent
+ shells.
+ \keyval{language}{language}\Default
+ \sinceversion{0.2d}Select the language used for the element names manually
+ rather than letting \BOHR\ select it automatically. This option must be
+ used as package option or in the preamble in order to have an effect.
+ Currently provided languages are \code{English}, \code{French} and
+ \code{German}. If this option is not used the document language at the
+ end of the preamble (as set by \pkg{babel} or \pkg{polyglossia}) is
+ used.
+ \keychoice{distribution-method}{periodic,quantum}\Default{quantum}
+ \sinceversion{0.3}Determines how the electrons are distributed on the
+ shells. \code{periodic} distributes the electrons 2-8-8-18-18-32-32, \ie,
+ according to the place of the corresponding atom in the periodic table of
+ elements. \code{quantum} distributes the electrons according the the
+ electron configuration of the corresponding atom where each shell
+ represents the main quantum number. \ch{Pd} for example has the
+ configuration $1s^22s^22p^63s^23p^63d^{10}4s^24p^64d^{10}$ and would get
+ two electrons on the first shell, 8~electrons on the second, and
+ 18~electrons each on the third and fourth.
+\end{options}
+
+\begin{example}
+ \setbohr{name-options-set={font=\footnotesize\sffamily}}
+ \bohr{2}{He} \bohr{7}{N}
+\end{example}
+
+\begin{example}
+ % uses package `chemmacros'
+ \setbohr{atom-style={\footnotesize\sffamily\ch}}
+ \bohr{0}{H+} \bohr{10}{F-}
+\end{example}
+
+\begin{example}[side-by-side]
+ \setbohr{
+ shell-options-add = dashed,
+ shell-dist = .5em,
+ insert-missing
+ }
+ \bohr{6}{} \bohr{}{K}
+\end{example}
+
+\section{Additional Commands}\label{sec:additional-commands}
+\BOHR\ provides some additional commands that return the element symbol or the
element name to a given atomic number and vice versa.
-\begin{beschreibung}
- \Befehl{elementsymbol}{<atomic number>|<element name>}\newline
- Returns the element symbol for a given atomic number or element name.
- \cmd{elementsymbol}{80}: \elementsymbol{80}; \cmd{elementsymbol}{rhenium}:
- \elementsymbol{rhenium}.
- \Befehl{elementname}{<atomic number>|<element symbol>}\newline
- Returns the element name for a given atomic number or element symbol.
- \cmd{elementname}{80}: \elementname{80}; \cmd{elementname}{Rh}: \elementname{Rh}.
- \Befehl{atomicnumber}{<element name>|<element symbol>}\newline
- Returns the atomic number for a given element name or element symbol.
- \cmd{atomicnumber}{Hg}: \atomicnumber{Hg}; \cmd{atomicnumber}{rhenium}
- \atomicnumber{rhenium}.
- \Befehl{Z}\newline
- If this command isn't defined by some other package it is available as an
- alias of \cmd{atomicnumber}.
-\end{beschreibung}
-
-\begin{beispiel}
- The elements \elementname{F}, \elementname{Cl}, \elementname{Br},
- \elementname{I} and \elementname{At} are called \emph{halogens}.
-\end{beispiel}
-
-\section{Implementation}
-\implementation
-
-\printindex
-\end{document} \ No newline at end of file
+\begin{commands}
+ \command{elementsymbol}[\code{\{\choices{\meta{atomic number},\meta{element name}}\}}]
+ Returns the element symbol for a given atomic number or element name.
+ \verbcode+\elementsymbol{80}+: \elementsymbol{80};
+ \verbcode+\elementsymbol{rhenium}+: \elementsymbol{rhenium}.
+ \command{elementname}[\code{\{\choices{\meta{atomic number}|\meta{element symbol}}\}}]
+ Returns the element name for a given atomic number or element symbol.
+ \verbcode+\elementname{80}+: \elementname{80};
+ \verbcode+\elementname{Rh}+: \elementname{Rh}.
+ \command{atomicnumber}[\code{\{\choices{\meta{element name}|\meta{element symbol}}\}}]
+ Returns the atomic number for a given element name or element symbol.
+ \verbcode+\atomicnumber{Hg}+: \atomicnumber{Hg};
+ \verbcode+\atomicnumber{rhenium}+ \atomicnumber{rhenium}.
+ \command{Z}
+ If this command isn't defined by some other package it is available as an
+ alias of \cs{atomicnumber}.
+\end{commands}
+
+\begin{example}
+ The elements \elementname{F}, \elementname{Cl}, \elementname{Br},
+ \elementname{I} and \elementname{At} are called \emph{halogens}.
+\end{example}
+
+\section{Internal Commands}\label{sec:internal-commands}
+The element properties used by \BOHR\ are defined through the following commands:
+\begin{commands}
+ \command{DeclareAtomSymbol}[\marg{atomic number}\marg{atom symbol}]
+ The package file contains 112~lines like the following:
+ \verbcode+\DeclareAtomSymbol{29}{Cu}+. They associate atomic number with
+ the corresponding atom symbol. This command could be used to change an
+ element's symbol.
+ \command{DeclareAtomName}[\marg{atomic number}\marg{element name}]
+ \BOHR\ comes with a few language files named
+ \code{bohr\_elements\_\meta{language}.def}. They contain of 112~entries
+ like \verbcode+\DeclareAtomName{29}{Copper}+ which associate atomic number
+ and element name. This command could be used to change an element's name.
+ \command{DeclareElectronDistribution}[\marg{atomic number}\marg{electron
+ distribution}]
+ The \meta{electron distribution} is a comma separated list of integers
+ which determines how the electrons are distributed on the shells when
+ \keyis{distribution-method}{quantum}. The package file contains
+ 112~entries like \verbcode+\DeclareElectronDistribution{29}{2,8,18,1}+.
+ This command could be used to change an element's electron configuration.
+\end{commands}
+
+\clearpage
+
+\end{document}
diff --git a/Master/texmf-dist/tex/latex/bohr/bohr.sty b/Master/texmf-dist/tex/latex/bohr/bohr.sty
index 4d9e60a76b2..874d07c63b2 100644
--- a/Master/texmf-dist/tex/latex/bohr/bohr.sty
+++ b/Master/texmf-dist/tex/latex/bohr/bohr.sty
@@ -8,7 +8,7 @@
% Web: https://bitbucket.org/cgnieder/bohr/
% E-Mail: contact@mychemistry.eu
% --------------------------------------------------------------------------
-% Copyright 2012 Clemens Niederberger
+% Copyright 2012-2013 Clemens Niederberger
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -25,34 +25,104 @@
% The bohr package consists of the files
% - bohr.sty
% - bohr_en.tex, bohr_en.pdf
-% - bohr_elements_english.def, bohr_elements_german.def
+% - bohr_elements_english.def, bohr_elements_german.def,
+% bohr_elements_french.def
% - README
% --------------------------------------------------------------------------
% If you have any ideas, questions, suggestions or bugs to report, please
% feel free to contact me.
% --------------------------------------------------------------------------
-\def\@bohr@date{2012/12/30}
-\def\@bohr@version{v0.2c}
-\def\@bohr@description{simple atom representation according to the Bohr model}
+\newcommand*\@bohr@date{2013/11/05}
+\newcommand*\@bohr@version{v0.3}
+\newcommand*\@bohr@description{simple atom representation according to the Bohr model}
\ProvidesPackage{bohr}[\@bohr@date\space \@bohr@version\space \@bohr@description]
-\RequirePackage{tikz,etoolbox,pgfopts}
+\RequirePackage{tikz,cnltx-base}
% --------------------------------------------------------------------------
% message handling
-\def\@bohr@create@message#1{%
- \ifstrequal{#1}{Error}
+\newcommand*\@bohr@error@message{%
+ For details have a look at the `exsheets' manual.}
+
+\cnltx@create@generic@message{@bohr}{bohr}{Error}{\@bohr@error@message}
+\cnltx@create@generic@message{@bohr}{bohr}{Warning}{}
+\cnltx@create@generic@message{@bohr}{bohr}{WarningNoLine}{}
+\cnltx@create@generic@message{@bohr}{bohr}{Info}{}
+
+% --------------------------------------------------------------------------
+% options
+\newcommand*\@bohr@name@options{}
+\newcommand*\@bohr@write@atom[1]{#1}
+\newcommand*\@bohr@nucleus@radius{1em}
+\newcommand*\@bohr@electron@options{blue!50!black!50}
+\newcommand*\@bohr@electron@radius{1.5pt}
+\newcommand*\@bohr@shell@dist{1em}
+\newcommand*\@bohr@nucleus@options{draw=black!80,fill=black!10,opacity=.25}
+\newcommand*\@bohr@shell@options{draw=blue!75,thin}
+
+\newbool{bohr@insert@symbol}
+\newbool{bohr@insert@number}
+
+\newcommand*\@bohr@insert@symbol[2]{%
+ \ifbool{bohr@insert@symbol}
{%
- \lowercase{\csdef{@bohr@#1}}##1##2{%
- \csuse{Package#1}{bohr}{##1}{##2}}%
- }{%
- \lowercase{\csdef{@bohr@#1}}##1{%
- \csuse{Package#1}{bohr}{##1}}%
- }}
-\@bohr@create@message{Error}
-\@bohr@create@message{Warning}
-\@bohr@create@message{WarningNoLine}
-\@bohr@create@message{Info}
+ \ifblank{#2}
+ {\@bohr@write@atom{\@bohr@get@atom@symbol{#1}}}
+ {\@bohr@write@atom{#2}}%
+ }
+ {\@bohr@write@atom{#2}}}
+
+\newcommand\@bohr@add@options@to[2]{%
+ \edef#1{\expandonce#1,\unexpanded{#2}}%
+}
+
+\newcommand*\@bohr@option@deprecated[2]{%
+ \@bohr@warning{option `#1' has deprecated, use `#2' instead}%
+}
+
+\pgfkeys{
+ bohr/.cd,
+ insert-symbol/.is if = bohr@insert@symbol ,
+ insert-number/.is if = bohr@insert@number ,
+ insert-missing/.is choice,
+ insert-missing/true/.code =
+ \booltrue{bohr@insert@symbol}\booltrue{bohr@insert@number} ,
+ insert-missing/false/.code =
+ \boolfalse{bohr@insert@symbol}\boolfalse{bohr@insert@number} ,
+ insert-missing/.default = true ,
+ atom-style/.code = \def\@bohr@write@atom{#1} ,
+ name-options-set/.code = \def\@bohr@name@options{#1} ,
+ name-options-add/.code =
+ \@bohr@add@options@to\@bohr@name@options{#1} ,
+ nucleus-radius/.code = \def\@bohr@nucleus@radius{#1} ,
+ nucleus-options-set/.code = \def\@bohr@nucleus@options{#1} ,
+ nucleus-options-add/.code =
+ \@bohr@add@options@to\@bohr@nucleus@options{#1} ,
+ electron-radius/.code = \def\@bohr@electron@radius{#1} ,
+ electron-options-set/.code = \def\@bohr@electron@options{#1} ,
+ electron-options-add/.code =
+ \@bohr@add@options@to\@bohr@electron@options{#1} ,
+ shell-dist/.code = \def\@bohr@shell@dist{#1} ,
+ shell-options-set/.code = \def\@bohr@shell@options{#1} ,
+ shell-options-add/.code =
+ \@bohr@add@options@to\@bohr@shell@options{#1} ,
+ german/.code =
+ \@bohr@option@deprecated{german}{language=german} ,
+ ngerman/.code =
+ \@bohr@option@deprecated{ngerman}{language=german} ,
+ language/.code = \def\@bohr@language{#1} ,
+ distribution-method/.is choice ,
+ distribution-method/periodic/.code =
+ \def\@bohr@draw@electrons{\@bohr@draw@electrons@periodic} ,
+ distribution-method/quantum/.code =
+ \def\@bohr@draw@electrons{\@bohr@draw@electrons@quantum}
+}
+
+\newrobustcmd\setbohr[1]{\pgfqkeys{/bohr}{#1}}
+
+\setbohr{distribution-method=quantum}
+
+\ProcessPgfOptions*
% --------------------------------------------------------------------------
% the \bohr command
@@ -61,7 +131,7 @@
% #3: atom name
\newrobustcmd*\bohr[3][]{\@bohr{#1}{#2}{#3}}
-\def\@bohr#1#2#3{%
+\newcommand*\@bohr[3]{%
\ifblank{#2}% electron number given ?
{% no
\ifboolexpr{ bool {bohr@insert@number} and test {\ifblank{#3}} }
@@ -90,7 +160,7 @@
\else
\ifnum#2>112\relax
\@bohr@warning{I only know atoms up to 112 (Copernicium). You
- gave me #1 so I am using 112 instead.}
+ gave me #2 so I am using 112 instead.}
\def\@bohr@electron@current@number{112}%
\else
\def\@bohr@electron@current@number{#2}%
@@ -129,7 +199,7 @@
\endtikzpicture
}
-\def\@bohr@get@shell@num#1{%
+\newcommand*\@bohr@get@shell@num[1]{%
\ifnum#1<3\relax
\def\@bohr@shell@num{1}%
\else
@@ -157,7 +227,7 @@
\fi
}
-\def\@bohr@distribute@electrons#1#2#3#4{%
+\newrobustcmd*\@bohr@distribute@electrons[4]{%
\pgfmathparse{#2}%
\let\@bohr@last@electron\pgfmathresult
\foreach\@bohr@electron@number in {#1,...,\@bohr@last@electron}
@@ -168,7 +238,9 @@
}
}
-\def\@bohr@draw@electrons#1{%
+% the simple model according to periods:
+
+\newcommand*\@bohr@draw@electrons@periodic[1]{%
\ifnum#1<1\relax\else
\ifnum#1<3\relax
\@bohr@distribute@electrons{1}{#1}{180}{1}%
@@ -203,18 +275,20 @@
\@bohr@distribute@electrons{1}{18}{20}{5}%
\@bohr@distribute@electrons{1}{#1-54}{11.25}{6}%
\else
- \@bohr@distribute@electrons{1}{2}{180}{1}%
- \@bohr@distribute@electrons{1}{8}{45}{2}%
- \@bohr@distribute@electrons{1}{8}{45}{3}%
- \@bohr@distribute@electrons{1}{18}{20}{4}%
- \@bohr@distribute@electrons{1}{18}{20}{5}%
- \@bohr@distribute@electrons{1}{32}{11.25}{6}%
+ \@bohr@distribute@electrons{1}{2}{180}{1}%
+ \@bohr@distribute@electrons{1}{8}{45}{2}%
+ \@bohr@distribute@electrons{1}{8}{45}{3}%
+ \@bohr@distribute@electrons{1}{18}{20}{4}%
+ \@bohr@distribute@electrons{1}{18}{20}{5}%
+ \@bohr@distribute@electrons{1}{32}{11.25}{6}%
\ifnum#1<113\relax
\@bohr@distribute@electrons{1}{#1-86}{11.25}{7}%
\else
\@bohr@distribute@electrons{1}{26}{11.25}{7}%
- \@bohr@warning{I only know atoms up to 112 (Copernicium). You
- gave me #1 so I am using 112 instead.}
+ \@bohr@warning{%
+ I only know atoms up to 112 (Copernicium). You gave me
+ #1 so I am using 112 instead.%
+ }%
\fi
\fi
\fi
@@ -226,11 +300,86 @@
}
% --------------------------------------------------------------------------
+% electron distribution per electron number
+\newrobustcmd*\DeclareElectronDistribution[2]{%
+ \@bohr@define@electron@distribution{#1}{#2}%
+}
+\newrobustcmd*\@bohr@define@electron@distribution[2]{%
+ \csdef{@bohr@electron@distribution@\romannumeral#1}{#2}%
+}
+
+\newcounter{@bohr@shell@number}
+
+\newrobustcmd*\@bohr@draw@electrons@quantum[1]{%
+ \cnltx@expandargs(x)\@bohr@get@shell@electrons
+ {\csuse{@bohr@electron@distribution@\romannumeral#1}}%
+}
+
+\newrobustcmd*\@bohr@get@shell@electrons[1]{%
+ % \def\x{#1}\show\x
+ \setcounter{@bohr@shell@number}{0}%
+ \forcsvlist{\@bohr@draw@shell@electrons}{#1}%
+}
+
+\newrobustcmd*\@bohr@draw@shell@electrons[1]{%
+ \stepcounter{@bohr@shell@number}%
+ \ifnum\value{@bohr@shell@number}=1\relax % n=1
+ \@bohr@distribute@electrons{1}{#1}{180}{1}%
+ \fi
+ \ifnum\value{@bohr@shell@number}=2\relax % n=2
+ \@bohr@distribute@electrons{1}{#1}{45}{2}%
+ \fi
+ \ifnum\value{@bohr@shell@number}=3\relax % n=3
+ \ifnum#1<9\relax
+ \@bohr@distribute@electrons{1}{#1}{45}{3}%
+ \else
+ \@bohr@distribute@electrons{1}{#1}{20}{3}%
+ \fi
+ \fi
+ \ifnum\value{@bohr@shell@number}=4\relax % n=4
+ \ifnum#1<9\relax
+ \@bohr@distribute@electrons{1}{#1}{45}{4}%
+ \else
+ \ifnum#1<18\relax
+ \@bohr@distribute@electrons{1}{#1}{20}{4}%
+ \else
+ \@bohr@distribute@electrons{1}{#1}{11.25}{4}%
+ \fi
+ \fi
+ \fi
+ \ifnum\value{@bohr@shell@number}=5\relax % n=5
+ \ifnum#1<9\relax
+ \@bohr@distribute@electrons{1}{#1}{45}{5}%
+ \else
+ \ifnum#1<18\relax
+ \@bohr@distribute@electrons{1}{#1}{20}{5}%
+ \else
+ \@bohr@distribute@electrons{1}{#1}{11.25}{5}%
+ \fi
+ \fi
+ \fi
+ \ifnum\value{@bohr@shell@number}=6\relax % n=6
+ \ifnum#1<9\relax
+ \@bohr@distribute@electrons{1}{#1}{45}{6}%
+ \else
+ \ifnum#1<18\relax
+ \@bohr@distribute@electrons{1}{#1}{20}{6}%
+ \else
+ \@bohr@distribute@electrons{1}{#1}{11.25}{6}%
+ \fi
+ \fi
+ \fi
+ \ifnum\value{@bohr@shell@number}=7\relax % n=7
+ \@bohr@distribute@electrons{1}{#1}{180}{7}%
+ \fi
+}
+
+% --------------------------------------------------------------------------
% atomic numbers and element symbols and names
-\def\@bohr@define@atom@symbol#1#2{%
+\newrobustcmd*\@bohr@define@atom@symbol[2]{%
\csdef{@bohr@atom@symbol@num@\romannumeral#1}{#2}%
\lowercase{\csdef{@bohr@atom@number@#2}}{#1}}
-\def\@bohr@define@atom@name#1#2#3{%
+\newrobustcmd*\@bohr@define@atom@name[3]{%
\csdef{@bohr@atom@name@\romannumeral#1}{#2}%
\lowercase{\csdef{@bohr@atom@name@num@#3}}{#1}}
@@ -246,24 +395,24 @@
\newrobustcmd*\DeclareAtomSymbol[2]{%
\@bohr@define@atom@symbol{#1}{#2}}
-\def\@bohr@get@atom@symbol#1{%
+\newcommand*\@bohr@get@atom@symbol[1]{%
\csuse{@bohr@atom@symbol@num@\romannumeral#1}}
-\def\@bohr@get@atom@number#1{%
+\newcommand*\@bohr@get@atom@number[1]{%
\lowercase{\csuse{@bohr@atom@number@#1}}}
-\def\@bohr@get@atom@name#1{%
+\newcommand*\@bohr@get@atom@name[1]{%
\csuse{@bohr@atom@name@\romannumeral#1}}
-\def\@bohr@element@symbol#1{%
+\newcommand*\@bohr@element@symbol[1]{%
\lowercase{\ifcsdef{@bohr@atom@name@num@#1}}
{\lowercase{\@bohr@get@atom@symbol{\csuse{@bohr@atom@name@num@#1}}}}
{\@bohr@get@atom@symbol{#1}}}
-\def\@bohr@atomic@number#1{%
+\newcommand*\@bohr@atomic@number[1]{%
\lowercase{\ifcsdef{@bohr@atom@number@#1}}
{\@bohr@get@atom@number{#1}}
{\lowercase{\csuse{@bohr@atom@name@num@#1}}}}
-\def\@bohr@elemt@symbol#1{%
+\newcommand*\@bohr@elemt@symbol[1]{%
\if!\ifnum9<1#1!\@bohr@get@atom@name{#1}\fi
\else
\lowercase{\@bohr@get@atom@name{\csuse{@bohr@atom@number@#1}}}%
@@ -387,76 +536,143 @@
\DeclareAtomSymbol{111}{Rg}
\DeclareAtomSymbol{112}{Cn}
-% element names are defined in bohr_elements_english.def or
-% bohr_elements_german.def, respectively. Now we need to decide
-% which ones we want
-\AfterEndPreamble{
-\ifdef\bbl@afterfi{}{\long\def\bbl@afterfi#1{\fi#1}}
-\ifboolexpr
- {
- test {\iflanguage{german}} or
- test {\iflanguage{ngerman}}
- }
- {\booltrue{bohr@german}}{}
-\ifbool{bohr@german}
- {\input{bohr_elements_german.def}}
- {\input{bohr_elements_english.def}}
-}
-
+% period 1
+\DeclareElectronDistribution{1}{1}
+\DeclareElectronDistribution{2}{2}
+% period 2
+\DeclareElectronDistribution{3}{2,1}
+\DeclareElectronDistribution{4}{2,2}
+\DeclareElectronDistribution{5}{2,3}
+\DeclareElectronDistribution{6}{2,4}
+\DeclareElectronDistribution{7}{2,6}
+\DeclareElectronDistribution{8}{2,6}
+\DeclareElectronDistribution{9}{2,7}
+\DeclareElectronDistribution{10}{2,8}
+% period 3
+\DeclareElectronDistribution{11}{2,8,1}
+\DeclareElectronDistribution{12}{2,8,2}
+\DeclareElectronDistribution{13}{2,8,3}
+\DeclareElectronDistribution{14}{2,8,4}
+\DeclareElectronDistribution{15}{2,8,5}
+\DeclareElectronDistribution{16}{2,8,6}
+\DeclareElectronDistribution{17}{2,8,7}
+\DeclareElectronDistribution{18}{2,8,8}
+% period 4
+\DeclareElectronDistribution{19}{2,8,8,1}
+\DeclareElectronDistribution{20}{2,8,8,2}
+\DeclareElectronDistribution{21}{2,8,9,2}
+\DeclareElectronDistribution{22}{2,8,10,2}
+\DeclareElectronDistribution{23}{2,8,11,2}
+\DeclareElectronDistribution{24}{2,8,13,1}
+\DeclareElectronDistribution{25}{2,8,13,2}
+\DeclareElectronDistribution{26}{2,8,14,2}
+\DeclareElectronDistribution{27}{2,8,15,2}
+\DeclareElectronDistribution{28}{2,8,16,2}
+\DeclareElectronDistribution{29}{2,8,18,1}
+\DeclareElectronDistribution{30}{2,8,18,2}
+\DeclareElectronDistribution{31}{2,8,18,3}
+\DeclareElectronDistribution{32}{2,8,18,4}
+\DeclareElectronDistribution{33}{2,8,18,5}
+\DeclareElectronDistribution{34}{2,8,18,6}
+\DeclareElectronDistribution{35}{2,8,18,7}
+\DeclareElectronDistribution{36}{2,8,18,8}
+% period 5
+\DeclareElectronDistribution{37}{2,8,18,8,1}
+\DeclareElectronDistribution{38}{2,8,18,8,2}
+\DeclareElectronDistribution{39}{2,8,18,9,2}
+\DeclareElectronDistribution{40}{2,8,18,10,2}
+\DeclareElectronDistribution{41}{2,8,18,12,1}
+\DeclareElectronDistribution{42}{2,8,18,13,1}
+\DeclareElectronDistribution{43}{2,8,18,14,1}
+\DeclareElectronDistribution{44}{2,8,18,15,1}
+\DeclareElectronDistribution{45}{2,8,18,16,1}
+\DeclareElectronDistribution{46}{2,8,18,18}
+\DeclareElectronDistribution{47}{2,8,18,18,1}
+\DeclareElectronDistribution{48}{2,8,18,18,2}
+\DeclareElectronDistribution{49}{2,8,18,18,3}
+\DeclareElectronDistribution{50}{2,8,18,18,4}
+\DeclareElectronDistribution{51}{2,8,18,18,5}
+\DeclareElectronDistribution{52}{2,8,18,18,6}
+\DeclareElectronDistribution{53}{2,8,18,18,7}
+\DeclareElectronDistribution{54}{2,8,18,18,8}
+% period 6
+\DeclareElectronDistribution{55}{2,8,18,18,8,1}
+\DeclareElectronDistribution{56}{2,8,18,18,8,2}
+\DeclareElectronDistribution{57}{2,8,18,18,9,2}
+\DeclareElectronDistribution{58}{2,8,18,20,8,2}
+\DeclareElectronDistribution{59}{2,8,18,21,8,2}
+\DeclareElectronDistribution{60}{2,8,18,22,8,2}
+\DeclareElectronDistribution{61}{2,8,18,23,8,2}
+\DeclareElectronDistribution{62}{2,8,18,24,8,2}
+\DeclareElectronDistribution{63}{2,8,18,25,8,2}
+\DeclareElectronDistribution{64}{2,8,18,25,9,2}
+\DeclareElectronDistribution{65}{2,8,18,27,8,2}
+\DeclareElectronDistribution{66}{2,8,18,28,8,2}
+\DeclareElectronDistribution{67}{2,8,18,29,8,2}
+\DeclareElectronDistribution{68}{2,8,18,30,8,2}
+\DeclareElectronDistribution{69}{2,8,18,31,8,2}
+\DeclareElectronDistribution{70}{2,8,18,32,8,2}
+\DeclareElectronDistribution{71}{2,8,18,32,9,2}
+\DeclareElectronDistribution{72}{2,8,18,32,10,2}
+\DeclareElectronDistribution{73}{2,8,18,32,11,2}
+\DeclareElectronDistribution{74}{2,8,18,32,12,2}
+\DeclareElectronDistribution{75}{2,8,18,32,13,2}
+\DeclareElectronDistribution{76}{2,8,18,32,14,2}
+\DeclareElectronDistribution{77}{2,8,18,32,15,2}
+\DeclareElectronDistribution{78}{2,8,18,32,17,1}
+\DeclareElectronDistribution{79}{2,8,18,32,18,1}
+\DeclareElectronDistribution{80}{2,8,18,32,18,2}
+\DeclareElectronDistribution{81}{2,8,18,32,18,3}
+\DeclareElectronDistribution{82}{2,8,18,32,18,4}
+\DeclareElectronDistribution{83}{2,8,18,32,18,5}
+\DeclareElectronDistribution{84}{2,8,18,32,18,6}
+\DeclareElectronDistribution{85}{2,8,18,32,18,7}
+\DeclareElectronDistribution{86}{2,8,18,32,18,8}
+% period 7
+\DeclareElectronDistribution{87}{2,8,18,32,18,8,1}
+\DeclareElectronDistribution{88}{2,8,18,32,18,8,2}
+\DeclareElectronDistribution{89}{2,8,18,32,18,9,2}
+\DeclareElectronDistribution{90}{2,8,18,32,18,10,2}
+\DeclareElectronDistribution{91}{2,8,18,32,20,9,2}
+\DeclareElectronDistribution{92}{2,8,18,32,21,9,2}
+\DeclareElectronDistribution{93}{2,8,18,32,22,9,2}
+\DeclareElectronDistribution{94}{2,8,18,32,24,8,2}
+\DeclareElectronDistribution{95}{2,8,18,32,25,8,2}
+\DeclareElectronDistribution{96}{2,8,18,32,25,9,2}
+\DeclareElectronDistribution{97}{2,8,18,32,27,8,2}
+\DeclareElectronDistribution{98}{2,8,18,32,28,8,2}
+\DeclareElectronDistribution{99}{2,8,18,32,29,8,2}
+\DeclareElectronDistribution{100}{2,8,18,32,30,8,2}
+\DeclareElectronDistribution{101}{2,8,18,32,31,8,2}
+\DeclareElectronDistribution{102}{2,8,18,32,32,8,2}
+\DeclareElectronDistribution{103}{2,8,18,32,32,9,2}
+\DeclareElectronDistribution{104}{2,8,18,32,32,10,2}
+\DeclareElectronDistribution{105}{2,8,18,32,32,11,2}
+\DeclareElectronDistribution{106}{2,8,18,32,32,12,2}
+\DeclareElectronDistribution{107}{2,8,18,32,32,13,2}
+\DeclareElectronDistribution{108}{2,8,18,32,32,14,2}
+\DeclareElectronDistribution{109}{2,8,18,32,32,15,2}
+\DeclareElectronDistribution{110}{2,8,18,32,32,17,1}
+\DeclareElectronDistribution{111}{2,8,18,32,32,18,1}
+\DeclareElectronDistribution{112}{2,8,18,32,32,18,2}
% --------------------------------------------------------------------------
-% options
-\def\@bohr@name@options{}
-\def\@bohr@write@atom#1{#1}
-\def\@bohr@nucleus@radius{1em}
-\def\@bohr@electron@options{blue!50!black!50}
-\def\@bohr@electron@radius{1.5pt}
-\def\@bohr@shell@dist{1em}
-\def\@bohr@nucleus@options{draw=black!80,fill=black!10,opacity=.25}
-\def\@bohr@shell@options{draw=blue!75,thin}
-
-\newbool{bohr@insert@symbol}
-\newbool{bohr@insert@number}
-\newbool{bohr@german}
-
-\def\@bohr@insert@symbol#1#2{%
- \ifbool{bohr@insert@symbol}
- {\ifblank{#2}{\@bohr@get@atom@symbol{#1}}{\@bohr@write@atom{#2}}}
- {\@bohr@write@atom{#2}}}
-
-\pgfkeys{
- bohr/.cd,
- insert-symbol/.is if = bohr@insert@symbol ,
- insert-number/.is if = bohr@insert@number ,
- insert-missing/.is choice,
- insert-missing/true/.code =
- \booltrue{bohr@insert@symbol}\booltrue{bohr@insert@number} ,
- insert-missing/false/.code =
- \boolfalse{bohr@insert@symbol}\boolfalse{bohr@insert@number} ,
- insert-missing/.default = true ,
- atom-style/.code = \def\@bohr@write@atom{#1} ,
- name-options-set/.code = \def\@bohr@name@options{#1} ,
- name-options-add/.code =
- \expandafter\def\expandafter\@bohr@name@options\expandafter{\@bohr@name@options,#1} ,
- nucleus-radius/.code = \def\@bohr@nucleus@radius{#1} ,
- nucleus-options-set/.code = \def\@bohr@nucleus@options{#1} ,
- nucleus-options-add/.code =
- \expandafter\def\expandafter\@bohr@nucleus@options\expandafter{\@bohr@nucleus@options,#1} ,
- electron-radius/.code = \def\@bohr@electron@radius{#1} ,
- electron-options-set/.code = \def\@bohr@electron@options{#1} ,
- electron-options-add/.code =
- \expandafter\def\expandafter\@bohr@electron@options\expandafter{\@bohr@electron@options,#1} ,
- shell-dist/.code = \def\@bohr@shell@dist{#1} ,
- shell-options-set/.code = \def\@bohr@shell@options{#1} ,
- shell-options-add/.code =
- \expandafter\def\expandafter\@bohr@shell@options\expandafter{\@bohr@shell@options,#1} ,
- german/.is if = bohr@german ,
- ngerman/.is if = bohr@german
+% extandable language settings
+\RequirePackage{translations}
+\AfterEndPreamble{
+ % this will load a file `bohr_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\@bohr@language
+ {\edef\@bohr@language{\@trnslt@language{\@bohr@language}}}
+ {\def\@bohr@language{\@trnslt@language{\@trnslt@current@language}}}
+ \InputIfFileExists
+ {bohr_elements_\@bohr@language.def}
+ {}
+ {\input{bohr_elements_english.def}}
}
-\newrobustcmd\setbohr[1]{\pgfqkeys{/bohr}{#1}}
-
-\ProcessPgfOptions*
\endinput
% HISTORY
@@ -465,4 +681,9 @@
- added the commands \elementname and \elementsymbol with
language support German and English
- improved error checking
-2012/12/30 v0.2c - bug fixes in error checking \ No newline at end of file
+2012/12/30 v0.2c - bug fixes in error checking
+2013/07/25 v0.2d - bug fix in warning message
+ - added missing \@bohr@write@atom to \@bohr@insert@symbol
+ - extended language support, added french element names
+ - corrected name of Praseodynium
+2013/11/?? v0.3 - draw shell electrons according to main quantum number
diff --git a/Master/texmf-dist/tex/latex/bohr/bohr_elements_english.def b/Master/texmf-dist/tex/latex/bohr/bohr_elements_english.def
index 6ac2f88f988..e5fb902ed90 100644
--- a/Master/texmf-dist/tex/latex/bohr/bohr_elements_english.def
+++ b/Master/texmf-dist/tex/latex/bohr/bohr_elements_english.def
@@ -56,7 +56,7 @@
\DeclareAtomName{56}{Barium}
\DeclareAtomName{57}{Lanthanum}
\DeclareAtomName{58}{Cerium}
-\DeclareAtomName{59}{Praesodymium}
+\DeclareAtomName{59}{Praseodymium}
\DeclareAtomName{60}{Neodymium}
\DeclareAtomName{61}{Promethium}
\DeclareAtomName{62}{Samarium}
@@ -111,4 +111,4 @@
\DeclareAtomName{111}{Roentgenium}
\DeclareAtomName{112}{Copernicium}
-\endinput \ No newline at end of file
+\endinput
diff --git a/Master/texmf-dist/tex/latex/bohr/bohr_elements_french.def b/Master/texmf-dist/tex/latex/bohr/bohr_elements_french.def
new file mode 100644
index 00000000000..b729ff7bb8b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bohr/bohr_elements_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/bohr/bohr_elements_german.def b/Master/texmf-dist/tex/latex/bohr/bohr_elements_german.def
index e6b451ad0bb..c9af43eaa86 100644
--- a/Master/texmf-dist/tex/latex/bohr/bohr_elements_german.def
+++ b/Master/texmf-dist/tex/latex/bohr/bohr_elements_german.def
@@ -56,7 +56,7 @@
\DeclareAtomName{56}{Barium}
\DeclareAtomName{57}{Lanthan}
\DeclareAtomName{58}{Cer}
-\DeclareAtomName{59}{Praesodym}
+\DeclareAtomName{59}{Praseodym}
\DeclareAtomName{60}{Neodym}
\DeclareAtomName{61}{Promethium}
\DeclareAtomName{62}{Samarium}
@@ -111,4 +111,4 @@
\DeclareAtomName{111}{Roentgenium}
\DeclareAtomName{112}{Copernicium}
-\endinput \ No newline at end of file
+\endinput