![image](https://www.wiki3.es-es.nina.az/image/aHR0cHM6Ly93d3cud2lraTMuZXMtZXMubmluYS5hei9pbWFnZS9hSFIwY0hNNkx5OTFjR3h2WVdRdWQybHJhVzFsWkdsaExtOXlaeTkzYVd0cGNHVmthV0V2WTI5dGJXOXVjeTkwYUhWdFlpOHlMekpoTDBSdlkzVnRaVzUwWVhScGIyNHRjR3hoYVc0dWMzWm5MelV3Y0hndFJHOWpkVzFsYm5SaGRHbHZiaTF3YkdGcGJpNXpkbWN1Y0c1bi5wbmc=.png)
A continuación se muestra la documentación transcluida desde la subpágina . [salta a la caja de código]
Este módulo implementa {{}}
. Para más detalles referirse su documentación.
Esta documentación está transcluida desde .
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. .
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. .
local getArgs = require('Módulo:Argumentos').obtenerArgumentos local p = {} -- module's table local am = {} -- Elementos y sus enlaces am.H="[[Hidrógeno|H]]";am.He="[[Helio|He]]"; am.Li="[[Litio|Li]]";am.Be="[[Berilio|Be]]";am.B="[[Boro|B]]";am.C="[[Carbono|C]]";am.N="[[Nitrógeno|N]]";am.O="[[Oxígeno|O]]";am.F="[[Flúor|F]]";am.Ne="[[Neón|Ne]]"; am.Na="[[Sodio|Na]]";am.Mg="[[Magnesio|Mg]]";am.Al="[[Aluminio|Al]]";am.Si="[[Silicio|Si]]";am.P="[[Fósforo (elemento)|P]]";am.S="[[Azufre|S]]";am.Cl="[[Cloro|Cl]]";am.Ar="[[Argón|Ar]]"; am.K="[[Potasio|K]]";am.Ca="[[Calcio|Ca]]";am.Sc="[[Escandio|Sc]]";am.Ti="[[Titanio|Ti]]";am.V="[[Vanadio|V]]";am.Cr="[[Cromo|Cr]]";am.Mn="[[Manganeso|Mn]]";am.Fe="[[Hierro|Fe]]";am.Co="[[Cobalto|Co]]";am.Ni="[[Níquel|Ni]]";am.Cu="[[Cobre|Cu]]";am.Zn="[[Zinc|Zn]]";am.Ga="[[Galio|Ga]]";am.Ge="[[Germanio|Ge]]";am.As="[[Arsénico|As]]";am.Se="[[Selenio|Se]]";am.Br="[[Bromo|Br]]";am.Kr="[[Kriptón|Kr]]";am.Rb="[[Rubidio|Rb]]"; am.Sr="[[Estroncio|Sr]]";am.Y="[[Itrio|Y]]";am.Zr="[[Zirconio|Zr]]";am.Nb="[[Niobio|Nb]]";am.Mo="[[Molibdeno|Mo]]";am.Tc="[[Tecnecio|Tc]]";am.Ru="[[Rutenio|Ru]]";am.Rh="[[Rodio|Rh]]";am.Pd="[[Paladio|Pd]]";am.Ag="[[Plata|Ag]]";am.Cd="[[Cadmio|Cd]]";am.In="[[Indio (elemento)|In]]";am.Sn="[[Estaño|Sn]]";am.Sb="[[Antimonio|Sb]]";am.Te="[[Teluro|Te]]";am.I="[[Yodo|I]]";am.Xe="[[Xenón|Xe]]"; am.Cs="[[Cesio|Cs]]";am.Ba="[[Bario|Ba]]";am.La="[[Lantano|La]]";am.Ce="[[Cerio|Ce]]";am.Pr="[[Praseodimio|Pr]]";am.Nd="[[Neodimio|Nd]]";am.Pm="[[Prometio|Pm]]";am.Sm="[[Samario|Sm]]";am.Eu="[[Europio|Eu]]";am.Gd="[[Gadolinio|Gd]]";am.Tb="[[Terbio|Tb]]";am.Dy="[[Disprosio|Dy]]";am.Ho="[[Holmio|Ho]]";am.Er="[[Erbio|Er]]";am.Tm="[[Tulio|Tm]]";am.Yb="[[Iterbio|Yb]]";am.Lu="[[Lutecio|Lu]]";am.Hf="[[Hafnio|Hf]]";am.Ta="[[Tantalio|Ta]]";am.W="[[Wolframio|W]]";am.Re="[[Renio|Re]]";am.Os="[[Osmio|Os]]";am.Ir="[[Iridio|Ir]]";am.Pt="[[Platino|Pt]]";am.Au="[[Oro|Au]]";am.Hg="[[Mercurio (elemento)|Hg]]";am.Tl="[[Talio|Tl]]";am.Pb="[[Plomo|Pb]]";am.Bi="[[Bismuto|Bi]]";am.Po="[[Polonio|Po]]";am.At="[[Astato|At]]";am.Rn="[[Radón|Rn]]"; am.Fr="[[Francio|Fr]]";am.Ra="[[Radio (elemento)|Ra]]";am.Ac="[[Actinio|Ac]]";am.Th="[[Torio|Th]]";am.Pa="[[Protactinio|Pa]]";am.U="[[Uranio|U]]";am.Np="[[Neptunio|Np]]";am.Pu="[[Plutonio|Pu]]";am.Am="[[Americio|Am]]";am.Cm="[[Curio|Cm]]";am.Bk="[[Berkelio|Bk]]";am.Cf="[[Californio|Cf]]";am.Es="[[Einstenio|Es]]";am.Fm="[[Fermio|Fm]]";am.Md="[[Mendelevio|Md]]";am.No="[[Nobelio|No]]";am.Lr="[[Lawrencio|Lr]]";am.Rf="[[Rutherfordio|Rf]]";am.Db="[[Dubnio|Db]]";am.Sg="[[Seaborgio|Sg]]";am.Bh="[[Bohrio|Bh]]";am.Hs="[[Hassio|Hs]]";am.Mt="[[Meitnerio|Mt]]";am.Ds="[[Darmstadio|Ds]]";am.Rg="[[Roentgenio|Rg]]";am.Cp="[[Copernicio|Cp]]";am.Nh="[[Nihonio|Nh]]";am.Fl="[[Flerovio|Fl]]";am.Mc="[[Moscovio|Mc]]";am.Lv="[[Livermorio|Lv]]";am.Ts="[[Téneso|Ts]]";am.Og="[[Oganesón|Og]]"; local T_ELEM = 0 -- token types local T_NUM = 1 -- number local T_OPEN = 2 -- open '(' local T_CLOSE = 3 -- close ')' local T_PM_CHARGE = 4 -- + or − local T_WATER = 6 -- .xH2O x number local T_CRYSTAL = 9 -- .x local T_CHARGE = 8 -- charge (x+), (x-) local T_SUF_CHARGE = 10 -- suffix and charge e.g. 2+ from H2+ local T_SUF_CHARGE2 = 12 -- suffix and (charge) e.g. 2(2+) from He2(2+) local T_SPECIAL = 14 -- starting with \ e.g. \d for double bond (=) local T_SPECIAL2 = 16 -- starting with \y{x} e.g. \i{12} for isotope with mass number 12 local T_ARROW_R = 17 -- match: -> local T_ARROW_EQ = 18 -- match: <-> local T_UNDERSCORE = 19 -- _{ ... } local T_CARET = 20 -- ^{ ... } local T_NOCHANGE = 30 -- Anything else like ☃ function su(up, down) -- like template:su if (down == "") then return "<span style=\"display:inline-block; margin-bottom:-0.3em; vertical-align:0.8em; line-height:1.2em; font-size:70%; text-align:left;\">" .. up .. "<br /></span>"; else return "<span style=\"display:inline-block; margin-bottom:-0.3em; vertical-align:-0.4em; line-height:1.2em; font-size:70%; text-align:left;\">" .. up .. "<br />" .. down .. "</span>"; end end function DotIt() return '·' end function item(f) -- (iterator) returns one token (type, value) at a time from the formula 'f' local i = 1 local first = "true"; return function () local t, x = nil, nil if (first == "true" and f:match('^[0-9]', i)) then x = f:match('^[%d.]+', i); t = T_NOCHANGE; i = i + x:len(); -- matching coefficient (need a space first) elseif i <= f:len() then x = f:match('^%s+[%d.]+', i); t = T_NOCHANGE; -- matching coefficient (need a space first) if not x then x = f:match('^%s[+]', i); t = T_NOCHANGE; end -- matching + (H2O + H2O) if not x then x = f:match('^%&%#[%w%d]+%;', i); t = T_NOCHANGE; end -- &#...; if not x then x = f:match('^%<%-%>', i); t = T_ARROW_EQ; end -- matching <-> if not x then x = f:match('^%-%>', i); t = T_ARROW_R; end -- matching -> if not x then x = f:match('^%u%l*', i); t = T_ELEM; end -- matching symbols like Aaaaa if not x then x = f:match('^%d+[+-]', i); t = T_SUF_CHARGE; end -- matching x+, x- if not x then x = f:match('^%d+%(%d*[+-]%)', i); t = T_SUF_CHARGE2; end -- matching x(y+/-), x(+/-) if not x then x = f:match('^%(%d*[+-]%)', i); t = T_CHARGE; end -- matching (x+) (xx+), (x-) (xx-) if not x then x = f:match('^[%d.]+', i); t = T_NUM; end -- matching number if not x then x = f:match('^[(|{|%[]', i); t = T_OPEN; end -- matching ({[ if not x then x = f:match('^[)|}|%]]', i); t = T_CLOSE; end -- matching )}] if not x then x = f:match('^[+-]', i); t = T_PM_CHARGE; end -- matching + or - if not x then x = f:match('^%*[%d.]*H2O', i); t = T_WATER; end -- Crystal water if not x then x = f:match('^%*[%d.]*', i); t = T_CRYSTAL; end -- Crystal if not x then x = f:match('^[\\].{%d+}', i); t = T_SPECIAL2; end -- \y{x} if not x then x = f:match('^[\\].', i); t = T_SPECIAL; end -- \x if not x then x = f:match('^_{[^}]*}', i); t = T_UNDERSCORE; end -- _{...} if not x then x = f:match('^\^{[^}]*}', i); t = T_CARET; end -- ^{...} if not x then x = f:match('^.', i); t = T_NOCHANGE; end --the rest - one by one if x then i = i + x:len(); else i = i + 999; error("Invalid character in formula!!!!!!! : "..f) end end first = "false" return t, x end end function p._chem(args) local f = args[1] or '' f = string.gsub(f, "–", "-") -- replace – with - (hyphen not ndash) f = string.gsub(f, "−", "-") -- replace – with - (hyphen not minus sign) local sumO = 0 local formula = '' local t, x local link = args['link'] or "" local auto = args['auto'] or "" if not (link == '') then formula = formula .. "[[" .. link .. "|"; end -- wikilink start [[link| for t, x in item(f) do if t == T_ELEM then if (auto == '') then formula = formula .. x elseif am[x] then formula = formula .. am[x]; am[x] = x else formula = formula .. x end elseif t == T_COEFFICIENT then formula = formula .. x elseif t == T_NUM then formula = formula .. su("", x); elseif t == T_OPEN then formula = formula .. x; sumO = sumO + 1; -- ( { elseif t == T_CLOSE then formula = formula .. x; sumO = sumO -1; -- ) } elseif t == T_PM_CHARGE then formula = formula .. su(string.gsub(x, "-", "−"), ""); elseif t == T_SUF_CHARGE then formula = formula .. su(string.gsub(string.match(x, "[+-]"), "-", "−"), string.match(x, "%d+"), ""); elseif t == T_SUF_CHARGE2 then formula = formula .. su(string.sub(string.gsub(string.match(x, "%(%d*[+-]"), "-", "−"), 2, -1), string.match(x, "%d+")) elseif t == T_CHARGE then formula = formula .. "<sup>"; if string.match(x, "%d+") then formula = formula .. string.match(x, "%d+"); end formula = formula .. string.gsub(string.match(x, "[%+-]"), "-", "−") .. "</sup>"; -- can not concatenat a nil value from string.match(x, "%d+"); elseif t == T_CRYSTAL then formula = formula .. DotIt() .. string.gsub( x, "*", '', 1 ); elseif t == T_SPECIAL then parameter = string.sub(x, 2, 2) -- x fra \x if parameter == "s" then formula = formula .. "−" -- single bond elseif parameter == "d" then formula = formula .. "=" -- double bond elseif parameter == "t" then formula = formula .. "≡" -- tripple bond elseif parameter == "q" then formula = formula .. "≣" -- Quadruple bond elseif parameter == "h" then formula = formula .. "η" -- η, hapticity elseif parameter == "*" then formula = formula .. "*" -- *, normal * elseif parameter == "-" then formula = formula .. "-" -- - elseif parameter == "\\" then formula = formula .. "\\" -- \ elseif parameter == "\'" then formula = formula .. "'" -- html-code for ' end elseif t == T_SPECIAL2 then -- \y{x} parameter = string.sub(x, 2, 2) -- y fra \y{x} if parameter == "h" then --[[Hapticidad]] if (auto == '') then formula = formula .. "η<sup>" .. string.match(x, '%d+') .. "</sup>-" else formula = formula .. "[[Hapticidad|η<sup>" .. string.match(x, '%d+') .. "</sup>]]-" end elseif parameter == "m" then formula = formula .. "μ<sup>" .. string.match(x, '%d+') .. "</sup>-" -- mu ([[bridging ligand]]) end elseif t == T_WATER then if string.match(x, "^%*[%d.]") then formula = formula .. DotIt() .. string.match(x, "%f[%.%d]%d*%.?%d*%f[^%.%d%]]") .. "H<sub>2</sub>O"; else formula = formula .. DotIt() .. "H<sub>2</sub>O"; end elseif t == T_UNDERSCORE then formula = formula .. su("", string.sub(x,3,-2)) -- x contains _{string} elseif t == T_CARET then formula = formula .. su(string.sub(x,3,-2), "") -- x contains ^{string} elseif t == T_ARROW_R then formula = formula .. " → " elseif t == T_ARROW_EQ then formula = formula .. " ⇌ " elseif t == T_NOCHANGE then formula = formula .. x; -- The rest - everything which isn't captured by the regular expresions. E.g. wikilinks and pipes else error('unreachable - ???') end -- in fact, unreachable end if not (link == nil or link == '') then formula = formula .. "]]"; end -- wikilink closing ]] return '<span class="chemf nowrap">' .. formula .. '</span>' end function p.chem(frame) local args = getArgs(frame) return p._chem(args) end return p
wikipedia, wiki, leyendo, leer, libro, biblioteca, español, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos, móvil, teléfono, android, ios, apple, teléfono móvil, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, ordenador