Diferencia entre revisiones de «Módulo:Ficha de persona»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
mSin resumen de edición
m Arreglo error que haga que no se vean los datos de Wikidata
Línea 34: Línea 34:
local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame)
local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame)
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
local Entidad = mw.wikibase.getEntityObject(argumento['id']) or {}
Entidad = mw.wikibase.getEntityObject(argumento['id']) or {}


--Determinar datos para la ficha
--Determinar datos para la ficha

Revisión del 17:04 13 dic 2015

Icono de documentación de módulo Documentación del módulo[ver] [editar] [historial] [purgar]

A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]


Este módulo implementa la plantilla {{Ficha de persona}}.

  • Esta documentación explica el funcionamiento del módulo desde un contexto técnico; para instrucciones de uso de la plantilla, véase la página de documentación sobre la plantilla.
  • La página de discusión de este módulo debe reservarse para cuestiones más técncias sobre el módulo; úsese la discusión de la plantilla para discutir sobre datos y parámetros.

Esta documentación está transcluida desde Módulo:Ficha de persona/doc.
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.

local z = {}

local argumentos    -- Tabla de argumentos con los que se llama a la función 
local argumento={}  -- Argumentos eliminando los argumentos sin datos
local Entidad       -- Tabla con los datos en Wikidata del libro.
-- 			Ver Wikidata:WikiProject Books para las propiedades posibles
local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:...
local datosautoridad={} --inicializa la tabla que genera los cargos para cada autoridad

-- Módulos utilizados
local ModuloArgumentos       = require('Módulo:Argumentos')
local ModuloFicha            = require('Módulo:Ficha')
local ModuloFormatoTexto     = require('Módulo:Formato texto')
local ModuloIdentificadores  = require('Módulo:Identificadores')
local ModuloPaginas          = require('Módulo:Páginas')	
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')	
local ModuloWikidata         = require('Módulo:Wikidata')
local ModuloTablas           = require('Módulo:Tablas')
local ModuloURL              = require('Módulo:URL')

-- Constantes
local enMayusculas    = {['formatoTexto'] = 'mayúscula'}
local contadorocupaciones = 0 --Implementa la lógica de si la persona tiene más de dos ocupaciones la ficha tenga un encabezado estandár
local enMayusculasO   = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o '}
local listaNoOrdenada = {['lista'] = 'no ordenada'} --, ['debeExistir'] = 'sí'
local lugar           = {['conjunción']=' o ', ['valor-función'] = ModuloWikidataFormatos.formatoLugar}
local debeExistir     = {['debeExistir'] = 'sí'}
local conPeriodo      = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo, ordenar='por fecha'}
local conPeriodoDebeExistir = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo, ordenar='por fecha', ['debeExistir'] = 'sí'}

function z.Ficha(frame)
    ModuloWikidata:setFrame(frame)  -- No funciona si se pone ModuloWikidata.setFrame(marco)    
    -- Obtener una copia de los argumentos eliminando los argumentos sin valor
    local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame)
    -- Obtener los datos de la página donde se inserta la ficha de Wikidata.
    Entidad   = mw.wikibase.getEntityObject(argumento['id']) or {}

    --Determinar datos para la ficha
    
    local educacion = argumento['educación'] or argumento['educacion'] or propiedad('P512',{['enlace']='no'})
    local almamater = argumento['alma máter'] or argumento['alma_mater'] or argumento['alma mater'] or argumento['almamáter'] or argumento['alma_máter']
            	or propiedad('P69', { ['formatoTexto'] = 'mayúscula', ['lista'] = 'no ordenada', ['calificativo']   = 'P512',['separadorcalificador']='<br>'})
    
	etiquetaAnyosActivo = 'Años activo/a' --Valor por defecto
    if propiedad('P21') == 'femenino' then
    	etiquetaAnyosActivo = 'Años activa'
    	etiquetaConocidoPor = 'Conocida&nbsp;por'
    	etiquetaInfluencias = 'Influida por'
    	etiquetacampeon 	= '[[Campeonato del mundo de ajedrez|Campeona del mundo]]'
    	funcionOcupacion    = formatoOcupacionFemenino
    else
    	etiquetaAnyosActivo = 'Años activo'
    	etiquetaConocidoPor = 'Conocido&nbsp;por'    	
    	etiquetaInfluencias = 'Influido por'
    	funcionOcupacion    = formatoOcupacionMasculino
    	etiquetacampeon		= '[[Campeonato del mundo de ajedrez|Campeón del mundo]]'
    end
	seccionartistica='Carrera artística'

--GENERAR CARGOS
if argumento['cargo']==nil then
datosautoridad['cargo1']={tipo='sección',{'',''},}
else
saltoautoridad='<hr>'
datosautoridad['cargo1']=generarcargo(argumento,1)
argumento['predecesor']= nil
argumento['sucesor']= nil
end
for i=2, 10 do
	campovacio=0
	if argumento['cargo'..i]==nil and argumento['inicio'..i]==nil  then
	   datosautoridad['cargo'..i]={tipo='sección',{'',''},}
	else
	datosautoridad['cargo'..i]=generarcargo(argumento,i)
	end
