Pensamientos y Libros

25 noviembre 2007

Utilizar Latex en documentos Docbook

Filed under: Computación,Edición,Linux,Matemáticas — ancechu @ 19:40

 

 

Instrucciones

El formato XML ha sido una gran idea. Un formato sencillo y fácilmente extensible utilizado para describir datos con multitud de aplicaciones. Yo por ejemplo lo utilizo para redactar estos artículos utilizando el esquema publicado de Docbook, luego los convierto a HTML utilizando unas hojas de estilo en formato XSL y finalmente las subo a esta web. Es una solución muy flexible y que me evita tener que andar pensando en formatos y tipos de letras, simplemente hay que escribir contenido. Sin embargo viene con un peaje a pagar, el tener que lidiar con una sintaxis farragosa cuando hay que escribir el XML “a pelo” situación que aparece a menudo cuando queremos escribir ecuaciones y fórmulas matemáticas para la web utilizando el formato MathML. En este artículo voy a explicar cómo podemos ahorrarnos parte de la farragosa tarea de escribir matemáticas en un documento Docbook utilizando el truco de escribir las matemáticas en Latex dentro del documento y utilizar un filtro que nos convierta ese Latex a MathML antes de hacer cualquier conversión.

 

 

Instalación

 

  • Lo primero es bajarse el software que nos hará la conversión de Latex a MathML desde la página de itexToMML. Existen versiones para Mac y para Linux. En lo que sigue del artículo me referiré a la instalación en Linux. Descomprimimos el tar.gz que contiene los binarios y los fuentes del programa.
  • El programa utiliza el flujo de entrada al programa y traduce todos los entornos matemáticos Latex a su equivalente MathML. Para ilustrarlo creamos el fichero Docbook de ejemplo que se muestra en el siguiente listado.
    <?xml version="1.0" encoding="UTF-8"?><section version="5.0" xmlns="http://docbook.org/ns/docbook"         xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:xi="http://www.w3.org/2001/XInclude"
    
    xmlns:svg="http://www.w3.org/2000/svg"
    
    xmlns:mml="http://www.w3.org/1998/Math/MathML"
    
    xmlns:html="http://www.w3.org/1999/xhtml"
    
    xmlns:db="http://docbook.org/ns/docbook">
    
    <title>La función más famosa</title>
    
    <para>La función que aquí mostramos, $E=mc^2$, se ha convertido en un
    
    icono cultural aunque muy pocos comprendan su verdadero significado.</para>
    
    </section>
  • A continuación lo que hay que hacer es filtrar este flujo de texto con nuestro programa itex2MML para que convierta las funciones latex en su equivalente MathML. En línea de comandos hacemos:cat Ejemplo.xml | itex2MML > Exemplo-procesado.xmly el archivo original queda convertido en el que puede verse en el siguiente listado.
    <?xml version="1.0" encoding="UTF-8"?><section version="5.0" xmlns="http://docbook.org/ns/docbook"xmlns:xlink="http://www.w3.org/1999/xlink"
    
    xmlns:xi="http://www.w3.org/2001/XInclude"
    
    xmlns:svg="http://www.w3.org/2000/svg"
    
    xmlns:mml="http://www.w3.org/1998/Math/MathML"
    
    xmlns:html="http://www.w3.org/1999/xhtml"
    
    xmlns:db="http://docbook.org/ns/docbook">
    
    <title>La función más famosa</title>  <para>La función que aquí mostramos, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><mi>E</mi><mo>=</mo><msup><mi>mc</mi> <mn>2 </mn></msup></math>, se ha convertido en un
    
    icono cultural aunque muy pocos comprendan su verdadero significado.</para>
    
    </section>
  • Una vez tenemos la fórmula convertida a MathML lo que tenemos es un documento Docbook bien formado y lo único que nos queda es aplicarle las hojas de estilo y las transformaciones necesarias para obtener nuestros PDFs o páginas html. El resultado puede verse en el siguiente párrafo.La función que aquí mostramos,
    E = mc 2 , se ha convertido en un icono cultural aunque muy pocos comprendan su verdadero significado.

 

Caution

Es importante que en las transformaciones a XHTML el fichero destino no tenga extensión .html pues en dicho caso las fórmulas no se muestran correctamente. Utilizar la extensión xhtml o xml para visualizar el contenido correctamente.

Sobre WordPress

WordPress elimina el contenido específico de MathML al guardar el post así que estoy tratando de pensar cómo rodear y solucionar este problema.

5 noviembre 2007

Configurar Firefox para que pueda renderizar MathML en Linux

Filed under: Computación,Edición,Linux,Matemáticas — ancechu @ 23:35

 

 

Instrucciones

