martes, 19 de abril de 2011

Auto-Post

No, no es que vayamos a hablar de coches, es que desde el último post le he estado dando vueltas a la forma en la que el código, ya sea python, ya sea c++, se muestra en nuestro querido servicio blogger. Hay muchas entradas por ahí, un rápido uso de google nos dará infinidad de resultados, siento no nombrar a nadie, pero creo que cogí cosas de aquí, cosas de allí y alguna de cosecha propia ya que no encontré el proceso completo en ningún sitio.

Lo de auto es porque lo que explico en este post aparece mostrado dentro de él jeje

En fin, de momento, para mi código python utilizaré pygments, el paquete en debian se llama 'python-pygments', para ser exactos. Primero debemos crear el código css que añadiremos a nuestra plantilla de blogger. Por poner algo, vamos a utilizar la clase codehilite, para ello generamos nuestro css de la siguiente forma:

$ pygmentize -O bg=light,python=cool -S default -f html -a html -a ".codehilite" > syntax.css

Así obtenemos una lista de clases que nos coloreará, posteriormente, las palabras clave y demás cacharrería como todos vemos en las webs sobre python. Debemos añadir el contenido de este archivo en nuestra plantilla de blogger, en el apartado de 'Diseño', en 'Edición de HTML', entre las palabras clave:

b:skin [[CDATA
...
]] b:skin

Ahora sólo debemos coger nuestro código python, procesarlo mediante la siguiente orden:

$ pygmentize -O bg=light,python=cool -o prueba.html prueba.py

El código html obtenido simplemente tenemos que pegarlo a continuación cambiando la clase del div, la llamamos 'codehilite', eliminamos el tag 'pre' y ya lo tenemos.


#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys

print 'Hola Mundo'


Sólo faltaría lidiar con los tabuladores, no entiendo muy bien cómo trata blogger los espacios, debo estar equivocándome en el tipo de edición, pero he observado que lo que mejor resultado me da es añadirle la siguiente variable 'style="padding-left:20px"' al span correspondiente al comienzo de la línea a ser tabulada.

Intentaré seguir mejorando el método...

No hay comentarios:

Publicar un comentario