Ringkesan
Source code
<syntaxhighlight lang="perl">
!/usr/bin/perl
my @elements = (
sym, pe, g, RGB color, mass, natural radionuclide (0=no, "+"=many, undef=controversial or already stated)
["n", 0, 18, 0, 1, 0 ],
["H", 1, 1, "#FFF", 0, 3 ],
["He", 1, 18, "#FFF", 0, 0 ],
["Li", 2, 1, "#FFF", 0, 0 ],
["Be", 2, 2, "#0F0", 9],
["B", 2, 13, "#FFF", 0, 0 ],
["C", 2, 14, "#FFF", 0, 14 ],
["N", 2, 15, "#FFF", 0, 0 ],
["O", 2, 16, "#FFF", 0, 0 ],
["F", 2, 17, "#0F0", 19],
["Ne", 2, 18, "#FFF", 0, 0 ],
["Na", 3, 1, "#0F0", 23],
["Mg", 3, 2, "#FFF", 0, 0 ],
["Al", 3, 13, "#0F0", 27],
["Si", 3, 14, "#FFF", 0, 0 ],
["P", 3, 15, "#0F0", 31],
["S", 3, 16, "#FFF", 0, 0 ],
["Cl", 3, 17, "#FFF", 0],
["Ar", 3, 18, "#FFF", 0, 0 ],
["K", 4, 1, "#FFF", 0, 40 ],
["Ca", 4, 2, "#FFF", 0, 48, "_" ],
["Sc", 4, 3, "#0F0", 45],
["Ti", 4, 4, "#FFF", 0, 0 ],
["V", 4, 5, "#9FF", 51, 50, "_" ],
["Cr", 4, 6, "#FFF", 0, 0 ],
["Mn", 4, 7, "#0F0", 55],
["Fe", 4, 8, "#FFF", 0, 0 ],
["Co", 4, 9, "#0F0", 59],
["Ni", 4, 10, "#FFF", 0, 0 ],
["Cu", 4, 11, "#FFF", 0, 0 ],
["Zn", 4, 12, "#FFF", 0, 0 ],
["Ga", 4, 13, "#FFF", 0, 0 ],
["Ge", 4, 14, "#FFF", 0, 76, "_" ],
["As", 4, 15, "#0F0", 75],
["Se", 4, 16, "#FFF", 0, 82, "_" ],
["Br", 4, 17, "#FFF", 0, 0 ],
["Kr", 4, 18, "#FFF", 0, 78, "_" ],
["Rb", 5, 1, "#0FF", 85, 87 ],
["Sr", 5, 2, "#FFF", 0, 0 ],
["Y", 5, 3, "#0F0", 89],
["Zr", 5, 4, "#FFF", 0, 96, "_" ],
["Nb", 5, 5, "#0F0", 93],
["Mo", 5, 6, "#FFF", 0, 100, "_" ],
["Tc", 5, 7, "#F0F", 0],
["Ru", 5, 8, "#FFF", 0, 0 ],
["Rh", 5, 9, "#0F0", 103],
["Pd", 5, 10, "#FFF", 0, 0 ],
["Ag", 5, 11, "#FFF", 0, 0 ],
["Cd", 5, 12, "#FFF", 0, "_" ],
["In", 5, 13, "#9FF", 113, 115, "_" ],
["Sn", 5, 14, "#FFF", 0, 0 ],
["Sb", 5, 15, "#FFF", 0, 0 ],
["Te", 5, 16, "#FFF", 0, "+" ],
["I", 5, 17, "#0F0", 127],
["Xe", 5, 18, "#FFF", 0, "+" ],
["Cs", 6, 1, "#0F0", 133],
["Ba", 6, 2, "#FFF", 0, 130, "_" ],
["La", 6, 0, "#0FF", 139, 138],
["Ce", 6, 0, "#FFF", 0, 0 ],
["Pr", 6, 0, "#0F0", 141],
["Nd", 6, 0, "#FFF", 0, "_" ],
["Pm", 6, 0, "#F0F", 0],
["Sm", 6, 0, "#FFF", 0, "+" ],
["Eu", 6, 0, "#9FF", 153, 151, "_" ],
["Gd", 6, 0, "#FFF", 0, 152, "_" ],
["Tb", 6, 0, "#0F0", 159],
["Dy", 6, 0, "#FFF", 0, 0 ],
["Ho", 6, 0, "#0F0", 165],
["Er", 6, 0, "#FFF", 0, 0 ],
["Tm", 6, 0, "#0F0", 169],
["Yb", 6, 0, "#FFF", 0, 0 ],
["Lu", 6, 0, "#0FF", 175, 176 ],
["Hf", 6, 4, "#FFF", 0, 174, "_" ],
["Ta", 6, 5, "#FFF", 0, 0 ],
["W", 6, 6, "#FFF", 0, 180, "_" ],
["Re", 6, 7, "#0FF", 185, 187 ],
["Os", 6, 8, "#FFF", 0, 186, "_" ],
["Ir", 6, 9, "#FFF", 0, 0 ],
["Pt", 6, 10, "#FFF", 0, 190 ],
["Au", 6, 11, "#0F0", 197],
["Hg", 6, 12, "#FFF", 0, 0 ],
["Tl", 6, 13, "#FFF", 0, 0 ],
["Pb", 6, 14, "#FFF", 0, 0 ],
["Bi", 6, 15, "#F60", 209],
["Po", 6, 16, "#F0F", 0],
["At", 6, 17, "#F0F", 0],
["Rn", 6, 18, "#F0F", 0],
["Fr", 7, 1, "#F0F", 0],
["Ra", 7, 2, "#F0F", 0],
["Ac", 7, 0, "#F0F", 0],
["Th", 7, 0, "#F00", 0, "+" ],
["Pa", 7, 0, "#F00", 231],
["U", 7, 0, "#F0F", 0, "+" ],
["Np", 7, 0, "#F0F", 0],
["Pu", 7, 0, "#F0F", 0],
["Am", 7, 0, "#F0F", 0, 0 ],
["Cm", 7, 0, "#F0F", 0, 0 ],
["Bk", 7, 0, "#F0F", 0, 0 ],
["Cf", 7, 0, "#F0F", 0, 0 ],
["Es", 7, 0, "#F0F", 0, 0 ],
["Fm", 7, 0, "#F0F", 0, 0 ],
["Md", 7, 0, "#F0F", 0, 0 ],
["No", 7, 0, "#F0F", 0, 0 ],
["Lr", 7, 0, "#F0F", 0, 0 ],
["Rf", 7, 4, "#F0F", 0, 0 ],
["Db", 7, 5, "#F0F", 0, 0 ],
["Sg", 7, 6, "#F0F", 0, 0 ],
["Bh", 7, 7, "#F0F", 0, 0 ],
["Hs", 7, 8, "#F0F", 0, 0 ],
["Mt", 7, 9, "#F0F", 0, 0 ],
["Ds", 7, 10, "#F0F", 0, 0 ],
["Rg", 7, 11, "#F0F", 0, 0 ],
["Cn", 7, 12, "#F0F", 0, 0 ],
["Nh", 7, 13, "#F0F", 0, 0 ],
["Fl", 7, 14, "#F0F", 0, 0 ],
["Mc", 7, 15, "#F0F", 0, 0 ],
["Lv", 7, 16, "#F0F", 0, 0 ],
["Ts", 7, 17, "#F0F", 0, 0 ],
["Og", 7, 18, "#F0F", 0, 0 ],
);
sub start_box {
my $fill="";
$fill=' style="fill:'.$_[2].'"' if ($_[2]);
print "<g> <rect$fill x=\"".(20*$_[1]-19)."\" width=\"18\" y=\"".($_[0]-19)."\" height=\"18\"/> ";
};
sub make_tria {
my $fill="";
$fill=' style="fill:'.$_[2].'"' if ($_[2]);
print "<polyline$fill points=\""
.(20*$_[1]-19).",".($_[0]-19)." "
.(20*$_[1]-12).",".($_[0]-19)." "
.(20*$_[1]-19).",".($_[0]-14)
."\"/> ";
};
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 (45, $base_y-8, "*", "sym"); print "</g>";
$intro = "* lanthanoids";
};
$base_y = 168;
$group = $_[0] - 54;
}
elsif ( $ref->[1] == 7) { # Actinoid
if ($_[0] == 89) { # Actinium
start_box($base_y, 3); make_text (43, $base_y-8, "**", "sym"); print "</g>";
$intro = "** actinoids";
};
$base_y = 190;
$group = $_[0] - 86;
}
else { return; };
};
if ($intro) {
print "\n";
make_text (($intro=~/^\*/)?3:-5, $base_y-10, $intro) if ($intro);
print "\n";
};
start_box ($base_y, $group, $ref->[3] # background (if defined)
);
if (defined($ref->[5])) {
if ($ref->[5] =~ /^[\+_]/) { # several radionuclides
print '<rect class="rnm"'.(($ref->[5]=~/^_/)?' style="fill:#F96"':)
.' x="'.(20*$group-19).'" width="5" y="'.($base_y-19).'" height="4"/> ';
}
elsif ($ref->[5]) {
make_tria ($base_y, $group,
($ref->[6])?"#F60" #several "radionuclides" are practically stable
:"#F00");
}
else { make_tria ($base_y, $group); }; # no radionuclides (the default style)
};
smart_number (20*$group-11, $base_y-5, $_[0]); # Atomic number
smart_symbol (20*$group-13, $base_y-9, $ref->[0]); # Symbol
smart_number (20*$group-12, $base_y-11, $ref->[4]) if ($ref->[4]); # Mass number
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=\"1098\" height=\"588\" viewBox=\"-5 -6 366 196\"\
xmlns:xlink=\"http://www.w3.org/1999/xlink \">\
<defs>\
<style type=\"text/css\">\
<![CDATA[\
rect {stroke:#666; stroke-width:1px; fill:none} /* for cells */\
text {fill:#000; 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 */\
polyline {stroke:none; fill:#000} /* this default for \"no radionuclides\" */\
.rnm {fill:#7F00FF; stroke:none} /* several radionuclides */\
]]>\
</style>\
</defs>\n\n";
my $group;
make_text ( 8, -1, 1);
make_text (28, 18, 2);
for ( $group=3; $group<=12; $group++) { make_text(20*$group-12, 58, $group); };
for ($group=13; $group<=17; $group++) { make_text(20*$group-14, 18, $group); };
make_text (346, -1, 18);
my $Z;
for ($Z=1; $Z<=118; $Z++) { print_Z ($Z); };
print "</svg>\n";
}}
}}
Lisénsi
Saya, pemilik hak cipta dari karya ini, dengan ini menerbitkan berkas ini di bawah ketentuan berikut:
Ida kadadosang:
Ngedum – Nyadur miwah nyobyahang malih suratan puniki ring wentuk utawi format napi ja
Nyampuhang – Ngubah pakaryan puniki
Ring sor kawéntenan puniki:
atribusi – Ragané patut ngenahang krédit sané patut, ngicénin pranala lisénsinnyané, miwah nguningaang yéning ngardi uahan. Ragané prasida nglaksanaang nganggé tata cara sané sumakuta, nanging nénten mateges yéning sang ngicénin lisénsi nyokong ragané utawi panganggén ragané.
wagiang pateh – Yening ragane nyampuh, ngubah, utawi ngwangun ring ajeng pakaryan, Ida patuh nyobyahang kontribusi druene ring ungkur lisensi sane pateh utawi kompatibel manut sujatinyane https://creativecommons.org/licenses/by-sa/3.0 CC BY-SA 3.0 Creative Commons Attribution-Share Alike 3.0 true true
Kapatutang yéning jagi nyadur, nyobyahang miwah/utawi ngaryanin vérsi lianan saking suratan puniki ring pungkur awig-awig Lisensi Pupulan Bebas GNU , Versi 1.2 utawi sané pinih anyar katerbitang olih Free Software Foundation ; nénten madué Invarian, nèten madué téks sampul ring arep, miwah nénten madué téks sampul ring ungkul. Saduran lisensi asukan ka kepahan sané mamurda Lisensi Pupulan Bebas GNU .http://www.gnu.org/copyleft/fdl.html GFDL GNU Free Documentation License true true
Ida dados milih lisénsi pilihan idané
Basa Bali Add a one-line explanation of what this file represents