From 716054507cf3c82578fca00f234f742a74ed6b07 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 5 Nov 2013 23:20:52 +0000
Subject: bohr (5nov13)

git-svn-id: svn://tug.org/texlive/trunk@32083 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/bohr/bohr.sty | 433 ++++++++++++++++++++++--------
 1 file changed, 327 insertions(+), 106 deletions(-)

(limited to 'Master/texmf-dist/tex/latex/bohr/bohr.sty')

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
@@ -225,12 +299,87 @@
   \fi
 }
 
+% --------------------------------------------------------------------------
+% 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
-- 
cgit v1.2.3