end

    -- La ocupación y el área solo se obtienen de Wikidata si no se informan los campos de ocupación y área.
    -- Esto es porque para los artistas puede tener en Wikidata como ocupación "pintor y escultor" y 
    -- tener informada el área con "pintura y escultura".

    local ocupacion = argumento['ocupación'] or argumento['Ocupación']  or argumento['profesión']
    local area      = argumento['área'] or argumento['area'] or argumento['especialidad'] or argumento['campos']
    
    if not ocupacion and not area then
    	ocupacion = propiedad('P106', {['formatoTexto'] = 'mayúscula', ['valor-función']=funcionOcupacion, ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo})
    	area      = propiedad('P101', enMayusculas) -- Campo de trabajo
    end

    local ocupacionOArea = ocupacion or area 
    
    nombre = argumento['nombre'] or argumento['Nombre'] or
             obtenerEtiquetaWikidata() or 
             ModuloPaginas.nombrePagina({desambiguar='sí'})
             
    -- Informar los datos de nacimiento y de fallecimiento
    fechaNacimiento = argumento['fecha de nacimiento'] or argumento['fechadenacimiento'] or
                      argumento['fecha_nacimiento']    or argumento['Fecha_nacimiento']  or 
                      argumento['fecha nacimiento']    or argumento['fechadenacimiento'] or
                      argumento['fechanac']            or argumento['fecha_de_nacimiento'] or
                      propiedad('P569', enMayusculasO)
    lugarNacimiento = argumento['lugar de nacimiento'] or argumento['lugardenacimiento'] or
                      argumento['lugar']               or 
                      argumento['lugar_nacimiento']    or argumento['Lugar_nacimiento'] or 
                      argumento['lugar nacimiento']    or argumento['lugarnac'] or
                      argumento['lugar_de_nacimiento']    or
                      propiedad('P19', lugar)
    
    if fechaNacimiento and lugarNacimiento then
        nacimiento = fechaNacimiento .. '<br />' .. lugarNacimiento
    else
    	nacimiento = fechaNacimiento or lugarNacimiento
    end
    
    fechaFallecimiento = argumento['fecha de fallecimiento'] or argumento['fechadefallecimiento'] or argumento['fecha_de_fallecimiento'] or
                         argumento['fecha fallecimiento']    or argumento['fecha_fallecimiento']  or argumento['Fecha_fallecimiento']    or 
                         argumento['fecha de defunción']     or
                         argumento['fecha_muerte']           or argumento['fechamuerte']           or
                         propiedad('P570', enMayusculasO)
    lugarFallecimiento = argumento['lugar de fallecimiento'] or argumento['lugardefallecimiento'] or argumento['lugar_de_fallecimiento']  or
                         argumento['lugar fallecimiento']    or argumento['lugar_fallecimiento']  or argumento['Lugar_fallecimiento']  or
                         argumento['lugar de defunción']     or
                         argumento['lugar_muerte']           or argumento['lugarmuerte']           or
                         propiedad('P20', lugar)
    
    if fechaFallecimiento and lugarFallecimiento then
        fallecimiento = fechaFallecimiento .. '<br />' .. lugarFallecimiento
    else
    	fallecimiento = fechaFallecimiento or lugarFallecimiento
    end
    
    if argumento['padres'] then
    	padres = estaEnlazado(argumento['padres'])
    else
    	padre = propiedad('P22') --, debeExistir)
    	madre = propiedad('P25') --, debeExistir)
    	
    	if padre and madre then
    		padres = padre .. '<br/>' .. madre
    	else
    		padres = padre or madre
    	end
    end
    
    firma = argumento['firma'] or argumento['Firma'] or
        	propiedad('P109')
    
    if propiedad('P856') then web = '['..propiedad('P856')..' Sitio Web]' else
    web = argumento['web'] or argumento['página web'] or argumento['website'] or argumento['sitio web'] or argumento['sitioweb']
    end     
    twitter           = argumento['twitter']  or argumento['Twitter'] or obtenerTwitter()
    facebook          = argumento['facebook'] or argumento['Facebook'] or obtenerFacebook()
    imdb              = (argumento['imdb'] and ('nm' .. argumento['imdb']))     or propiedad('P345',{uno='sí'})
    catholicHierarchy = propiedad('P1047')
    
if argumento['año debut'] or argumento['año retiro'] then
    if argumento['año debut'] and argumento['año retiro']==nil  then
       etiquetaactor ='Año de debut' 
       datoactor = argumento['año debut']
    elseif argumento['año debut']==nil and argumento['año retiro']  then
       etiquetaactor='Año de retiro'
       datoactor = argumento['año debut']
    elseif argumento['año debut'] and argumento['año retiro']  then
    	etiquetaactor = etiquetaAnyosActivo
    	datoactor = argumento['año debut'].. '-'..argumento['año retiro']
    end
