Para poder escribir símbolos matemáticos, igual que muchos caracteres especiales, al no encontrarse en los teclados normales, tenemos que aprendernos la forma "alternativa" de mostrarlos.
Justamente en los antiguos ordenadores para poder escribir este tipo de caracteres, teníamos que aprendernos su código ASCII y escribir el número manteniendo apretada la tecla "alt" de nuestro teclado.
Para escribir esos caractéres en nuestros documentos html, vamos a remitirnos a un viejo "Generador de Fórmulas Matemáticas y Lenguaje HTML" desarrollado en el mensaje de los foros del web titulado Trabajo en equipo. Se trata de generar una cadena con el carácter ya sea usando un juego de caracteres distinto del normal, como buscando su representación empezando por el carácter ampersand (&). Por ejemplo, para escribir cuelquier letra del alfabeto griego, basta con preceder su nombre en inglés del referido carácter, y terminar la representación con un punto y coma (;).
Al igual que podemos escribir las letras del alfabeto griego a partir de su representación, existen otros símbolos representables de esa manera, entre ellos algunos operadores lógicos como not, and y or. Pero el inconveniente es que siempre hay algún navegador que no muestra correctamente el resultado. Si pinchamos sobre ellos podemos ver su código usando el siguiente script:
<span style="cursor: pointer" onclick="alert(this.firstChild.data.charCodeAt(0))">¬</span>, <span style="cursor: pointer" onclick="alert(this.firstChild.data.charCodeAt(0))">∧</span>, <span style="cursor: pointer" onclick="alert(this.firstChild.data.charCodeAt(0))">∨</span>.
Los siguientes símbolos tienen asociado el script anterior por si se quiere probar: ¬, ∧, ∨.
Nos encontramos sus correspondientes valores numéricos, por lo que podemos usar la siguiente tabla:
Carácter | Representación alfanumérica | Representación numérica | Representación javascript |
---|---|---|---|
¬ | ¬ (¬) | ¬ (¬) | String.fromCharCode(172) () |
∧ | ∧ (∧) | ∧ (∧) | String.fromCharCode(8743) () |
∨ | ∨ (∨) | ∨ (∨) | String.fromCharCode(8744) () |
Pero miramos nuestra tabla y "nuestro gozo en un pozo", volvemos a verla con explorer y otra vez nos encontramos con el "maldito cuadradito".
Cuando referenciamos al "viejo generador", vimos que el símbolo que queremos mostrar existe, y al buscar su representación encontramos que el operador and y el operador or se representan con la fuente de la familia "symbol" los valores 217 y 218, aunque el navegador opera no los muestra.
Con los datos que tenemos ya podemos hacer una tabla de verdad que se ve igual (siempre con matices) en todos los navegadores:
p | q | ¬p | p ∧ q | p ∨ q | p → q | p ↔ q |
---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 1 | 1 |
Para obtener los resultados deseados, hemos tenido que aislar cada aparición de los símbolos ∧ y ∨ encerrándolor en contenedores "inline" span, y le hemos asignado una clase para poderlas discriminar. También podríamos usar un atributo nuevo como por ejemplo "clase", y el resultado sería el mismo, pero posiblemente no validaría.
Con las modificaciones realizadas, hemos añadido en la cabecera de la página el siguiente script:
function esExplorer() { return (navigator.appName.toLowerCase().indexOf("explorer") >= 0); } function ini() { if (esExplorer()) { var spans = document.getElementsByTagName("span"); for (i = 0, total = spans.length; i < total; i ++) { if (spans[i].className == "and") with(spans[i]) { style.fontFamily = "symbol"; firstChild.data = String.fromCharCode(217); } if (spans[i].className == "or") with(spans[i]) { style.fontFamily = "symbol"; firstChild.data = String.fromCharCode(218); } } } } window.onload = ini;
También hemos visto en la tabla otro par de caracteres especiales, pero se trata de unas flechas que los navegadores muestran sin problemas: → (right arrow o flecha a la derecha) y &harrow (horizontal arrow o flecha horizontal).
Ya sabemos como mostrar una fórmula lógica haciendo que se vea igual en todos los navegadores, pero es bastante complejo, así que intentaremos automatizarlo de manera que podamos escribir fácilmente una fórmula como esta:
(¬p ∨ q) → (¬p ∧ q)
Lo conseguiremos con un campo de texto y una serie de botones que inserten en él los símbolos especiales de manera que solo tengamos que cortar y pegar el texto resultante en nuestra aplicación. Basándonos en el editor de formularios de esta página: Editor de texto, y solo programando los botones para incluir algunos caracteres, hemos obtenido el siguiente editor de formulas lógicas.