Menu Close

Editando código HTML en idiomas con marcas diacríticas

Como muchas personas de habla hispana, muchas veces me veo en la necesidad de editar código
HTML en idiomas con marcas diacríticas (como el Español). Mi esquema de teclado soporta
marcas diacríticas, pero dejar estas marcas en el código fuente
del HTML es un problema porque a veces los navegadores (o los programas de
manejo de contenido) tienen un código de página distinto al que
se utilizó para leer el archivo originalmente, lo cual hace a las marcas
diacríticas verse espantosas. Y tener que recordar los códigos de cada
letra acentuada rompe el tren de pensamiento.

Este artículo ayuda a solucionar este problema mediante macros que convierten tus caracteres diacríticos a entidades HTML.

Vim

Para Vim en todas las plataformas, usted puede añadir la
función que sigue en su .vimrc:

function Html_entities_replace()
  exe ":silent g/ñ/s//\\ñ/g"
  exe ":silent g/Ñ/s//\\Ñ/g"
  exe ":silent g/á/s//\\á/g"
  exe ":silent g/é/s//\\é/g"
  exe ":silent g/í/s//\\í/g"
  exe ":silent g/ó/s//\\ó/g"
  exe ":silent g/ú/s//\\ú/g"
  exe ":silent g/Á/s//\\Á/g"
  exe ":silent g/É/s//\\É/g"
  exe ":silent g/Í/s//\\Í/g"
  exe ":silent g/Ó/s//\\Ó/g"
  exe ":silent g/Ú/s//\\Ú/g"
  exe ":silent g/ü/s//\\ü/g"
  exe ":silent g/Ü/s//\\Ü/g"
  exe ":silent g/¡/s//\\¡/g"
  exe ":silent g/¿/s//\\¿/g"
endfunction

Con la función en mano, simplemente utilice el comando
:Html_entities_replace() para corregir las marcas diacríticas. Si
prefiere mapear el comando a una tecla, también lo puede hacer en
.vimrc:

map <f3> <Esc>:exec Html_entities_replace()^M

Usted puede obtener ^M tecleando control-v, control-m.

Textmate

Para TextMate en Mac OS X, usted puede crear una
macro. He aquí la macro que escribí, llamada
ReplaceDiacriticalMarks:


#!/usr/bin/ruby -Ku

char_to_entity = { }
File.open("#{ENV['TM_BUNDLE_SUPPORT']}/international.txt").read.gsub(/^(.*)\|(.+)$/) do |_|
key = $1
char_to_entity[key] = $2
end

ch1 =nil
res = STDIN.read.gsub(/[^\x00-\x7F]|["']|&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)/) do |ch|
ent = char_to_entity[ch]
ent ? "\&"+ent+"\;" : ch
end

print res

La opción -Ku en ruby es importante, ya que vamos a utilizar UTF para
leer nuestro archivo.

También necesitará un catálogo de marcas
diacríticas en un archivo llamado “international.txt” en el directorio
de soporte del bundle HTML en Textmate. Ásegúrese de guardar el
archivo en formato UTF-8:

á|aacute
é|eacute
í|iacute
ó|oacute
ú|uacute
ñ|ntilde
Ñ|Ntilde
Á|Aacute
É|Eacute
Í|Iacute
Ó|Oacute
Ú|Uacute
ü|udieresis
Ü|Udieresis

Mis catalogos están incompletos porque sólo reflejan
español latinoamericano, así que usted puede completar utilizando
la
tabla de entidades Latin-1

Gracias a esto ahora puedo pensar mientras escribo y al mismo tiempo no me tengo que preocupar por códigos de página.

2 Comments

Comments are closed.