else
	etiquetaactor =''
	datoactor =''
end
    -- Título según la ocupación y si la persona ha muerto      
    -- No mostrar para los artistas ningún icono en la cabecera de la ficha
    if ocupacionOArea and (ocupacionOArea:find('[Aa]ctor') or ocupacionOArea:find('[Aa]ctriz') or ocupacionOArea:find('[Pp]roductor de cine')
    	or ocupacionOArea:find('[Dd]irector de cine')  ) then
    	contadorocupaciones=contadorocupaciones+1
    	tipocabecera   = 'cine'
    	estilotitulo = 'background-color:#f9e999'
    	seccionartistica = ''
    end
    
    if contadorocupaciones==0 and ocupacionOArea and (ocupacionOArea:find('[Aa]rtista') or ocupacionOArea:find('[Pp]intor') or 
    	ocupacionOArea:find('[Ee]scultor') or ocupacionOArea:find('[Pp]intura') or ocupacionOArea:find('[Ee]scultura')
    	or ocupacionOArea:find('[Ff]otograf') or ocupacionOArea:find('[Aa]rtes visuales')) then
    	contadorocupaciones=1
        tipocabecera = ''
        estilotitulo = 'background-color:#8DB1C3;color:#FFF'
    end
    if contadorocupaciones==0 and ocupacionOArea and (ocupacionOArea:find('[Aa]jedrecista') or argumento['elo'] or rankingajedrez) then
    	contadorocupaciones=1
        tipocabecera = ''
        estilotitulo = 'background-color: #D8BFD8'
    end
    if contadorocupaciones==0 and ocupacionOArea and (ocupacionOArea:find('[Ee]scritor') or ocupacionOArea:find('[Nn]ovelista') or 
    	ocupacionOArea:find('[Pp]oeta') or ocupacionOArea:find('[Dd]ramaturgo')) then
    	contadorocupaciones=contadorocupaciones+1
        tipocabecera = 'libro'
        estilotitulo = 'background-color:#4c6099;color:#FFF'
    end
     if contadorocupaciones==0 and ocupacionOArea and (ocupacionOArea:find('[Mm]úsico') or ocupacionOArea:find('[Cc]ompositor') or 
    	ocupacionOArea:find('[Cc]antante')) then
    	contadorocupaciones=contadorocupaciones+1
        tipocabecera = 'música'
        estilotitulo = 'background-color:#f0e68c'
    end
   --Pendiente por poner el estilo de POLITICO!
    if contadorocupaciones==0 and ((ocupacionOArea and (ocupacionOArea:find('[Pp]olítico'))) or argumento['cargo']) then
    	contadorocupaciones=contadorocupaciones+1
        tipocabecera = 'libro'
        estilotitulo = 'background-color:#4c6099;color:#FFF'
    end
    if contadorocupaciones==0 and ocupacionOArea and ocupacionOArea:find('[Pp]eriodista') then
    	contadorocupaciones=contadorocupaciones+1
    	tipocabecera   = 'revista'
    	estilotitulo   = 'background-color:#ED8;color:#FFF'
   	end
    if contadorocupaciones==0 and ocupacionOArea and ocupacionOArea:find('[Dd]iseñador') then
    	contadorocupaciones=contadorocupaciones+1
    	estilotitulo     = 'background-color:#ccccff' 
    end
    if contadorocupaciones == 2 or contadorocupaciones==0 then
    	tipocabecera = 'humano fn'
        estilotitulo = 'background-color:#8DB1C3;color:#FFF'
    end

    if fechaFallecimiento or lugarFallecimiento then
    	estilotitulo = 'background-color:#c0c0c0;color:#000'
    end
    estilocabecera = estilotitulo
    if argumento['cargo'] then
    tipocabecera= nil
    estilocabecera= 'background-color:transparent;'
	--estilotitulo   ='background-color:#8DB1C3;color:#FFF'
     estilotitulo   ='background-color:#E6E6FA;'
end
if argumento['premios globo de oro'] then eliminarpremio2='Globo' else eliminarpremio2=nil end 
if argumento['premios óscar'] then eliminaroscar ='Óscar'	end
if argumento['premios sag'] then  	eliminarpremio='indicato'end    
if argumento['premios san sebastian'] then eliminarsebastian='Sebas'end
if argumento['ranking'] or argumento['ránking'] then
	rankingajedrez= (argumento['ranking'] or argumento['ránking']) .. frame:preprocess('<ref> [http://ratings.fide.com/toplist.phtml Clasificación FIDE] </ref>')
