Módulo:Centrar
Uso
En: {{centrar}}, {{derecha}}, {{Flotador izquierda}}, {{Flotador derecha}}, {{sangría colgante}}, {{bloque centro}}, {{bloque derecha}}, {{bloque izquierda}}.
También las versiones abiertas: {{sangría colgante/c}}, {{bloque centro/c}}, {{bloque derecha/c}}, {{bloque izquierda/c}}
Opciones
Las plantillas que utilizan el módulo Centrar, pueden usar como segundo, tercer, cuarto, etc. parámetro cualquiera de una serie de códigos. En la siguiente tabla se indican todos los códigos disponibles, usando por ejemplo la plantilla {{centrar}}:
código | descripción | ejemplo |
---|---|---|
sc; may | small-caps, convierte el texto a versalita. | Ejemplo de texto
|
asc | all-small-caps, convierte el texto a versalita y deja todas las letras en minúscula. | Ejemplo de texto
|
lc | lower-case, convierte el texto a minúsculas. | Ejemplo de texto
|
uc | upper-case, convierte el texto a MAYÚSCULAS. | Ejemplo de texto
|
cap | capitalize, Convierte En Mayúsculas Las Primeras Letras De Cada Palabra | Ejemplo de texto
|
bold; negrita | pone el texto en negrita | Ejemplo de texto
|
cursiva; itálica; italic | pone el texto en negrita | Ejemplo de texto
|
subrayado; underline | subraya el texto | Ejemplo de texto
|
Tamaños de la fuente del texto
código | ejemplo |
---|---|
xx-menor | Ejemplo
|
x-menor | Ejemplo
|
menor | Ejemplo
|
grande | Ejemplo
|
x-grande | Ejemplo
|
xx-grande | Ejemplo
|
xxx-grande | Ejemplo
|
xxxx-grande | Ejemplo
|
xxxxx-grande | Ejemplo
|
xxxxxx-grande | Ejemplo
|
Familia genérica de fuentes
código | ejemplo |
---|---|
monospace | Ejemplo
|
serif | Ejemplo
|
sans-serif | Ejemplo
|
cursive | Ejemplo
|
fantasy | Ejemplo
|
Parámetros opcionales
parámetro | otros nombres | descripción |
---|---|---|
tamaño | fs; font-size | establece el tamaño del texto de manera más flexible evitando utilizar los parámetros de tamaño de texto predefinidos. Funciona con parámetros en em, px y porcentaje. |
Texto Centrado
Texto Centrado
Texto Centrado
| ||
interlineado | lh; line-height | altura de la línea. Funciona con parámetros en em, px y porcentaje. |
Texto Centrado
Texto Centrado
Texto Centrado
| ||
espaciado | letter-spacing | espaciado entre letras. Funciona con parámetros en em, px; no funciona con porcentaje. |
Texto Centrado
Texto Centrado
| ||
color | - | color del texto, para los valores válidos véase w:Ayuda:Tablas#Definición de colores. Funciona con colores predefinidos así como valores hexadecimales. |
Texto Centrado
Texto Centrado
| ||
estilo | - | estilo css personalizado. |
Texto Centrado
| ||
id | anclaje | genera un anclaje HTML personalizado, como la plantilla {{anclaje}} |
Los editores pueden experimentar en la zona de pruebas de este módulo.
Por favor, añade las categorías e interwikis a la subpágina de documentación. Subpáginas de este módulo.
require('strict')
-- módulo para plantillas de formato
local p = {}
local make_style_string = require('Module:Optional style').make_style_string
local tamFuente = { --tamaños de letra segun nombre de las plantillas
['xx-menor']="58%" ,
['x-menor']="69%" ,
['menor']="83%" ,
['grande']="120%" ,
['x-grande']="144%" ,
['xx-grande']="182%" ,
['xxx-grande']="207%" ,
['xxxx-grande']="249%" ,
['xxxxx-grande']="283%" ,
['xxxxxx-grande']="323%",
['sm']="smaller"
}
local textTransform = {
['lc']='lowercase' ,
['uc']='uppercase' ,
['cap']='capitalize'
}
local fontVariant = {
['sc']='small-caps',
['may']='small-caps',
['asc']='all-small-caps',
['all-small-caps']='all-small-caps'
}
local fontFamily = { --familia genérica de fuentes
['monospace']='monospace',
['serif']='serif',
['sans-serif']='sans-serif',
['cursive']='cursive',
['fantasy']='fantasy'
}
local fontWeight = { --negrita
['negrita'] = 'bold',
['bold'] = 'bold',
}
local fontStyle = { --cursivas
['cursiva'] = 'italic',
['itálica'] = 'italic',
['italic'] = 'italic',
['normal'] = 'normal', -- sin cursiva
}
local textDecoration = { --subrayado
['subrayado'] = 'underline',
['underline'] = 'underline',
}
local altparams= {['font-size']='fs', ['tamaño']='fs',
['line-height']='lh', ['interlineado']='lh',
['letter-spacing']='sp', ['espaciado']='sp',
['offset']='margen',
['id']='anclaje',
['width']='ancho',
['align'] = 'alinear',
['style'] = 'estilo',
['class'] = 'clase'
}
local params ={['tag']=1, ['open']=1, ['alinear']=1,['ancho']=1,['float']=1,['fs']=1,['lh']=1,['sp']=1,['margen']=1,['max-width']=1,['anclaje']=1,
['ancho']=1,['estilo']=1,['color']=1,['fondo']=1,['plantilla']=1,['colgante']=1,['bloque']=1, ['clase']=1}
local function argus_estilo(argus)
-- Función que procesa la lista de parámetros (argus) y
-- regresa una table con todos los estilos CSS
local css = {}
local clases = {}
css['text-align'] = argus.alinear
css['width'] = argus.ancho
css['float'] = argus.float
-- sección de parámetros
---- tamaño
if argus.fs and tamFuente[argus.fs]~=nil then
css['font-size'] = tamFuente[argus.fs] -- tamaños usando el nombre de las plantillas de tamaño de fuente
elseif argus.fs then
css['font-size'] = argus.fs -- tamaño personalizado
end
if argus.lh then
css['line-height'] = argus.lh
end
if argus.sp then
css['letter-spacing'] = argus.sp
end
-- sección de opciones
for k,v in pairs(argus) do -- opciones
if type(k) == 'number' and k~= 1 then
if textTransform[argus[k]] ~= nil then
css['text-transform'] = textTransform[argus[k]] --opciones transformación de texto
elseif fontVariant[argus[k]] ~= nil then -- opcion variante de fuente (small caps)
css['font-variant'] = fontVariant[argus[k]]
elseif fontFamily[argus[k]] ~= nil then -- opcion familia de fuentes
css['font-family'] = fontFamily[argus[k]]
elseif tamFuente[argus[k]] ~= nil then -- opciones de tamaño de fuente sin usar el parámetro fs
css['font-size'] = tamFuente[argus[k]]
elseif fontWeight[argus[k]] ~= nil then -- opcion de peso de fuente (negrita)
css['font-weight'] = fontWeight[argus[k]]
elseif fontStyle[argus[k]] ~= nil then -- opcion de estilo de fuente (cursiva)
css['font-style'] = fontStyle[argus[k]]
elseif textDecoration[argus[k]] ~= nil then -- opcion de decoracion de texto (subrayado)
css['text-decoration'] = textDecoration[argus[k]]
end
end
end
-- css['clear'] = 'both' — No utilidad aparente?
--otros parámetros
if argus.plantilla == 'derecha' then --para reutilizar código en {{derecha}}
css['margin-right'] = argus.margen or argus[2]
end
if argus.float == 'right' then --asimilar comportamieto de {{float right}} y {{flotador derecha}}
table.insert(clases, 'ws-flotador-d')
css['margin-right'] = argus.margen or argus[2]
css['margin-top'] = argus[3]
css['margin-bottom'] = argus[3]
css['margin-left'] = argus[4]
end
if argus.float == 'left' then --asimilar comportamieto de {{float left}} y {{flotador izquierda}}
table.insert(clases, 'ws-flotador-i')
css['margin-top'] = argus[2]
css['margin-bottom'] = argus[2]
css['margin-right'] = argus[3]
end
if argus.colgante == 's' then --asimilar comportamieto de {{sangría colgante}}
table.insert(clases, 'ws-sangria-colgante')
local margen = argus.margen or argus[2] or 'NaN'
if tonumber(margen:sub(1,1)) then
css['margin-left'] = margen
css['text-indent'] = '-'..margen
end
if argus['colgante'] == 'm' then --asimilar comportamieto de {{sangría colgante/m}}
table.insert(clases,'ws-sangria-colgante-m')
local margen = argus['margen'] or argus[2] or 'NaN'
if tonumber(margen:sub(1,1)) then
css['margin-left'] = margen
end
end
end
if argus.bloque == 'centro' then --asimilar comportamiento de {{bloque centro}}
table.insert(clases, 'ws-bloque-centro')
if argus['max-width'] then
css['max-width'] = argus['max-width']
end
elseif argus.bloque == 'derecha' then --asimilar comportamiento de {{bloque derecha}}
table.insert(clases, 'ws-bloque-derecha')
css['margin-right'] = argus.margen
css['text-align'] = argus.alinear
if argus['max-width'] then
css['max-width'] = argus['max-width']
end
elseif argus.bloque == 'izquierda' then --asimilar comportamiento de {{bloque izquierda}}
table.insert(clases, 'ws-bloque-izquierda')
css['margin-left'] = argus.margen or argus[2]
if argus['max-width'] then
css['max-width'] = argus['max-width']
end
end
if argus.estilo then --estilo personalizado, al final para poder sobreescribir todo
css['estilo'] = argus.estilo
end
return css, clases
end
local function color_string(frame, color)
if mw.ustring.sub( color, 0, 1 ) == '#' then
color = color
else
color = frame:expandTemplate{ title = 'RGB', args = { color } }
end
color = mw.ustring.gsub(color, '#', '#')
return color
end
-- función principal para llamar desde {{centrar}} o similar
function p._centrar(frame, argus )
local texto = argus[1]
local id = argus.anclaje or ''
local css, clases = argus_estilo(argus)
local tag = argus.tag or 'div'
-- manejo especial para el color
if argus.color then
css['color'] = color_string(frame, argus.color)
end
if argus.fondo then
css['background'] = color_string(frame, argus.fondo)
end
-- anclaje (ID)
if id ~= '' then
table.insert(clases, 'anclaje')
end
-- clases CSS adicionales
if argus.clase then
table.insert(clases, argus.clase)
end
-- inicio de tag
local contenido = '<'..tag..' '
-- atributos HTML
local id2 = ''
if id ~= '' then id2 = 'id="'..id..'"' end
local clases2 = ''
if next(clases) then clases2 = 'class="'..table.concat(clases, ' ')..'"' end
local atributos = {
id2,
clases2,
make_style_string(css)
}
-- agregar atributos
contenido = contenido..table.concat(atributos, ' ')..'>'
-- agregar texto y cerrar tag si no estamos en {{plantilla/c}}
if not argus.open then
contenido = contenido .. (texto or '') .. '</'..tag..'>'
if argus.bloque == 'derecha' then -- fix para {{bloque derecha}}
contenido = contenido..'<br style="clear:right"/>'
end
end
-- categorías de mantenimiento
for k,v in pairs(argus) do
if (type(k) ~= 'number') and (params[k]==nil) and (altparams[k]==nil) then
contenido = contenido .. '[[Categoría:Wikisource:Artículos que usan parámetros no reconocidos en el módulo Centrar]]'
end
end
return contenido
end
-- metafunciones
local function main(frame, argus)
--parámetros con nobmres alternativos
for k,v in pairs(altparams) do
if argus[k] and not argus[v] then
argus[v] = argus[k]
end
end
return p._centrar(frame, argus)
end
-- función para plantillas cerradas
function p.centrar(frame)
local argus = require('Module:Arguments').getArgs(frame)
return main(frame, argus)
end
-- función para plantillas abiertas
function p.open(frame)
local argus = require('Module:Arguments').getArgs(frame)
argus[12] = argus[1] -- copia el primer arg
argus.open = true
return main(frame, argus)
end
return p