Para poder visualizar MathML al utilizar el navegador Firefox en Linux es necesario previamente haber instalado las fuentes que permitan hacer el renderizado necesario. Para ello, seguimos los siguientes pasos:

  • En Ubuntu Gutsy el navegador está compilado con soporte para Xft (se comprueba poniendo about:buildconfig en la dirección y comprobando que tiene el –enable-xft como opción de compilación) así que descargamos las fuentes que se encuentran http://www.mozilla.org/projects/mathml/fonts/bakoma/texcm-ttf.zip y en http://support.wolfram.com/mathematica/systems/windows/general/files/MathFonts_TrueType_41.exe.
  • Las fuentes hay que descomprimirlas y guardarlas en ~/.fonts (crear el directorio si no existe). Las fuentes Mathematica pese a ser un fichero .exe se pueden descomprimir normalmente con el comando unzip MathFonts_TrueType_41.exe
  • Aún nos faltará una última fuente que no está disponible fácilmente. Si tienes algún sistema Windows a mano copia la fuente Symbol.ttf que se encuentra en el directorio c:\windows\Fonts en nuestro directorio de fuentes ~/.fonts
  • Ya por último para comprobar que todo funciona reinicia el navegador y ya tienes todas las fuentes instaladas. Para comprobarlo utiliza la página de prueba de http://www.w3.org/Math/XSL/pmathml2.xml

Todos estos pasos parece que no habrá que hacerlos en el futuro pues se están preparando unas fuentes que serán de libre distribución y vendrán incorporadas en nuestras distribuciones linux. Más información en http://www.mozilla.org/projects/mathml/fonts/

24 julio 2007

Conversión de la codificación de los archivos de texto

Filed under: Computación,Linux — ancechu @ 22:41

Cuando quiera cambiar la codificación con la que se creó un archivo de texto hay que utilizar el comando recode. Por ejemplo para transformar de UTF-8 a ISO8859-1 la línea de comando es:

recode utf8..latin1

20 junio 2007

Pequeñas perlas de la consola

Filed under: Computación,Linux — ancechu @ 15:24

Hay veces que me maravilla la facilidad con que ciertas cosas se pueden hacer si se dedica un poco de tiempo a pensar y no darse por vencido en la primera aproximación.

Hoy tenía que averiguar de un archivo de trazas de un apache de unos 800 megas el número aproximado de visitantes a un portal web para poder hacer un dimensionado acorde de un desarrollo que estamos haciendo. En cada traza tenía la cookie del usuario pero obviamente estaban completamente desordenadas y no podía saber cuántas habían diferentes. Ya estaba preparándome para importar los datos a lo bestia en una base de datos y hacer un SELECT DISTINCT cuando me he dado cuenta que eso era matar moscas a cañonazos. Después de hacer el esfuerzo de darle una pensada me ha salido la siguiente línea de comando:
cut --fields=1 09MayoProcesado.log | sort | uniq -c | wc --lines

Resultado final, un numerito con el total de cookies diferentes en el fichero gordote de los 800 Megas. Parafraseando a Schumacher, lo pequeño es hermoso.

7 enero 2007

The Business Of Software

Filed under: Computación,Ingeniería del Software,Libros — ancechu @ 22:04

The Business of Software Contraportada Business Of SoftwarePortada Business Of Software

What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad


Introducción

Leí este libro después de ponerme a curiosear sobre los libros que existían para emprendedores en el campo del desarrollo software. Ese curiosear me llevó al concepto de los Micro-VIS y este libro fue lo más parecido que pude encontrar mientras espero otros libros sobre el tema.

El libro

La verdad es que primer libro que leo y primera decepción. El libro no es más que un refrito de historias de “abuelo cebolleta” contando los pormenores de compañías que existen o existieron y por donde el autor parece que pasó alguna vez en su vida. Eso sí, repleto de fechas, nombres de compañías y símbolos de dolar a mogollón para marearte con cifras y datos inútiles y que parezca que toda esa cháchara tiene algún sentido.

De todos los capítulos (tiene ocho) sólo dos podrían ser considerados “técnicos” uno es una discusión sin fin entre si tu empresa debe ser orientada a producto o a servicio (no te preocupes si no lo entiendes lo va a repetir durante todo el libro) y el otro acerca de la estrategia de éxito de Microsoft, el sincroniza y estabiliza, que no es más que hacer un prototipo y tratar de integrarlo y depurarlo después (tiene otro libro sobre el estilo de programación de Microsoft así que parece que debe seguir haciéndoles la bola).

El contenido

Lo dicho, el libro tiene unos 8 capítulos que va alternando en plan un capítulo de chau chau contando batallitas de cuando IBM era el rey, de cuando la compañía patatín tuvo problemas o de lo bien que lo hicieron los chicos de Microsoft. Dedica uno de los capítulos a contar la historia del negocio del software desde sus orígenes con la excusa de que ese ejercicio de historia nos permite tener una perspectiva para comprender el presente. Dicho ejercicio son nada más y nada menos que 40 páginas de la dichosa historia y como habrás averiguado, la utilidad es mínima. Eso si con él el libro es un poco más gordo y tiene un poquito más de paja.

