File:Periodic table simple fi bw.svg

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search

Original file (SVG file, nominally 946 × 637 pixels, file size: 1.19 MB)

Captions

Captions

Add a one-line explanation of what this file represents

Summary

[edit]
Description
English: Simple periodic table with localized element names and standard atomic weights (IUPAC, 2009). [Temporarily converted to paths till fixing Wikipedia’s font problem with DejaVu Sans Condensed, but also the previous version of this image works correctly outside of Wikipedia.
Date
Source Own work
Author László Németh
SVG development
InfoField
 
The SVG code is valid.
 
This periodic table was created with LibreOffice.
 
The file size of this SVG periodic table may be irrationally large because its text has been converted to paths inhibiting translations.
Source code
InfoField

LibreOffice code

; Created in LibreOffice 4.1.2 with this LibreLogo program
 ; Usage: Put this code into an English language document in LibO Writer,
 ; fix one program line for older LibreOffice versions, see FIXME in the code,
 ; and click on the Start icon of the View»Toolbars»Logo toolbar.
 ; NEED INTERNET CONNECTION TO RUN THIS PROGRAM! (table data downloaded from Wikipedia)
 lang = input Language (af, ca, cs, de, el, en, et, fi, fr, it, nl, pt, pt-br...)?”
 bw = int input Color (0 = COLORED, 1 = BLACK/WHITE)?”
 ; Source pages: http://www.wikidata.org/wiki/Q13584100
 ; data fields: Wikipedia page, column of element names, sorting by this column (optional)
 sources = {ru: [%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D1%85%D0%B8%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2, 2], fr: [Liste_des_%C3%A9l%C3%A9ments_chimiques, 2], de: [Liste_der_chemischen_Elemente, 1, 3], el: [%CE%9A%CE%B1%CF%84%CE%AC%CE%BB%CE%BF%CE%B3%CE%BF%CF%82_%CF%87%CE%B7%CE%BC%CE%B9%CE%BA%CF%8E%CE%BD_%CF%83%CF%84%CE%BF%CE%B9%CF%87%CE%B5%CE%AF%CF%89%CE%BD_%CE%BA%CE%B1%CF%84%CE%AC_%CE%B1%CF%84%CE%BF%CE%BC%CE%B9%CE%BA%CF%8C_%CE%B1%CF%81%CE%B9%CE%B8%CE%BC%CF%8C, 2], it: [Elementi_per_numero_atomico, 2], hu: [K%C3%A9miai_elemek_list%C3%A1ja, 3],  ca: [Llista_d%27elements_per_nombre_at%C3%B2mic, 2], no: [Grunnstoffliste, 2], cs: [Seznam_chemick%C3%BDch_prvk%C5%AF, 3], uk: [%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D1%85%D1%96%D0%BC%D1%96%D1%87%D0%BD%D0%B8%D1%85_%D0%B5%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%96%D0%B2, 2], et: [Keemiliste_elementide_loend, 2], nl: [Lijst_van_elementen, 2, 3], fi: [Luettelo_alkuaineista, 2, 3], eo: [Listo_de_kemiaj_elementoj_la%C5%AD_atomnumero, 3], pt: [Anexo:Lista_de_elementos_qu%C3%ADmicos, 2], sv: [Lista_%C3%B6ver_grund%C3%A4mnen, 2, 3], af: [Lys_van_elemente_volgens_atoomgetal, 2], pl: [Pierwiastki_chemiczne_wed%C5%82ug_liczby_atomowej, 2]}
 
 IF lang != en [
   langpage = sources[lang[: 2]][0]
   langfield = sources[lang[: 2]][1] ; column with element names on the Wikipedia page
   IF COUNT(sources[lang[: 2]]) = 3 [ langsort = sources[lang[: 2]][2] ] [ langsort = 0 ]
 ]
 
 GLOBAL annotation, posx, posy, size, font, font2, lang
 font = DejaVu Sans
 font2 = DejaVu Sans Condensed ; Wikimedia has got problem with it, convert the result to path in Inkscape, if needed.
 posx = 30
 posy = 40
 size = 42
 
 ; load and process element data from Wikipedia (embedded Python)
 exec(import urllib.request)
 exec(data = urllib.request.urlopen("http://en.wikipedia.org/w/index.php?action=raw&title=List_of_elements").readlines())
 exec(table = [[j.strip(" |[]") for j in i.decode("utf-8").replace("style=\\\"background-color:#","0x").replace("\\\" | ","||").split("||")] for i in data if re.match("^\| *\d+ *\|\|", i.decode("utf-8"))])
 
 ; load and process other language data
 IF lang != en [
   exec(data = urllib.request.urlopen("http://%s.wikipedia.org/w/index.php?action=raw&title=%s").readlines() % (lang[: 2], langpage))
   IF langsort > 0 [
     exec(langtable = [[i.decode("utf-8").split("||")[%d-1].split("{")[0].split("|")[-1].strip(" \t[]").split(" ")[0].split("<")[0].split("(")[0].strip(" \t[]").split("|")[-1], int(i.decode("utf-8").split("||")[%d-1].strip(" \t"))] for i in data if re.match(".*\|[ \t]*\d+[ \t]*\|\|", i.decode("utf-8"))] % (langfield, langsort))
     exec(import operator)
     exec(langtable.sort(key=operator.itemgetter(1)))
     exec(langtable = [i[0] for i in langtable])
   ] [
     IF lang = no [ exec(data = [i.decode("utf-8").replace("|", "||").replace("{{Grunnstoff/Linje |","").encode("utf-8") for i in data]) ] 
     IF lang = pl [ exec(data = [i.decode("utf-8").replace("#", "|0||").replace("–","||").replace("\x27","").encode("utf-8") for i in data]) ] 
     exec(langtable = [i.decode("utf-8").replace("<td>", "||").replace("</td>", "").split("||")[%d].split("/")[0].strip(" []").split("|")[-1].split("(")[0] for i in data if re.match("^(<tr><td>|\|) *\d+ *(</td>|\|\|)", i.decode("utf-8"))] % (langfield-1))
   ]
 ] [ langtable = [] ]
 
 ; a few fixes
 table[79][3] = Mercury ; instead of Mercury (element)
 table[11][7] = 24.31 ; Mg
 table[25][7] = 55.85 ; Fe
 table[63][7] = 157.3 ; Gd
 
 ; add missing positions TO the table
 FOR i IN RANGE 56 71 [
   table[i][5] = i  (56  4)
   table[i][6] = 8.5
 ]
 FOR i IN RANGE 88 103 [
   table[i][5] = i  (88  4)
   table[i][6] = 9.5
 ]
 
 IF lang = pt OR lang = pt-br [
   FOR i in [[1, Hidrogénio/Hidrogênio], [7, Azoto/Nitrogênio], [8, Oxigénio/Oxigênio], [10, Néon/Neônio], [18, Árgon/Argônio], [33, Arsénio/Arsênio], [34, Selénio/Selênio], [36, Crípton/Criptônio], [40, Zircóni/Zircôni], [42, Molibdénio/Molibdênio], [44, Ruténio/Rutênio], [51, Antimónio/Antimônio], [54, Xénon/Xenônio], [74, Tungsténio/Tungstênio], [75, Rénio/Rênio], [86, Rádon/Radônio], [93, Neptúnio/Netúnio], [94, Plutónio/Plutônio], [97, Berkélio/Berquélio], [99, Einsténio/Einstênio], [103, Laurêncio/Lawrêncio]] [
     IF lang = pt-br [ ptbr = 1 ] [ ptbr = 0 ]
     langtable[i[0]-1] = i[1].split(/)[ptbr]
   ]
 ]
 
 ; helper functions
 TO width_of_last_object
 OUTPUT _.drawpage.getByIndex(_.drawpage.getCount()-1).getSize().Width / 100 * __MM_TO_PT__; IN PT
 END ; FIXME: remove the space before the END
 
 TO delete_last_object
 _.drawpage.remove(_.drawpage.getByIndex(_.drawpage.getCount()-1))
 END
 
 TO element size d l18n bw
 PENUP POSITION [posx + INT(d[5])*size, posy + FLOAT(d[6])*size*1.2] HEADING 0
 ; show group number
 IF INT(d[0]) IN [1, 2, 4, 5, 6, 7, 8, 9, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] [
   IF lang in [af, ca, en, eo, no, pl, pt, pt-br, sv] [
     FORWARD size/2 + size/5 LABEL [0, 1, d[5]]
   ] [
     FORWARD size/2 + size/5 LABEL [0, 4.5, d[5]]
     groupname = {1: I.A., 2: II.A., 3: III.B., 4: IV.B., 5: V.B., 6: VI.B., 7: VII.B., 8:      ╭───”, 9: VIII.B., 10: “───╮     , 11: I.B., 12: II.B., 13: III.A., 14: IV.A., 15: V.A., 16: VI.A., 17: VII.A., 18: VIII.A.}[d[5]]
     IF lang not in [hu] [ groupname = SUB ([.], “”, groupname) ]
     FONTSIZE 10 LABEL [0, 1, groupname]
   ]
   BACK size/2 + size/5
 ]
 IF bw [ FILLCOLOR WHITE ] [ FILLCOLOR INT (d[1]) ]
 PENDOWN RECTANGLE [size, size*1.2] PENUP
 IF M IN d[2] OR m IN d[2] OR 2 < COUNT (d[2]) [ FONTFAMILY font2 ] [ FONTFAMILY font ]
 FONTWEIGHT BOLD
 FONTSIZE size/2.1
 TEXT d[2]
 FONTWEIGHT UPRIGHT FONTFAMILY font
 BACK size*1.2/2-size/20
 fontsiz = 5.6
 FONTSIZE size/fontsiz
 IF l18n [
   name = l18n[INT(d[0])-1]
 ] [ name = d[3] ]
 if lang != de [ name = name.lower() ]
 LABEL [0, 1, name]
 fontdescratio = 492/2048 ; DejaVu Sans Condensed
 IF width_of_last_object() > size * 0.95 [
   delete_last_object
   FONTFAMILY font2
   LABEL [0, 1, name]
   width = width_of_last_object
   IF width > size * 0.95 [
     delete_last_object
     fontsiz2 = size/fontsiz * size/width * 0.95
     FORWARD size/fontsiz*fontdescratio - fontsiz2*fontdescratio
     FONTSIZE fontsiz2
     LABEL [0, 1, name]
     BACK size/fontsiz*fontdescratio - fontsiz2*fontdescratio
   ]
 ]
 FONTSIZE size/5.8 FONTFAMILY font2
 FORWARD [-size/2 + size/20, size*1.2/2-size/20 + size*0.6  size/20]
 HEADING 0 LABEL [1, -1, d[0]]
 RIGHT 90 FORWARD size  size/10 LEFT 90
 weight = FINDALL((\d+[.]\d+

Licensing

[edit]
I, the copyright holder of this work, hereby publish it under the following license:
Creative Commons CC-Zero This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current00:41, 4 November 2013Thumbnail for version as of 00:41, 4 November 2013946 × 637 (1.19 MB)Nl74 (talk | contribs)converted path
00:29, 4 November 2013Thumbnail for version as of 00:29, 4 November 2013946 × 637 (217 KB)Nl74 (talk | contribs)User created page with UploadWizard

There are no pages that use this file.

Metadata