¡Hola! Bienvenido a Desde Linux. ¿Acaso estás harto de los pantallazos azules y los virus? Entonces, no dudes en migrar a Linux. Si recién empiezas, te recomendamos pasar por nuestra sección para Novatos. En caso de que estés buscando una Distribución Linux, tenemos guías para ayudarte a elegir la mejor. También contamos con un listado de Programas para reemplazar a los que usabas en Windows. No olvides utilizar la barra aquí debajo para obtener ayuda adicional.

Pandoc y las maravillas desconocidas

La última vez que mencione a Haskell fue en un artículo acerca de XMonad. Sin embargo no es la única cosa reseñable del mundillo que les presento.

Seguramente ya conoce todo mundo a Markdown, y si no se los presento. Es un lenguaje de marcas ligero que nos permite ser más rápidos y productivos a la hora de redactar un texto. Suficiente por ahora.

Bien, Markdown no está sólo y existen multitud de lenguajes allá afuera para realizar la misma función. Normalmente todos van con la idea de tomar un texto plano con algunas marcas y pasarlo hasta darle forma como HTML, LaTex y demás. Todo bien hasta ahí.

Esto trae varios problemas a relucir. Primero, y más importante, es que algunas implementaciones no disponen de todas las características que deseamos. O un lenguaje de marcas que ya ha implementado esto no nos gusta.

Y antes de que nos enfrasquemos en los caprichos hay que pensar y darse cuenta de que hay una mejor solución. Algo que convierta cualquier lenguaje de marcas en otra cosa. Cualquiera.

Aquí es donde entra Haskell en escena. La maravilla de la que les hablo existe, está viva, tiene nombre, funciona y es asombrosa. Se hace llamar pandoc y vino de la mano de un filósofo de la Universidad de Berkeley, John MacFarlane. Agárrense, por que comienza lo bueno.

Todos contra todos

Podríamos esperar que pandoc ofreciera una cobertura mediocre de todo, por no concentrarse. Pero no. Está excelentemente trabajado y tiene funcionalidades asombrosas.

Para hacerlo simple, le pasas a pandoc un archivo fuente cualquiera (ya sea en Markdown o en reStructuredText o otros que soporte pandoc) y lo pasa a un formato terminado, como -¿preparado todo el mundo?-

LaTex, HTML simple, PDF, DocBook, OpenDocument, docx, rtf, man, texto plano y hasta tres tipos diferentes de presentaciones en HTML; y mi lista se queda corta, cortísima. Aquí hay un diagrama ilustrando su poder:

Y por si fuera poco, es una biblioteca (o librería, llamenla como quieran) de Haskell; que puede integrarse en el código de otros programas. Hakyll es uno de los que más lo explota, siendo éste un generador de páginas estáticas que al usar pandoc puede convertir desde inofensivo Markdown y algo de LaTex a puro HTML.

Aquí una lista de sitios que ya lo usan como sitio personal, al estilo de un blog.

Y es bastante rápido, para acabarla. Y aún con todas estas ventajas, parece que sólo se expande en países de lengua anglosajona y aquí apenas y hay información disponible, como -y duele- presentaciones de este tipo. Quizá sea por que la guía del usuario está en inglés.

Los contras

Por supuesto que tiene que haber. Aparte de la relativamente corta expansión que tiene, la mayoría de los editores no lo soportan completamente.

Vim dispone de resaltado de sintáxis para Markdown y poco más por defecto, así que nos perdemos de algunas de las cosas más interesantes de pandoc: su sintaxis extendida.

Cosas jamás planteadas en el Markdown original y que nos hacen la vida más sencilla, como son tablas, citas, notas al pie, HTML y LaTex dentro del código, metadatos y carácteristicas más avanzadas.

Por cierto, Emacs tiene ventaja en esto. Dispone de un modo Markdown que nos da resaltado de sintáxis y unos cuantos comandos útiles, pero ahí si existe un pandoc-mode hecho y derecho, cuyo equivalente en Vim todavía no puede competir con él.

Si todavía les interesa meterlo en Vim, por aquí está el archivo de sintáxis. Para emacs hay que instalar los modos markdown y pandoc, como ya había mencionado.

Al grano

Yo descubrí pandoc cuando buscaba el paquete de text2tags (otro conversor pero más limitado) en Crunchbang y ahora sé que está disponible en Debian estable con el nombre, adivinen, pandoc. Un aptitude install basta para esto. Pero los que usamos ArchLinux tenemos que sufrir un par de contratiempos antes.

Ese infierno de dependencias

Lo primero que pensamos es en hacer un pacman -S pandoc. Pues no. No hay paquete ni en los repositorios oficiales y el del AUR no funciona, por la masiva cantidad de dependencias que requiere. Si ya conoces algo de Haskell, pensaras ahora que cabal lo solucionará. Y sí, pero con reservas. Para hacerlo hay que correr lo siguiente:

sudo pacman -S ghc cabal-install
cabal update
cabal install pandoc

Esto debería de funcionar pero no lo recomiendo. Sobre todo si quieres adentrarte en el mundo de Haskell, por que esto te traerá horripilantes problemas a futuro.

Seguramente suena extraño oír una queja de ArchLinux y de su filosofía, pero a mí me parece un completo despropósito haber eliminado el paquete haskell-platform de los repositorios, que proveía del último entorno suficientemente desarrollado y compatible entre sí; por qué ghc y cabal-install se actualizaron.

Si quieres instalar otros paquetes usando cabal lo mejor es que descargues los paquetes antiguos de ghc y cabal-install desde la Arch Rollback Machine; aquí y aquí.

Los instalamos con un simple pacman -U ruta-del-paquete y hacemos que pacman los ignore al actualizar el sistema, en el archivo /etc/pacman.conf; dentro de la sección IgnorePkg.

Ahora sí, somos capaces de usar cabal para instalar pandoc y para que funcione como debe, ponemos esta línea en nuestro archivo .bashrc:

export PATH=~/.cabal/bin:$PATH

Y ya. Algo rebuscado, pero nos evitamos problemas. Si quieren empezar con otros paquetes, en vez de instalarlos localmente, pueden usar hsenv para crear entornos aislados y evitarse el quebradero de cabeza que es instalar, por ejemplo, Hakyll.

Y de una vez les advierto que es horrible. Todo esto por que Haskell y Cabal no resuelven todavía el infierno de dependencias del que ya se han librado otros lenguajes, como Ruby con su Bundle y las gems. Como sea, esta pequeña solución se la debo a Ian Ross del grupo de Hakyll.

Tengan paciencia. Es una instalación larga, por que lo compila para nosotros.

Uso y conclusiones

Tomas una terminal y mandas una orden así:

pandoc -o archivo-de-salida.ext -i archivo-original.md

Donde Markdown (*.md, es la extensión que yo uso) puede ser sustituido por cualquier otro formato y .ext por cualquier otro disponible en la salida.

Para mí, que prácticamente hago esto todos los días me ha servido mucho, sobre todo para exportar a OpenDocument.

Y el ecosistema es increíble. El mismo MacFarlane ha desarrollado un wiki en Haskell, que usa Pandoc para convertir sus páginas, pero eso es para otra historia. Por cierto, este post fue orgullosamente escrito con Pandoc, como la mayoría de los que he escrito hasta el momento,


anti

anti: Distro-hopper rehabilitado. A parte de eso no tengo mucho que decir.


No olvides dejar tu comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current day month ye@r *

  1. lector
    • autor
  2. lector
  3. msx redactor

DesdeLinux y DesdeFirefoxOS se encuentran felizmente hosteados en GNUTransfer