Faz mais de um ano que andei em busca de uma boa forma de produzir documentos e, não tendo encontrado uma solução perfeita, resolvi reduzir o âmbito do tipo de documentos em causa e concentrar-me na produção dos documentos que tipicamente aparecem durante o processo de desenho e desenvolvimento de software.

A ideia foi simples; partir das funcionalidades de wiki do trac e adicionar a capacidade de exportar cada página como docbook. A partir de uma exportação para docbook, há uma série de opções que se abrem em termos de conversões para outros formatos.

Para chegar aí tinha duas opções, ou converter directamente do formato wikitext do trac, ou partir do xhtml (strict!) que o trac gera a partir do wikitext. A primeira opção consegue-se implementar com umas quantas expressões regulares, mas parece-me talvez mais difícil conseguir prever os casos todos (sobretudo se se tiverem em conta os outros formatos que se podem encontrar misturados com wikitext, nos quais não queria mesmo ter de pensar). A segunda opção pede claramente a utilização de uma folha de estilo XSLT (apesar de também existirem outro tipo de soluções). Convenientemente, encontrei algumas folhas de estilo que fazem já esta conversão, de xhtml para docbook. As mais promissoras foram:

Esta última é a mais completa, e com a qual as minhas experiências funcionaram melhor.

Agora basta juntar água (ou por outras palavras, usar os bindings do python para libxml e libxsl) e temos um plugin para o trac ;) A bem dizer, já ando a usar uma versão alpha deste plugin há uns meses. Na altura criei um espaço no trac-hacks para alojar o projecto. Nos próximos dias espero portar o código para o trac 0.11.1 e torná-lo usável por terceiros. Os interessados fiquem por perto ;)