end    
    local Ficha = {
        clase           = 'biography vcard',

        -- Título
        tipocabecera    = tipocabecera,                   
        titulo          = nombre,
        colorfondo      = colorfondo,        
        estilotitulo    = estilocabecera,
        --Imagen
        --De momento no se pone una raya como en la ficha de escritor tras la imagen
        imagen          = argumento['imagen']  or argumento['Imagen'] or 
                          argumento['foto']    or 
                          propiedad('P18', {uno='sí'}),
        ['tamañoimagen']= argumento['tamaño de imagen'] or argumento['tamaño'] or 
                          argumento['tamaño imagen'] or argumento['tamañoimagen'] or argumento['tamañodelaimagen'] or
                          argumento['tamaño de foto'] or 
                          '220px', -- or '200px' en la ficha de escritor, 192 en la ficha de artista. Tomo por defecto 220, el tamaño de thumb
        pie             = argumento['pie de imagen'] or argumento['pieimagen'] or
                          argumento['descripción'] or argumento['descripcion'] or
                          argumento['pie de foto'] or argumento['piedefoto'] or
                          argumento['textoimagen'] or argumento['TextoImagen'] or argumento['texto_imagen'] or
                          argumento['pie de foto']
                          ,
        -- Pendiente: en la ficha de escritor el texto se pone entre <small> y en la de artista se usa el estilo font-size:smaller
        --Etiquetas y datos                  
        estiloetiqueta  = 'width:33%', -- 25% en la ficha de escritor. Sin especificar en la de persona
                          --'padding:0.2em 1.0em 0.2em 0.2em; background-color:transparent; line-height:1.2em;', -- En la ficha de persona original
        estilodatos     = 'padding:0.2em; line-height:1.3em; vertical-align:middle;',
        {tipo='sección',
            {'', saltoautoridad},
        },
       	datosautoridad['cargo1'],
 		datosautoridad['cargo2'],
 		datosautoridad['cargo3'],
 		datosautoridad['cargo4'],
 		datosautoridad['cargo5'],
 		datosautoridad['cargo6'],
 		datosautoridad['cargo7'],
 		datosautoridad['cargo8'],
 		datosautoridad['cargo9'],
 		datosautoridad['cargo10'],
        {tipo='sección',
        	['titulo']   = 'Información personal',   -- Ver la ficha de noble o la ficha de diseñador
            estilotitulo = estilotitulo,
            {'Nombre de nacimiento', propiedad('P1477') or 
        	            propiedad('P513')  or
        	            argumento['nombre completo']   or argumento['nombre_completo'] or argumento['Nombre_completo'] or
        	            argumento['nombre nacimiento'] or argumento['nombredenacimiento'] or argumento['nombre de nacimiento'] or
        	            argumento['nombre_real'] or argumento['nombrecompleto']
    	    },
            {'Nombre nativo',      argumento['nombre nativo'] or propiedad('P1559')}, -- Es para el nombre en la escritura nativa
            																		  -- Habría que coger también el idioma
            {'Apodo',              argumento['apodo']},
            {'Otros&nbsp;nombres', argumento['otros nombres'], -- ¿No es lo mismo que el apodo?????
        	                       clase='nickname'},        	                   
            {'Nacimiento',         nacimiento},
            {'Fallecimiento',      fallecimiento},
            {'Causa de muerte',    argumento['causa muerte'] or
        	                       propiedad('P509', enMayusculas) or 
        	                       propiedad('P1196', enMayusculas)}, -- circunstancias de la muerte
        	{'Lugar de descanso',  argumento['lugar_de_descanso']},

            {'Residencia',     argumento['residencia'] or 
            	               argumento['país_de_residencia'] or argumento['pais_de_residencia'] or
            	               argumento['lugar_de_residencia'] or
            	               propiedad('P551'),
        	                   clase='etiqueta'},        	
            {'Nacionalidad',   argumento['nacionalidad'] or argumento['Nacionalidad'] or --Pendiente hacer que salga el gentilicio
        	                   propiedad('P27', {['valor-función'] = ModuloWikidataFormatos.formatoGentilicio, 
        	                   	                 ['formatoTexto'] = 'mayúscula',  
        	                   	                 ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo,
        	                   	                 ordenar='por fecha'}), 
        	                   clase='category'},  
            {'Ciudadanía',     argumento['ciudadanía'] or -- ¿No es lo mismo que la nacionalidad?
        	                   argumento['ciudadania'],
        	                   clase='category'},
        	{'Lengua materna',  argumento['lengua_materna'] or argumento['Lengua_materna'] or propiedad('P103', enMayusculas)},
            {'Etnia',          propiedad('P172', enMayusculas) or 
        	                   argumento['etnia'] or argumento['grupo étnico'],
        	                   clase='category'},           	                   
            {'Creencias religiosas', propiedad('P140', enMayusculas) or 
        	                   argumento['religión'] or
        	                   argumento['creencias']},
        	{'Partido político',   argumento['partido político'] or argumento['partido'] or propiedad('P102')},
        	{'Otras afiliaciones políticas',   argumento['afiliaciones'] or propiedad('P1416')},
            
        },
        {tipo='sección',
        	estilotitulo = estilotitulo,
        	['titulo']   = 'Características físicas',   -- Ver la ficha de noble o la ficha de diseñador
        	{'Altura',             argumento['altura'] or argumento['estatura'] or propiedad('P2048')},
        	{'Peso',               argumento['peso'] or propiedad('P2067')},
        	{'Ojos', argumento['color de ojos']},
        	{'Cabello', argumento['color de cabello']},
        	{'[[Implante de mama|Pecho natural]]', argumento['busto natural']},
        	{'[[Orientación sexual]]',argumento['orientación sexual'] or argumento['orientación real']}
        	
          },
        {tipo='sección',
            -- Familia. 
            estilotitulo  = estilotitulo,
            ['titulo']    = 'Familia', -- Ver la ficha de noble
            
        -- En el caso del cónyuge tiene preferencia el argumento hasta que se muestre los calficativos.
            clase       ='plainlist', -- Mostrar las listas sin viñetas
            {'Familia nobiliaria', propiedad('P53')},
            {'Padres',     estaEnlazado(padres)},
            {'Cónyuge',    estaEnlazado(argumento['cónyuge'] or argumento['conyuge'] or argumento['Cónyuge'] or argumento['Conyuge'] or
        	               propiedad('P26', conPeriodo))},
            {'Pareja',     estaEnlazado(argumento['pareja'] or propiedad('P451', conPeriodo))},
            {'Hijos',      estaEnlazado(argumento['hijos'] or argumento['Hijos']) or
        	               propiedad('P40', {['lista'] = 'no ordenada', ['debeExistir'] = 'sí'})},
            {'Familiares', estaEnlazado(argumento['familiares'])}, --- ¿¿¿¿¿¿¿¿¿??????????? -- Hermano: P7, padastro: p43, pariente: p1038
        },
        {tipo='sección',
        	['titulo']   = 'Educación',
            estilotitulo = estilotitulo,
            {'Educación',  educacion},
            {'Alma máter', almamater, clase='plainlist'},
            {'Posgrado',   argumento['posgrado']},
            {'Supervisora&nbsp;doctoral', argumento['supervisora_doctoral']},
            {'Supervisores doctorales'  , argumento['supervisores_doctorales']},
            {'Supervisor&nbsp;doctoral' , argumento['supervisor_doctoral']},
            {'[[Tesis]]', ModuloFormatoTexto.enlazar(argumento['tesis_url'], ModuloFormatoTexto.enCursivas(argumento['tesis_título']), argumento['tesis_año'])},
        },
        {tipo='sección',
        	['titulo'] = 'Información profesional',
            estilotitulo = estilotitulo,
            {'Ocupación',      ocupacion, clase='role'},
            {'Área',           area},
            {'Cargos ocupados',    propiedad('P39', conPeriodo), clase='plainlist'}, -- políticos o en empresas
        	{'Empresa',            argumento['empresa']},
        	{'Salario',            argumento['salario']},
        	{'Patrimonio',         argumento['patrimonio'] or argumento['fortuna']},
        	{'Tratamiento',            argumento['tratamiento']},
        	{etiquetaAnyosActivo,  argumento['años activo'] or argumento['años activa'] or
        	                   argumento['periodo'] or argumento['período'] or argumento['Periodo'] or
        	                   argumento['tiempo'] or argumento['Tiempo']}, -- Periodistas
        	{tipo='sección',
        	['titulo']   = seccionartistica,   -- Ver la ficha de noble o la ficha de diseñador
            estilotitulo = estilotitulo,
            {'Rol debut',argumento['rol debut']},
            {etiquetaactor, datoactor},
            {'Películas',argumento['número de películas']},
    		 },
            {'Empleador',      argumento['empleador'] or
        	                   argumento['institución_de_trabajo'] or
        	                   argumento['nombre_estudio'] or
        	                   propiedad('P108', conPeriodo),
                               clase       ='plainlist'},
            {'Restaurantes',   argumento['restaurantes']}, -- Para cocineros. Restaurantes en los que ha trabajado.
            {'Medio',          argumento['medio de comunicación']}, -- Para periodistas. Unas veces informados con el significado de área y otras con el empleador
            {'Programas',      argumento['programas']}, -- Para periodistas            

            -- Ocupación (escritores, artistas, periodistas, diseñadores, etc)            
            {'[[Seudónimo]]', argumento['seudónimo'] or argumento['Seudónimo'] or propiedad('P742')},
            {'Lengua de producción literaria',  argumento['lengua_literaria'] or argumento['Lengua_literaria']},
            {'Género',          argumento['género'] or argumento['Género'] or propiedad('P136', enMayusculas)},
            {'[[Movimiento artístico|Movimientos]]', argumento['movimiento'] or 
        	                                     argumento['Movimiento'] or
        	                                     argumento['movimientos'] or 
        	                                     propiedad('P135', enMayusculas)}, 
            {'Obras notables', argumento['obras'] or
        	                   argumento['obras notables'] or argumento['obras_notables'] or argumento['Obras notables'] or
        	                   argumento['obras destacadas'] or
        	                   argumento['proyectos_representativos'] or propiedad('P800',{['enlace']='sí', ['lista'] = 'no ordenada',   ['debeExistir'] = 'sí',    ['formatoTexto']='cursivas'}),
        	                   clase='plainlist'
        	                       },
            {'Artistas relacionados', argumento['relacionados']},
            	
           
            
            --{'', listaDesplegable(etiquetaInfluencias, argumento['influenciado por'] or argumento['influido por'] or 
            --	                  argumento['influencias'] or argumento['Influencias'], frame)},
            --{'',         listaDesplegable('Influyó a', argumento['influyó'] or argumento['Influyó'], frame)},
            
            -- Militares
            {'Rama militar',argumento['rama']       or propiedad('P241', enMayusculas)},
            {'Rango',        argumento['rango']      or propiedad('P410', conPeriodo), clase='plainlist'},
            {'Participó en', argumento['conflictos'] or argumento['batallas'] or propiedad('P607', enMayusculas)},
        },
        --AJEDRECISTA
        {etiquetaConocidoPor,  	argumento['conocido']	or argumento['conocido por']},
        {'Título',             	argumento['título']		or argumento['titulo']}, -- <!-- Su majestad, primera dama, etc -->
       	{etiquetacampeon,		argumento['campeón'] 	or argumento['campeon']},
       	{'[[Sistema de puntuación Elo|Elo]]',   		propiedad('P1087',{['formatoUnidad'] = 'número', ['calificativo']   = 'P585'})
       		or argumento['elo'] }, -- 
		{'[[Sistema de puntuación Elo|Mejor elo]]',   	argumento['mejor elo']},
		{'Ránking',				rankingajedrez},
		{'Mejor ránking',   	argumento['mejor ranking']},
        {'Término',            	argumento['término'] or -- <!--Años bajo los cuales la persona tuvo el título (el de arriba xD) -->
        	                   	argumento['termino']},
        {'Predecesor',         	argumento['predecesor']},
        {'Sucesor',            	argumento['sucesor']},
        {'Miembro de', propiedad('P463', conPeriodoDebeExistir), clase='plainlist'},
        {tipo='sección',
        	['titulo']   = 'Premios artísticos',   -- Ver la ficha de noble o la ficha de diseñador
            estilotitulo = estilotitulo,
            {'[[Premios Óscar]]', argumento['premios óscar']},
            {'[[Premios Globo de Oro|Globos de Oro]]', argumento['premios globo de oro']},
            {'[[Premios BAFTA]]', argumento['premios bafta']},
            {'[[Premios Emmy]]', argumento['premios emmy']},
            {'[[Premios del Sindicato de Actores|Premios SAG]]', argumento['premios sag']},
            {'[[Premios Tony]]', argumento['premios tony']},
            {'[[Premios Grammy]]', argumento['premios grammy']},
            {'[[Festival de Cannes]]', argumento['premios cannes']},
            {'[[Berlinale]]', argumento['premios berlinale']},
            {'[[Festival Internacional de San Sebastián]]', argumento['premios san sebastian']},
            {'[[Festival Internacional de Cine de Moscú]]', argumento['premios moscu']},
            {'[[Premios Goya]]', argumento['premios goya'] },
            {'[[Premios César]]', argumento['premios césar']   or argumento['premios cesar']},
            {'[[Premios Ariel]]', argumento['premios ariel']},
            {'[[Premios Cóndor de Plata]]', argumento['premios cóndor'] or argumento['premios condor']},
            {'Otros premios', argumento['otros premios']},
        },
        {tipo='sección',
        	['titulo']   = 'Carrera deportiva',   -- Ver la ficha de noble o la ficha de diseñador
            estilotitulo = estilotitulo,
            {'Deporte', argumento['deporte']},
        },
        {'',seccionDesplegable('Títulos y <br> reconocimientos deportivos',argumento['títulos'], frame,estilotitulo)},
        -- Los premios pueden ser para varias ocupaciones por lo que se ponen al final
        -- Premios, condecoraciones, medallas, distinciones, etc.
        {'Distinciones',       argumento['premios'] or argumento['Premios'] or
                               argumento['premio']  or argumento['Premio']  or
                               argumento['premios2'] or
                               propiedad('P166', {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo']   = 'P585', ordenar='por fecha',
                               eliminar1=eliminarpremio,eliminar2=eliminarpremio2,eliminar3=eliminaroscar,
                               eliminar4=eliminarsebastian}), 
                               clase       ='plainlist'}, -- Mostrar las listas sin viñetas
        	                   
        -- Con etiqueta/datos como en las fichas de escritor y artista en vez de como en la ficha de persona
        {'Firma', (firma and ('[[Archivo:' .. firma .. '|150px]]'))}, -- 150 px como en la ficha de escritor en vez de 128

        {tipo='sección', -- Web
            clase       ='plainlinks',
            titulo      ='Web',
            estilotitulo  = estilotitulo,
            {'Sitio web', ModuloURL.enlazar(web)}, 
            {'Facebook', facebook and ('[http://www.facebook.com/' .. facebook .. ' ' .. facebook .. ']')}, -- Ver la plantilla facebook
            {'Twitter',  twitter  and ('[http://www.twitter.com/'  .. twitter  .. ' ' .. twitter .. ']')},  -- Ver la plantilla twitter
            {'Ficha',    ModuloFormatoTexto.enVariasLineas({
            	  imdb              and ('[http://www.imdb.com/name/' .. imdb  .. ' Ficha] en [[Internet Movie Database|IMDb]]') -- Ver la ficha de actor
            	, catholicHierarchy and ('[http://www.catholic-hierarchy.org/bishop/b' .. catholicHierarchy .. ".html Ficha] en ''catholic-hierarchy.org''") -- Ver la Ficha de líder religioso
            	})}
        },
        {tipo='sección',
            titulo      ='Notas',
            estilotitulo='border-top:1px solid #c0c0c0;text-align:left',
            {'', argumento['notas'], estilodatos='text-align:left;font-size:90%; line-height:1.2em'}
        },        
        {'Fuente biográfica', argumento['fuentebiográfica']},
    }

    categorias = ''
    
    -- Ahora la categoría se informa en Módulo:Wikidata/Formatos
    --if algunaPropiedadEnlazaWikidata then
    --	categorias = '[[Categoría:Wikipedia:Páginas con propiedades de Wikidata sin etiqueta]]'
    --end
    
    if (fechaNacimiento or lugarNacimiento) and not (fechaFallecimiento or lugarFallecimiento) then
    	categorias = categorias .. '[[Categoría:Personas vivas]]'
    end
    
    --if educacion and almamater then
    -- 	categorias = categorias .. '[[Categoría:Wikipedia:Páginas que tienen informado el campo educación]]'
    --end
    
    return ModuloFicha.infobox(Ficha) .. categorias
