Un procesador de reStructuredText

Siempre me gustó escribir. Pero, desde que recuerdo, casi siempre lo hice en un teclado de computadora. Salvo garabatos cuando tengo que pensar algo difícil o cuando me aburro en una reunión/clase, casi no escribo en papel.

En la compu escribo mucho y, sin embargo, tampoco uso procesadores de texto, ni siquiera los open source: aunque "lo que se ve" es "lo que se obtiene", (me)sucede demasiado seguido que lo que veo no es lo que quiero.

Por ese motivo (y porque casi siempre sigo los consejos de Roberto Alsina) escribo texto plano, usando el formato reStructuredText. Y así escribo todo: este blog, las charlas, mi tesis de grado, la documentación de mis proyectos , notas rápidas en una wiki, cartas de amor, etc.

reST es un lenguaje de marcado sencillo y potente, que a diferencia de LaTex fue pensado para que el contenido sea legible en formato fuente, es decir, en texto plano. Escribiendo con un simple editor de texto nos concentramos en lo importante (el contenido) y no en luchar contra el formato de la tabla, la sangría o el tipo de letra de un encabezado. Además, es más útil cuando se usa con un sistema de control de versiones, porque se pueden visualizar los cambios claramente.

Si bien su sintaxis es algo más verborrágica [1] que la de Markdown (el markup liviano más difundido en la web), reST es muchísimo más potente y orientado a tener múltiples formatos de salida (html, ebooks, pdf, etc.). De hecho se han escrito libros y toda la documentación oficial de Python de esta manera.

Pero tampoco hace falta ser un asceta: si un software nos puede ayudar a escribir y a formatear lo escrito mejor y más fácilmente, ¿por qué no usarlo?

Eso hace rst-completions el plugin para SublimeText del que soy el principal desarrollador [2]. Acá una demo de los que se puede hacer.

Por ahora tiene:

  • Atajos de directivas y formatos: links, admoniciones, código, etc.
  • Encabezados: autocompletado, navegación, cambio de nivel, folding
  • Tablas: autoformato, ajuste con ancho fijo o variable, fusión de celdas lindantes
  • Notas al pie: inserción automática al final del documento, salto entre referencia y nota,
  • Listas: detección automática del patrón, autonumeración.
  • Output: generación de html, pdf, etc. (usando pandoc, rst2pdf o rst2html)

Lo hice para SublimeText porque es el editor que uso y, sobre todo, porque su API de plugins está basada en Python [2]. Pero tengo la idea de separarlo como una biblioteca agnóstica, permitiendo hacer plugins como wrappers delgados para cualquier editor.

¿Qué opinás? ¿Te sumás a colaborar?

[1] En las funcionalidades básicas son muy parecidos
[2] (1, 2) Aunque su documentación apesta

El código de este artículo está disponible en github. ¿Encontraste un error? Por favor, enviame un pull request.

Comentarios

Comments powered by Disqus