He integrado GeSHi, una clase PHP para adornar un poco los fragmentos de código que voy publicando en el blog.
Me gusta porque el código está muy claro y es fácil de cambiar par adaptarlo a nuestras necesidades, que para eso es Software Libre (hasta le he mandado un parche al autor para la sintaxis de Ruby en el ratillo que he estado trasteando :P).
La única pega es que si le pasas como fuente una cadena para que le de formato, debes indicarle el lenguaje que es para que lo coloree de la forma adecuada. Lo he solucionado añadiendo un estilo especial a los tags pre.
Dicho estilo nunca llega a verse, es solo una marca que preproceso antes de mostrar la anotación:
while(ereg("<pre style=\"lang-([^\"]*)\">([^<]*)</pre>", $cuerpo, $valores)) $cuerpo=str_replace($valores[0], geshi_highlight(html_entity_decode($valores[2]), $valores[1], "[la path]/geshi", true), $cuerpo);
Sí, uso expresiones regulares ;).
La idea es detectar el patrón:
<pre style="lang-LENGUAJE">
Aquí viene el código fuente
</pre>
El código fuente y el LENGUAJE (php, javascript, c, ruby, etc) indicado se le pasan a GeSHi para reemplazar la ocurrencia con el código resultado. Fácil, ¿no?
No están todos los lenguajes (echo de menos el soporte para consola), pero sí hay una buena lista. Solo falta ser un poco creativo con CSS para darle el formato que queramos a la caja con el código y listo.

![[xml]](/images/xml.gif)