end

function generarcargo(argumento,numero)
	dato=numero --se requieren dos variables por el primer parámetro
	if numero == 1 then numero ='' end --si es el primer cargo, entonces no tiene número
	if argumento ['cargo'..numero] == nil then titulo=''
	elseif argumento['escudo'..numero] == nil then titulo=argumento['cargo'..numero] -- si no tiene escudo entonces dejar en blanco, si tiene escudo ponerlo
	else	titulo='[[Archivo:'..argumento['escudo'..numero]..'|40px]]<br />'..argumento['cargo'..numero] end
	if argumento['distrito'..numero] then titulo = titulo..'<br /><small>por '..argumento['distrito'..numero]..'</small>' end
	periodo = ''
	if argumento['inicio'..numero] and argumento['final'..numero] then
		periodo = argumento['inicio'..numero]..'-'.. argumento['final'..numero]
	elseif argumento['final'..numero] then
		periodo = 'Hasta el ' .. argumento['final'..numero]
	elseif argumento['inicio'..numero] then
		titulo = titulo .. '<br /> <small> Actualmente en el cargo</small>'
		periodo = 'Desde el '..argumento['inicio'..numero]
	end
	
	cadenatexto={tipo='sección',
        	['titulo']=titulo,
            estilotitulo = 'background-color:#E6E6FA; font-size:110%',
            {'', periodo, estilotitulo = 'background-color:#E6E6FA; font-size:110%; border-top:1px solid;'},
    	    {'Vicegobernador', argumento['vicegobernador'..numero] },
    	    {'[[Presidente]]', argumento['presidente'..numero] },
    	    {'[[Monarca]]', argumento['monarca'..numero] },
    	    {'[[Primer ministro]]', argumento['primerministro'..numero] },
    	    {'[[Gobernador]]', argumento['gobernador'..numero] },
    	    {'[[Jefe de Gobierno]]', argumento['jefe'..numero]},
    	    {'Junto a', argumento['juntoa'..numero] },
    	    {'Nominado por', argumento['nominado'..numero] },
    	    {'Designado por', argumento['designado'..numero] },
    	    {'Gabinete', argumento['gabinete'..numero] },
    	    {'[[Vicepresidente]]', argumento['vicepresidente'..numero] },
    	    {'Viceprimerministro', argumento['viceprimerministro'..numero] },
    	    {'[[Teniente gobernador]]', argumento['teniente'..numero] },
    	    {'Vicealcalde', argumento['vicealcalde'..numero] },
    	    {'Vicejefe de gobierno', argumento['vicejefe'..numero]},
    	    {'[[Canciller]]', argumento['canciller'..numero]},
    	    {'Vicecanciller', argumento['vicecanciller'..numero]},
    	    {'Predecesor', argumento['predecesor'..numero]},
    	    {'Sucesor', argumento['sucesor'..numero]},
    	    {'Compañero de fórmula', argumento['fórmula'..numero]},
    	    {'Oponente/s', argumento['oponentes'..numero]},
    	    {'En el cargo', argumento['enelcargo'..numero] },
    	    {argumento[dato..'data1'], argumento[dato..'data2'] },
    	    {argumento[dato..'data3'], argumento[dato..'data4'] },
    	    {'','<hr>'}
        }
