Todo empezó cuando quise utilizar los estilos de LibreOffice (LO). Me gusta muchísimo LO, es un gran ejemplo, siempre está mejorando, y fue por muchos años mi principal herramienta a la hora de hacer presentaciones. Hasta que decidí intentar usar el sistema de estilos de Impress. Lamentablemente, por mucho que me guste LO, la experiencia fue malísima.
Esta es la clase de cosas que suelo poner en las presentaciones, nada raro.
(estas capturas fueron generadas con la nueva herramienta)
Entonces decidí probar salir de lo WYSWYG y pasar a algo más "tipo" latex... pero no tan duro. Es decir, algo en lo que pueda escribir el contenido, indicarle que tome el estilo de algún template, y que la herramienta se encargue de generar lo que falta. Digo "pero no tanto" porque lo que realmente necesito es mucho más simple que el todopoderoso latex (no soy un experto en latex ni mucho menos).
Buscando encuentro que ya hay muchísimas herramientas como esta, la mayoría basada en html y bibliotecas gigantes en javascript como nodejs. No quiero escribir en html, prefiero algo más simple e independiente, como por ejemplo markdown. Hay herramientas que soportan marcados alternativos similares, pero digamos que por razones de filosofía personal que no van en este posts quería evitar nodejs, npm, y toda la maquinaria de server-side javascript y cia.
Por otro lado, recordemos que ya tengo una biblioteca C/C++ muy simple para markdown andando. Y sabiendo lo mucho que me gusta perder tiempo jugando a hacer mis herramientas, el hecho de que además era feriado, y algunas cositas más, caí en mi vicio de siempre: me puse a escribir mi propio conversor de markdown a slides html.
Hace un tiempo vi pasar esto por twitter, y me pareció una excelente excusa :)
Con lo que ya tenía, armar algo muy básico para probar fue cuestión de minutos. El mayor problema fue el esqueleto html para el slide. Ahí sí va un poquito de javascript para pasar de slide a slide. Y de html y js se muy poco. Pero luego tuve que empezar a aplicar parches en sundown. Armé un parche para definir spans con nombres de estilos arbitrarios, pero no encontré forma de que funcione dentro de un bloque de código (ningún estilo de markdown parece funcionar dentro del código). Y además, ¿cómo manejar las "animaciones" (las cosas que van apareciendo por partes)?
Esto cada vez requería más y más parches, así que corté por lo sano: dejé markdown y armé mi propio lenguaje de marcado. Mi lenguaje tiene solo 3 caracteres especiales: uno para introducir comandos, y dos para adornar partes con estilos arbitrarios. Tengo que admitir que parte de la simpleza del mecanismo la copié de tpp, una herramienta similar que parece genial (mientras no quieran agregar imágenes) pero que nunca usé (solo vi ejemplos en un video-demo en youtube).
300 lineas de código más tarde, el primer prototipo totalmente funcional estaba listo y el resultado me confirmaba que había sido una buena elección. Finalmente tengo una herramienta para tomar el contenido de un archivo de texto con este mecanismo de marcado súper simple y aún así bastante flexible. El estilo y la navegación quedan para una plantilla html+css+js que es totalmente independiente. Puedo cambiar plantilla y/o contenido sin que uno afecte al otro.
El contenido de una de las slides de la imagen anterior en mi nuevo formato.
Hay solo dos tipos de secuencias especiales: ##comando, y [[estilo:...]]
La interfaz es la linea de comandos, así que puedo tener un estilo para todas las presentaciones de una materia y, al cambiarlo, un comando simple en la terminal me actualiza todas mis clases automáticamente. Y como bonus, con la ayuda de un par de herramientas externas también puedo convertir el resultado a pdf.
Subí el proyecto a sourceforge para compartirlo, y armé una presentación a modo de introducción+ejemplo+manual+referencia all-in-one. El estilo actual sigue horrible, pero lo importante es que ahora es muy fácil de cambiar. No voy a mantener la herramienta más allá de lo que pueda necesitar agregarle para mis clases. Pero el código es simple y bastante prolijo, cualquiera puede mejorarlo. Y si alguien con más criterio que yo lo usa y se arma una mejor hoja de estilos, agradecería que la comparta.
Se ve muy útil, por favor incluir compilación para windows, e interface en castellano
ResponderEliminar"No voy a mantener la herramienta más allá de lo que pueda necesitar agregarle para mis clases." Eso quiere decir que el autor no quiere invertir tiempo en incluir nada mas y si no lo hizo para Windows o en castellano no lo va a hacer. Dice explícitamente que si alguien le interesa usarlo o mejorarlo está el código para que se lo bajen y hagan las mejoras pertinentes.
Eliminargracias Anonimo por tu respuesta, espero que la respuesta de Pablo no sea la misma, pues me puede servir en mis clases a mi tambien y a muchos mas, las clases en la mayoria de latinoamerica son en español, ademas usamos en casi toda el mundo windows y muy pocos linux, debe ser muy facil compilarlo en windows ...
ResponderEliminarLa herramienta se puede compilar en windows al primer intento, ya que no tiene dependencias para compilar. Sin embargo, solo va a funcionar el comando para generar los htmls, ya que los demás utilizan indirectamente algunas ordenes del shell u otras utilidades de gnu/linux que en windows serían diferentes. Por eso principalmente no subí un exe, porque para que ande todo le faltaría un poquito más de trabajo.
EliminarY el hecho de que la documentación o los argumentos de la linea de comandos estén en inglés no tiene nada que ver con el contenido de las presentaciones que genera, así que no veo que sea un problema.
Tomé el inglés para el código porque es por lejos lo más razonable, y para la documentación para no escribir todo dos veces y abarcar lo más posible. De todas formas, lo importante de esa doc son los ejemplos, y creo se entienden igual más allá del idioma.
Excelente! Ya me venía preguntando qué herramienta usabas para hacer presentaciones. No me sorprendió entonces cuando encontré en tu blog que la habías hecho vos mismo...
ResponderEliminarAtte: Un alumno que no tenia ganas de aprender LATEX.