lunes, 15 de junio de 2009

Publicación de trabajos con LaTeX y MathML

En estos tiempos ya no basta con tener conocimientos razonablemente buenos de inglés, Internet, computación y procesadores de texto como Microsoft Word para poder comunicar y poder publicar trabajos de índole técnica y científica compartiéndolos con otros estudiantes, académicos y profesionales del mundo entero. La nueva variedad de herramientas disponibles para la elaboración de trabajos en los que se hace referencia a algún tipo de fórmulas o incluso se deriva algún resultado nuevo que se quiere comunicar a los demás requiere del aprendizaje de estas herramientas nuevas so pena de quedar pasado de moda sin ellas, al igual que los dinosaurios.

La buena noticia es que muchas de las nuevas herramientas se pueden obtener gratuitamente de Internet, sin costo alguno excepto el tiempo requerido para bajar dichas herramientas de la Web. La mala noticia es que el aprendizaje de esta nueva generación de herramientas es algo que indudablemente nos va a consumir tiempo, y nosotros no estamos viviendo muchos más años de los que vivíamos hace apenas un siglo, las expectativas de vida no han incrementado considerablemente pese a los avances de la ciencia médica; de modo que para el aprendizaje de todo lo nuevo que está saliendo seguimos teniendo casi el mismo tiempo que el que teníamos hace apenas unas cuantas décadas, y de seguir así la cosa a nadie le va a alcanzar el tiempo para aprendar casi nada de lo mucho que habrá disponible en el futuro cercano. El consuelo disfrazado es que muchas de estas herramientas nos permiten economizar nuestro tiempo compensándonos a la larga por el tiempo invertido en aprenderlas, de modo tal que si el aprender algo nuevo nos llevará 50 horas esto tal vez no sea una proposición tan mala si a la larga nos terminará ahorrando unas 4 mil horas de trabajo.

Para quienes están acostumbrados a utilizar una computadora corriendo bajo el sistema operativo Windows, lo primero que se les viene a la mente tal vez sea utilizar los recursos del procesador de texto Word de Microsoft, encontrándose con el problema de que aunque Word afirme contar con un “Editor de Ecuaciones”, este editor no se instala por defecto (default) y se tiene que hacer una instalación personalizada para poder usarlo, para lo cual se necesitan los discos originales de instalación de Word. A primera vista el “Editor de Ecuaciones” de Word no parece muy difícil, ya que se pueden ir poniendo muchos símbolos matemáticos con la ayuda del ratón aunque el proceso sea algo tedioso. Sin embargo, no tardan en aflorar las limitaciones de este “Editor de Ecuaciones”, como la imposibilidad de poder numerar las ecuaciones, la imposibilidad de ponerle colores, o la dificultad de poder utilizar con facilidad macros para insertar símbolos compuestos. Si el usuario quiere funcionalidades como estas, tendrá que adquirir algún paquete comercial como MATHTYPE que le costará un ojo de la cara. Afortunadamente, existen otras alternativas, las cuales fueron desarrolladas sin fines de lucro, que nos pueden sacar del apuro.

Si queremos publicar algún trabajo científico, la herramienta dependerá del medio a través del cual estamos interesados en transmitir nuestro trabajo. Si lo que queremos es que nuestro trabajo sea publicado en un medio impreso, posiblemente para la elaboración de una tesis de Licenciatura, Maestría o de Doctorado, entonces la herramienta predilecta en estos tiempos es la que se conoce como LaTeX, la cual se está convirtiendo en la lingua franca de la comunidad científica y técnica alrededor del mundo. Y si lo que queremos es que nuestro trabajo sea publicado en Internet con las imágenes de las fórmulas y ecuaciones científicas generadas por el navegador, entonces una herramienta que está destinada a dejar huella es la que se conoce como MathML.

Hablaremos primero de LaTeX.

El creador de LaTeX es Donald E. Knuth, y su trabajo fue un encargo de la American Mathematical Society a principios de los años setenta, la cual buscaba un lenguaje adecuado para la elaboración de sus artículos pletóricos de teoremas y fórmulas matemáticas complejas, y el resultado fue algo extremadamente potente y configurable pero también difícil de aprender.