return cadenatexto

end
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
function propiedad(idPropiedad,opciones)
    if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
    	if not opciones then
    		opciones = {}
    	end
    	opciones['propiedad'] = idPropiedad

        valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])

        if valorPropiedad and valorPropiedad:match('%[%[:d:') then
          algunaPropiedadEnlazaWikidata = true
        end

    	return valorPropiedad
    end
end

function obtenerEtiquetaWikidata()
	if Entidad and Entidad.labels and Entidad.labels.es then
        return Entidad.labels.es.value
    end
end

function listaDesplegable(titulo, lista, frame)
	if not lista then
		return
	end
	formatoprevio='background:transparent'
	return frame:preprocess('{{lista desplegable|título=' .. titulo .. 
		--'|marco_estilo=border:0; padding:0; border-top:1px solid #c0c0c0;' ..
		'|marco_estilo=border:0; padding:0;' ..
		'|título_estilo=background-color:#8DB1C3;color:#FFF; text-align:left|lista_estilo=padding-left:33%;text-align:left; display:none|1='
		.. lista .. '}}')
end
function seccionDesplegable(titulo, lista, frame,estilotitulo)
	if not lista then
		return
	end
	return frame:preprocess('{{Sección desplegable|título=' .. titulo .. 
		--'|marco_estilo=border:0; padding:0; border-top:1px solid #c0c0c0;' ..
		'|datos=<div style="text-align:left;margin: 1px; padding: 2px; border:1px">'.. lista .. '</div>|estilotitulo='..estilotitulo ..';}}')