Uno de los capítulos técnicos es sobre la discusión entre si una empresa software debe estar centrada en productos, hacer software en cajitas para vender, o centrada en servicios. Cada una de las orientaciones tiene sus pros y sus contras y esta parte creo que ha sido la única de utilidad de todo el libro. Las economías de escala en el software hacen que si consigues hacer un súper ventas seguir copiando y vendiendo CDs no cuesta nada. Sin embargo en vacas flacas si se interrumpen las ventas te quedas con el culo al aire. En cambio servicios puede conseguir enganchar a los clientes e incluso en vacas flacas puedes tener un flujo de caja asegurado, pero esta orientación no escala bien pues para ampliar el negocio necesitas más empleados, burocracia e instalaciones y los márgenes comienzan a ser decrecientes.

Y hasta aquí lo único que se puede sacar de provecho del libro. El resto del libro no es más que un refrito de material diverso como por ejemplo el capítulo de buenas prácticas. Coge cualquier libro de Ingeniería del Software haz un resumen y trúfalo de ejemplos, de vez en cuando comenta el sincroniza y estabiliza de Microsoft y lo molón que era y ya tienes otro capítulo del libro. Ya queda menos para conseguir las 300 páginas que seguramente tenía contratado el autor con la editorial. El libro finaliza con un par de capítulos uno inacabable de anécdotas de empresas y de cómo les fue en los últimos 10 años y otro sobre emprendedores software que al igual que el de ingeniería del software no es más que un refrito de algún libro de texto.

Conclusión

Queda claro que no me ha gustado un pelo el libro y no le recomiendo a nadie que se lea el tostón este. El libro no habla por ejemplo de cuestiones importantes al crear una empresa software como la selección de un precio para el software que se está vendiendo o por ejemplo cual es la estrategia para crecer de forma ordenada desde cero o cómo gestionar las carreras de la gente que compone la empresa.

Repasando lo que he escrito he pensado que tal vez el libro no iba dirigido a mi como audiencia y que la audiencia del libro este son los gerifaltes de grandes compañías de desarrollo software y que por eso he echado a faltar ciertos temas, pero si eso es así menudo bluf de libro. Todos los conceptos que expone se supone que ese tipo de gente los tiene que tener más que dominados si incluso yo los puedo comprender o intuir.

Resumiendo, kk de vaca.

29 noviembre 2006

Como eliminar los márgenes blancos al imprimir documentos PDF

Filed under: Computación,Edición — ancechu @ 8:43

Muchas veces me he encontrado con el problema de tener que imprimir un documento bastante extenso pero que sabía a ciencia cierta que su uso iba a ser efímero. Otras veces he querido imprimir un libro en el menor número de páginas posibles para hacerlo lo menos pesado posible. En todos estos casos la solución siempre pasa por imprimir más de una hoja por cara y utilizar impresión a doble cara. El problema aparece cuando estamos tratando de imprimir un PDF con unos márgenes bastante grandes que hacen que al imprimir varías páginas por cara la porción del papel que se dedica a texto sea tan pequeña que las fuentes utilizadas hacen prácticamente imposible una lectura cómoda.

Por tanto el objetivo de este post es enseñar cómo desde Linux se pueden transformar esos documentos de forma que se eliminen los márgenes y la impresión sea más amigable.

  1. Lo primero será convertir los PDF a PostScript. Este paso no tendría porqué ser así pero he observado que muchas veces esto hace que todo funciones como debiera. Si tu documento ya es PostScript, obviamente puedes saltarte este paso.
    Instálate el Ghostscript para la manipulación de PostScript. Incluye la aplicación pdf2ps que es la que utilizaremos para la conversión. En mi Mandriva y desde el usuario root:
    urpmi ghostscript-common
    Una vez instalado simplemente hacer la convesión
    pdf2ps mi_fichero.pdf
    Esto nos generará el fichero mi_fichero.ps que utilizaremos para la conversión.
  2. A continuación instalamos la aplicación psbind que tiene como curiosa descripción del paquete psbind – Transforma archivos PostScript para salvar árboles y reducir la culpa. Al igual que antes:
    urpmi psbind
    Si no disponemos del paquete podemos ir a la página del programa y descargarnos el paquete correspondiente a nuestra distribución.
  3. Ya sólo queda utilizar el comando con nuestro PS generado:
    psbind --tumble -2 --paper=a4 -P mi_impresora mi_fichero.ps
    Donde –tumble indica que las páginas queremos que las encuaderne por el margen corto, -2 indica que queremos dós páginas por cara (subir el número para imprimir manuales de referencia), -paper el tamaño del papel y por último la impresora a donde queremos enviar el archivo a imprimir.

Con eso, espero que seas capaz de imprimir eliminando los márgenes en el 90% de las veces. El otro 10% problemático viene motivado porque el psbind lo único que hace es analizar los PS utilizando como muestra las 10 primeras páginas (se le pueden especificar otras) y trata de deducir las dimensiones mínimas de una caja que sea el contorno del texto para todo el documento. Ocurre a veces que la conversión de PDF a PS no facilita que el programa sea capaz de delimitar dicha caja y que los márgenes queden como están, así que en el futuro espero modificar esta entrada con más trucos y reducir ese 10% de casos fallidos.

El tema Rubric. Crea un blog o un sitio web gratuitos con WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.