File:Periodic table, good SVG.svg

Summary

Description
English: A by-product of File:Monoisotopic, mononuclidic, radioactive elements.svg with more classical proportions of element cells, but without information about isotopes. These Perl programs generate a good, structured SVG code and may be modified further to create more sentient images that this concrete table.

Elements:

  •    Stable
  • Radioactive:
    • natural (industrially extractable)
    •    natural, marginally
    •    synthetic (purely)
209Bi is practically stable, so it is made orange, not red.
Date
Source Own work
Author Incnis Mrsi
Other versions
SVG development
InfoField
 The SVG code is valid.
 This vector image was created with Perl.
Category:Valid SVG created with Perl#Periodic%20table,%20good%20SVG.svg
 Category:Translation possible - SVGThis file uses embedded text that can be easily translated using a text editor.
Category:Graphic Lab-en#%20Periodic%20table,%20good%20SVG.svg

Source code

See File:Monoisotopic, mononuclidic, radioactive elements.svg for definition of the @elements array.

sub start_box {
  my $fill="";
  $fill=' style="fill:'.$_[2].'"' if ($_[2]);
  print "<g> <rect$fill x=\"".(16*$_[1]-15)."\" width=\"14\" y=\"".($_[0]-19)."\" height=\"18\"/> ";
};

sub make_text {
  my $cl="";
  $cl=' class="'.$_[3].'"' if ($_[3]);
  print "<text$cl x=\"".$_[0]."\" y=\"".$_[1]."\">".$_[2]."</text> ";
};

sub smart_symbol {
  make_text ($_[0], $_[1], $_[2], (length($_[2])>2)?"smallsym":"sym");
};

sub smart_number {
  my $x = $_[0] - 3;
  my $cl = "num";
  if ( $_[2] >=100 ) { $cl = "smallnum"; $x -= 3; }
  elsif ( $_[2] >=10 ) { $x -= 3; };
  make_text ($x, $_[1], $_[2], $cl);
};
  

sub print_Z {
  my $ref = $elements[$_[0]];
  return unless $ref;
  my $intro;
  my $base_y = 20 * $ref->[1];
  my $group = $ref->[2];
  if ($group == 1) { # First element in a period
    $intro = $ref->[1];
  }
  elsif (!$group) { 
    if ( $ref->[1] == 6) { # Lanthanoid
      if ($_[0] == 57) { # Lanthanum
        start_box($base_y, 3); make_text (37, $base_y-10, "*", "sym"); print "</g>";
        $intro = "* lanthanoids";
      };
      $base_y = 174;
      $group = $_[0] - 54;
    }
    elsif ( $ref->[1] == 7) { # Actinoid
      if ($_[0] == 89) { # Actinium
        start_box($base_y, 3); make_text (35, $base_y-10, "**", "sym"); print "</g>";
        $intro = "** actinoids";
      };
      $base_y = 194;
      $group = $_[0] - 86;
    }
    else { return; };
  };
  if ($intro) {
    print "\n";
    make_text (-5, $base_y-4, $intro) if ($intro);
    print "\n";
  };
  my $background = $ref->[3];
# this version is not focused on nuclides, recycling some stuff
  if ( $background =~ /\#FF00/ ) {
# we classify all unstable elements to nanural, marginally natural and unnatural in this version
    if ( $ref->[5] eq "0" ) {
      $background = '#CC00FF'; # I said: no natural isotopes
    }
    else {
      $background = (($_[0] == 90)||($_[0] == 92))?'#FF3333' # Th, U
      :'#FF33FF'; # marginally natural
    };
  }
  else {
    $background =~ s/\#..FF../\#FFFFFF/;
  };
  start_box ($base_y, $group, $background);
# no check for natural radionuclides in this version
  smart_number (16*$group-8, $base_y-5, $_[0]); # Atomic number
  smart_symbol (16*$group-13, $base_y-11, $ref->[0]); # Symbol
# no mass numbers in this version
  print "</g>\n"; # end box
};

print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\
<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" width=\"1176\" height=\"800\" viewBox=\"-5 -6 294 200\"\
 xmlns:xlink=\"http://www.w3.org/1999/xlink\">\
  <!-- see http://commons.wikimedia.org/wiki/File:Periodic_table,_good_SVG.svg for more information about the file -->
  <defs>\
    <style type=\"text/css\">\
      <![CDATA[\
	rect {stroke:#666666; stroke-width:1px; fill:none} /* for cells */\
	text {fill:#000000; font-family:sans; font-size:5px; stroke:none} /* periods and groups */\
	.sym {font-family:serif; font-size:7px}\
	.smallsym {font-family:serif; font-size:5.5px} /* Uu? */\
	.num {font-size:4px} /* up to 99 */\
	.smallnum {font-size:3px} /* 100 and greater */\
      ]]>\
    </style>\
  </defs>\n\n";

my $group;
  make_text ( 6, -1, 1);
  make_text (22, 18, 2);
for ( $group=3; $group<=12; $group++) { make_text(16*$group-10, 58, $group); };
for ($group=13; $group<=17; $group++) { make_text(16*$group-12, 18, $group); };
  make_text (276, -1, 18);

my $Z;
for ($Z=1; $Z<=119; $Z++) { print_Z ($Z); };
print "</svg>\n";

Licensing

I, the copyright holder of this work, hereby publish it under the following licenses:
GNU head Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.
Category:License migration redundant#Periodic%20table,%20good%20SVG.svgCategory:GFDL#Periodic%20table,%20good%20SVG.svg
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported, 2.5 Generic, 2.0 Generic and 1.0 Generic license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
Category:CC-BY-SA-3.0,2.5,2.0,1.0#Periodic%20table,%20good%20SVG.svg
You may select the license of your choice.
Category:Self-published work Category:Nucleosynthesis Category:SVG periodic table
Category:CC-BY-SA-3.0,2.5,2.0,1.0 Category:GFDL Category:Graphic Lab-en Category:License migration redundant Category:Nucleosynthesis Category:SVG periodic table Category:Self-published work Category:Translation possible - SVG Category:Valid SVG created with Perl