end

function estaEnlazado(que)
	-- De momento devolver siempre que está enlazado pues falla en por ejemplo:
	-- |Hijos = 6{{#tag:ref|Entre ellos [[Catalina Parra|Catalina]], [[Colombina Parra|Colombina]], Juan de Dios y Ricardo Nicanor «Chamaco».<ref>[http://www.caras.cl/libros/nicanor-parra-cronologia-intima/ Nicanor Parra: Cronología íntima]</ref>|group=nota}}
	if true then return que end
	
	if not que then 
		return
	end
	
	for contenido in que:gmatch("%[%[(.+)]]") do
		if not contenido:match('^:d:') and
		   not contenido:match('^Categoría:') then
			return que
		end
	end
end

function formatoOcupacionMasculino(valor, opciones, frame)
	local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor)
	
	-- Corregir la ocupación.
	-- Ejemplos:
	--    - "actor/actriz"            --> "actor"
	--    - "informático/a teórico/a" --> "informático teórico"
	
	if etiquetaOcupacion then
		etiquetaOcupacion = etiquetaOcupacion:gsub('([^%s]+)(/[^%s]+)', '%1')
	end

	return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion, opciones)
end

function corregirOcupacion(etiquetaOcupacion)
	if not etiquetaOcupacion or not etiquetaOcupacion:find('/') then
		return etiquetaOcupacion
	end
	
	local palabrasCorregidas={}
	local palabraCorregida
	
	for palabra in etiquetaOcupacion:gmatch("[^%s]+") do
		palabraCorregida = 	
		   palabra:match('^(.+)o/a$') or -- científico/a --> científic
		   palabra:match('^(.+)/a$')     -- escritor/a   --> escritor
	    
	    if palabraCorregida then
	    	table.insert(palabrasCorregidas, palabraCorregida .. 'a')
	    else
	    	table.insert(palabrasCorregidas,
	    		palabra:match('^.+/(.+)$')  or -- actor/actriz
	    		palabra                        -- de, literatura, infantil
			)
		end
	end

	return table.concat(palabrasCorregidas, ' ')