LaTeX es en realidad un lenguaje con el cual podemos describir fórmulas y ecuaciones matemáticas de todo tipo que queremos que aparezcan en nuestro documento impreso con una calidad equiparable a la que se pueda obtener en una imprenta haciendo un trabajo profesional, el cual es tan popular que para mediados de 2009 el buscador Google reportaba un total de casi 47 millones de sitios y referencias disponibles. Está basado en un lenguaje de composición de bajo nivel llamado TeX, del cual deriva su nombre, y el cual consiste fundamentalmente en una colección de macros que facilitan el uso de este lenguaje potente.

Desafortunadamente, a diferencia de otros sistemas utilizados para procesar textos, no se obtiene el resultado final a medida que se va escribiendo sino que primero se crea lo que se conoce como código fuente (en LaTeX) y luego se procesa para llegar al documento, y en este sentido es similar a los lenguajes de “marcas” (tags) como el HTML utilizado para la elaboración de este documento que el lector seguramente está leyendo en la Web.

Si queremos que se genere dentro de un documento una expresión matemática como la siguiente en la que se emplean sub-índices:

a11 + a22 + a33 + a44 = 0

entonces el código requerido en lenguaje LaTeX para generar esta expresión matemática es el siguiente:

0=a_{11} + a_{22}+a_{33} + a_{44}=0

Y si queremos que se genere dentro del documento una expresión matemática como la siguiente en la que se emplean super-índices (exponentes):

Hipotenusa = a² + b²

entonces el código requerido para generar esta expresión matemática es el siguiente:

Hipotenusa=a^2b^2

Hay varios símbolos en LaTeX que pueden ser utilizados para obtener efectos especiales, desde los sencillos hasta los elaborados. Si todo lo que queremos hacer es obtener una fracción aritmética mostrando explícitamente el numerador y el denominador, utilizamos el símbolo “\frac”. El código que se muestra a continuación:

\frac{a+2ab+c+7}{3b+4bc-5}

generará la siguiente imagen:



En el siguiente código tenemos un ejemplo de cómo podemos escribir una fórmula en la cual se tenga una expresión algebraica bajo una raíz cuadrada con la ayuda del símbolo “\sqrt”:

\frac{\partial x}{\partial x'}=\frac{1}{\sqrt{1-V^2/c^2}}

Este código nos genera la siguiente imagen:



Si lo que queremos es representar una sumación, utilizamos el símbolo “\sum” como lo muestra el siguiente ejemplo:

\sum_{i=0}^3 \alpha_i^6

que nos genera la siguiente imagen:



Como puede verse en este ejemplo, en LaTeX podemos escribir a nuestro antojo sub-índices y super-índices (exponentes) e inclusive índices dentro de índices y exponentes sobre exponentes.

Por regla general, los espacios en blanco son ignorados automáticamente por LaTeX durante el proceso de conversión de código a imagen, y podemos meter dentro del código todos los espacios en blanco que queramos si ello nos ayuda a hacer más legible lo que tenemos puesto dentro del código, al igual que como ocurre con lenguajes de programación como C++ en los cuales los espacios en blanco e inclusive los “saltos de línea” son ignorados durante el proceso de parsificación del compilador C++ (todo generador LaTeX de imágenes también lleva a cabo un proceso de parsificación mediante el cual se van juntando los caracteres individuales o tokens para irles dando su significado apropiado). Sin embargo, hay situaciones en las cuales los espacios en blanco son imperativos. Si queremos escribir algo como la letra π seguida de la letra “A”, entonces en el código LaTeX tenemos que escribir “\pi A”, con un espacio intermedio entre la hilera “pi” y la letra “A”, porque si lo ponemos todo junto como “\piA” entonces LaTeX buscará inutilmente entre su tabla de símbolos un símbolo, el símbolo “\piA”, que no existe en LaTeX.

Para representar el producto de dos matrices podemos escribir un código como el siguiente:

\begin{pmatrix}
{0}&{0}&{0}&{1}\\
{0}&{0}&{1}&{0}\\
{0}&{1}&{0}&{0}\\
{1}&{0}&{0}&{0}
\end{pmatrix}\begin{pmatrix}
{\psi_1}\\
{\psi_2}\\
{\psi_3}\\
{\psi_4}
\end{pmatrix}=\begin{pmatrix}
{\psi_4}\\
{\psi_3}\\
{\psi_2}\\
{\psi_1}
\end{pmatrix}

con lo cual se nos genera la siguiente imagen:



Podemos ver aquí que se pueden generar los caracteres griegos de uso común en la simbología matemática tanto en mayúsculas (p.ej. Λ, Φ) como en minúsculas (p.ej. λ, φ) llamándolos directamente por su nombre.

El siguiente código:

\vec V = a\vec i + b\vec j + c\vec k + d\vec l

nos genera esta expresión propia de los estudios del análisis vectorial:



La siguiente expresión que involucra una integral:



puede ser generada sin dificultad alguna por el código LaTeX que se muestra a continuación:

\delta \int_{t_1} ^ {t_2} L(q_i, \dot {q_i},t ) dt = 0

A continuación tenemos otro ejemplo de código en lenguaje LaTeX requerido para generar para su publicación en un medio impreso lo que en física relativista se conoce como una matriz de Lorentz:

\[ \left[ \begin{array}{cccc}
-1 & 0 & 0 & 0\\\
0 & 1 & 0 & 0\\\
0 & 0 & 1 & 0\\\
0 & 0 & 0 & 1 \end{array} \right]\]

Cuando, en base al código anterior, se nos genera dentro del documento una matriz de Lorentz, aparecerá en la versión final del documento previa a su impresión una imagen como la siguiente:



Si por alguna razón queremos hacer un “salto de línea” para sub-dividir una expresión larga en dos o más renglones, utilizamos la doble diagonal inversa (\\), como en el caso del siguiente código:

\bold {T}_;_k = (T^i_;_k)= (\frac{\partial T^i}{\partial x^k} + \Gamma^i _t_k T^t)
\\
= (T^i_,_k + \Gamma^i _t_k T^t)

que nos genera:



Como puede verse en este último ejemplo, el símbolo “∂” utilizado para representar las derivadas parciales se genera con la línea “\partial”.

El problema en el uso de LaTeX es que, como lenguaje, al principio puede resultar críptico y de difícil manejo para quienes no tienen el tiempo necesario para aprenderse la sintaxis del lenguaje. Pero no solo es necesario aprender los macros que requerimos para poder generar cierta fórmula. El documento en el cual será injertada la fórmula tiene que seguir ciertas convenciones.

LaTeX está incluído como parte integral en todas las distribuciones del sistema operativo LINUX, lo cual le dá a muchos buenas razones para migrar a este magnífico sistema operativo que tiene la ventaja de ser un sistema operativo de código abierto, gratuito, con el que Windows realmente no puede competir del mismo modo que Microsoft no ha podido competir con su costosa enciclopedia Encarta en contra de la Wikipedia gratuita ni su navegador Internet Explorer ha podido competir contra su principal rival Mozilla Firefox que le lleva la delantera en todos respectos. De cualquier manera, para todos aquellos que permanecen cautivos del sistema operativo Windows, también existe la posibilidad de usarlo. Desde hace varios años un puñado de programadores independientes han estado creando distribuciones de calidad de LaTeX para Windows, y su trabajo tiene el doble mérito de que no solo es bueno, sino que también es gratis.

Aunque LaTeX es utilizado para la publicación de trabajos técnicos y científicos principalmente en un medio impreso, en la actualidad, también sirve para la elaboración de algo que queramos subir “en vivo” en un documento a la Web, dependiendo del lugar a donde queramos subir el documento que contenga fórmulas codificadas con LaTeX. En una cantidad creciente de páginas Web es posible “postear” ecuaciones en código LaTeX, siempre y cuando el servidor huésped en el que estén alojadas las páginas que contengan código LaTeX estén habilitadas para llevar a cabo la conversión del código LaTeX a imágenes gráficas de ecuaciones, las cuales son exhibidas en la página como imágenes de archivo fotográfico tipo “.png”. Un ejemplo de tales servidores es el que sirve de huésped al popular foro Physics Forums, el cual tiene la siguiente página explicando cómo “postear” ecuaciones científicas y fórmulas matemáticas en LaTeX dentro de dicho foro:

http://www.physicsforums.com/showthread.php?t=8997

En dicha página se explica que para meter una fórmula LaTeX dentro de un texto que aparecerá en un foro de discusiones del sitio Physics Forums, basta con incluír el código LaTeX entre las etiquetas [tex] y [/tex] o entre las etiquetas [latex] y [/latex], y explica también que es posible poder leer el código LaTeX que está detrás de cada una de dichas fórmulas, para esto último basta con hacer “clic”-izquierdo con el ratón de la computadora dentro de la imagen de la fórmula para que aparezca una ventanita titulada “LaTeX Source Code” que muestra el código LaTeX utilizado para generar la fórmula. Esta es una buena manera de ir aprendiendo a escribir fórmulas en LaTeX para meterlas dentro de mensajes y documentos que serán publicados en sitios cuyos servidores están habilitados para llevar a cabo la conversión automática de LaTeX a archivo de imagen. La ventanita conduce a un documento del tipo “.pdf” breve pero informativo que sintetiza lo fundamental de los macros utilizados en LaTeX:

http://www.physicsforums.com/misc/howtolatex.pdf

Naturalmente, antes de subir a sitios como éstos que están habilitados para interpretar código LaTeX cualquier documento, los creadores del documento quieren cerciorarse primero de si la fórmula en LaTeX que están incluyendo es la correcta. Para ello, hay varios sitios de acceso gratuito en Internet que les permiten escribir la fórmula en código LaTeX y hecho esto se les envía la fórmula regresándose en poco tiempo la imagen generada por la fórmula. Uno de tales sitios, muy popular, es el siguiente:

http://rogercortesi.com/eqn/index.php

En este sitio, uno puede especificar el tamaño de la tipografía mediante el recuadro titulado “Resolution” que por omisión tiene el valor de 150. Entre mayor sea el valor numérico, tanto mayor será el tamaño de la imagen, y entre menor sea el valor numérico, tanto menor será el tamaño de la imagen. Para adquirir un poco de práctica, tal vez el lector quiera entrar a dicho sitio y meter el siguiente código LaTeX que le debe generar las imágenes que corresponden a las fórmulas mostradas (posiblemente a muchos la simbología e inclusive la nomenclatura les parezcan texto chino, pero ello no es lo importante, lo importante es descubrir las capacidades disponibles para la generación de tipografía matemática en la Web):

Formula del simbolo de Christoffel del primer género:

\Gamma_{ijk} = \frac{1}{2}(\frac{\partial}{\partial x^i} g_{jk} + \frac{\partial}{\partial x^j} g_{ki} - \frac{\partial}{\partial x^k} g_{ij})

Fórmula abreviada del símbolo de Christoffel del primer género:

\Gamma_{ijk} = \frac{1}{2}(\partial_i g_{jk} + \partial_j g_{ki} - \partial_k g_{ij})

Matriz métrica conjugada para coordenadas polares:

G^{-1}=\[ \left[ \begin{array}{ccc}
\frac{1}{r^2} & 0 \\\
0 & \frac{1}{r^2 \sin^2\theta} \end{array} \right]\]

Las capacidades de LaTeX van mucho más allá de simplemente generar imágenes en blanco y negro de fórmulas matemáticas. Se le puede agregar COLOR a las fórmulas e inclusive resaltar algo dentro de una fórmula que se quiera explicar con detalle. Si queremos destacar ciertos símbolos con algún color, utilizamos una sintaxis como la siguiente:

x = e^{\color {blue} 2 + 3i}

con la cual se genera la siguiente expresión:



Si queremos que los caracteres en color azul aparezcan en color rojo, entonces todo lo que tenemos que hacer es cambiar arriba en el código LaTeX la palabra “blue” por la palabra “red”, habiendo otros colores para escoger. A manera de ejemplo, el macro:

f=\frac{n v}{2 L}, \underbrace{\color{red}n=1, 2, 3, \ldots}_{\text{n's permitidas}}

nos genera la siguiente imagen en el editor-en-linea de Roger Cortesi:



Y el siguiente macro LaTeX:

\newcommand{\del}{\nabla}
\underbrace{\begin{array}{|l|l|}
\hline
\color{red}\text{Ley de Coulomb} & \color{red}\del \cdot \vec{D} = 4 \pi \rho \\
\hline
\color{cyan}\text{Ley de Ampere} & \color{cyan}\del \times \vec{H} = \frac{4 \pi}{c} \vec{J} \\
\hline
\color{green}\text{Ley de Faraday} & \color{green}\del \times \vec{E} + \frac{1}{c} \frac{\partial \vec{B}}{\partial t}=0 \\
\hline
\color{blue}\text{No hay monopolos magneticos} & \color{blue}\del \cdot \vec{B} = 0 \\
\hline
\end{array}}_{\mbox{\uc{Las cuatro ecuaciones de Maxwell}}}

es capaz de generar la siguiente imagen:



Obsérvese que los paréntesis “corchetes” (“{” y “}”) conocidos en inglés como braces son los que nos definen el alcance de cierto símbolo LaTeX que afectará a la hilera de caracteres que le sigue. Son como signos de puntuación. Cuando haya duda de que cierto símbolo LaTeX pueda afectar otros caracteres que estén más allá de lo que se quiera afectar (como algo que se quiera poner dentro de una raíz cuadrada sin tocar caracteres posteriores) entonces póngase dentro de corchetes lo que va a ser cubierto por el alcance del símbolo; los corchetes se encargarán de que se afecte únicamente lo que deba ser afectado. A modo de ejemplo, con el siguiente código en el cual hemos usado liberalmente los corchetes:

{\sqrt { {\sqrt {a + b + c} } + d + e + f } } + g + h

se nos genera la siguiente imagen de la fórmula que queremos representar:



Al usar ampliamente los corchetes como “signos de puntuación”, con el fin de evitar equivocaciones es importante checar que en todo momento los corchetes estén “balanceados”, esto es, que haya tantos corchetes “izquierdos” como corchetes “derechos”, porque si hay más de unos que de otros entonces algo nos está faltando o nos está sobrando. En la expresión de arriba hay cuatro corchetes izquierdos y hay cuatro corchetes derechos, con lo cual la expresión está balanceada.

Además del editor-en-línea de Roger Cortesi hay otros editores-en-linea de uso gratuito capaces de generar imágenes a partir de los macros de LaTeX. Sin embargo, cuando no es posible estar conectado a Internet todo el tiempo, ya sea porque la conexión está caída o porque se está en un lugar con una computadora portátil laptop en donde no hay conexión telefónica a Internet disponible o simplemente porque no tenemos dinero para pagar un servicio como Prodigy Infinitum, existe la opción de poder descargar programas gratuitos que se pueden instalar en una computadora los cuales pueden generar imágenes a partir de macros LaTeX. Uno de ellos es el programa TexNic, el cual tiene un peso de 4.4 Mb y puede correr inclusive en sistemas operativos tan viejos como Windows 98, y el cual se puede descargar gratuitamente de Internet del siguiente domicilio:

http://texniccenter.en.softonic.com/download

Además de las opciones ya mencionadas para el aprendizaje en el uso y manejo de LaTeX en Internet, existen otras disponibles también gratuitamente en la Web. Posiblemente una de las distribuciones de LaTeX para Windows más sencillas y configurables lo sea MiKTeX, la cual puede correr en los sistemas operativos Windows 95, Windows 98, Windows NT y Windows XP, y aunque sigue siendo un programa gratuito recientemente se le ha agregado la opción de soporte técnico por correo electrónico tras el pago de una pequeña cantidad, lo cual sirve para mantener la actividad del programados y es recomendable para la continuidad del proyecto. El sitio desde donde se disemina a MiKTeX es el siguiente:

http://www.miktex.org

Para la instalación de MiKTeX hay tres opciones de instalación, una instalación pequeña de 23 Megabytes (Small), una instalación grande de 64 Megabytes (Large) y una instalación total de 143 Megabytes (Total).

Los archivos que lee todo sistema LaTeX son simples archivos de texto ASCII a los que se les pone la extensión “.tex” en lugar de la extensión usual “.txt”, razón por la cual para crear un documento sólo se necesita de un editor capaz de producir estos archivos de texto.

MiKTeX es tan sólo una distribución de LaTeX para Windows pero sin interfaz gráfica. Quienquiera que crea que al echarlo a andar se va a encontrar con una interfaz gráfica como la que proporciona Excel o Word o Photoshop se va a llevar una decepción enorme. Habiendo obtenido MiKTeX, si el usuario desea una interfaz gráfica para evitar la pena de tener que elaborar el documento a mano, tiene que integrar a MikTeX con otro paquete como MathType por el cual tendrá que desembolsar una buena cantidad de dinero que posiblemente no tendría que desembolsar si desde un principio estuviese trabajando con el sistema operativo Linux en el cual hay varias opciones gratuitas para interfaz gráfica en la edición de ecuaciones y fórmulas. Windows, como puede verse, tiene varios costos adicionales ocultos de los cuales sólo los que ya han experimentado con Linux se dan cuenta.

A fin de cuentas, la mejor forma de aprender LaTeX es leyendo buenos libros y, sobre todo, practicando mucho. Es aquí en donde se invertirán las 50 horas de nuestro tiempo con la esperanza de que, a la larga, terminen ahorrándonos 4 mil horas de trabajo.

Se puede obtener más información acerca de LaTeX en el enlace de Wikipedia:

http://es.wikipedia.org/wiki/LaTeX

Para el trazado de las ecuaciones matematicas “en vivo” desde un navegador de Internet, se ha desarrollado este lenguaje bautizado como Mathematical Markup Language mejor conocido simplemente como MathML, el cual al momento de escribirse esta entrada sigue siendo un proyecto en vías de culminación. El espíritu de MathML está inspirado, al igual que como ocurrió con el lenguaje de marcado original HTML (Hyper Text Markup Language) que posibilitó a los primeros navegadores de Internet, en el uso de las “etiquetas”. Así como para que cierto texto sea generado en letras itálicas basta con ponerlo entre la etiqueta de apertura y de cierre de itálicas que le indica al navegador que el texto debe ser generado en itálicas, del mismo hay etiquetas que le indican al navegador que cierto texto debe generar el símbolo de una raíz cuadrada, que cierto texto debe ser mostrado como una fracción de polinomios, o que cierto texto debe ser interpretado como una matriz (un arreglo rectangular de números). La mala noticia es que esto requiere del aprendizaje de toda una nueva serie de etiquetas de marcado para poder generar en forma correcta la fórmula que se desea generar a través del navegador. La ventaja del MathML es que hace obsoleto el tener que incluír imágenes fotográficas de fórmulas y ecuaciones intercaladas entre un archivo de texto, ya que las fórmulas y ecuaciones son generadas automáticamente por el mismo navegador, reduciendo el tamaño del archivo que está hospedado en el servidor principal.

Aunque a partir del navegador Mozilla Firefox 1.5 se ha incluido soporte nativo a MathML, este soporte no está garantizado a todos los demás navegadores y mucho menos a navegadores antiguos. Esto es algo que debe tener en mente todo aquél que quiera que sus trabajos puedan llegar a todo el mundo, ya que en países tercermundistas como los que hay en Africa y en Sudamérica posiblemente tienen máquinas que siguen operando con navegadores antiguos porque sus capacidades limitadas tanto en el tamaño de la memoria RAM de las máquinas como la velocidad del procesador de las mismas e inclusive el sistema operativo que utilizan (aún hay muchas computadoras que siguen trabajando con Windows 95 con todo y que ya pasaron casi 15 años desde que fué introducido) no permiten la instalación de navegadores más modernos. Es por ello que, en caso de que se quiera accesar al mayor auditorio posible, es preferible utilizar imágenes en cualquiera de los formatos que pueden ser leídos por la mayoría de los navegadores (.jpg, .gif, .png, etc.), con lo cual el elaborador del documento se puede ahorrar el tener que aprenderse las etiquetas (tags) en las cuales se basará el MathML que sigue siendo un proyecto inconcluso en vías de desarrollo.

Se puede obtener más información acerca de MathML en el enlace de Wikipedia:

http://es.wikipedia.org/wiki/MathML