end

function formatoOcupacionFemenino(valor, opciones, frame)
	local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor)
 
	return ModuloWikidataFormatos.enlazar(enlaceOcupacion, corregirOcupacion(etiquetaOcupacion), idEntidadOcupacion, opciones)
end

function obtenerValorCalificativo(Propiedad, Calificativo, ValorPropiedad)
	-- Obtener el valor del primer calificativo de la propiedad con el valor recibido 
	if not Entidad or not Entidad.claims or not Entidad.claims[Propiedad] then
		return
	end
	
	for k,v in pairs(Entidad.claims[Propiedad]) do
		if     v.mainsnak
		   and v.mainsnak.datavalue
		   and v.mainsnak.datavalue.value
		   and v.mainsnak.datavalue.value['numeric-id'] == ValorPropiedad
		   and v.qualifiers
		   and v.qualifiers[Calificativo]
		   and v.qualifiers[Calificativo][1]
		   and v.qualifiers[Calificativo][1].datavalue then 
			return v.qualifiers[Calificativo][1].datavalue.value
		end
    end		
end

function obtenerFacebook()
	return obtenerValorCalificativo('P553' -- cuenta en red social
                      , 'P554' --dirección en red social
                      , 355)   -- Facebook
            or propiedad('P2013'); -- Ejemplo: Gillian Flynn
end

function obtenerTwitter()
	return obtenerValorCalificativo('P553' -- cuenta en red social
                      , 'P554' --dirección en red social
                      , 2002)   -- Twitter
end

return z