sábado, 20 de abril de 2013

Pandoc

Pandoc é um conversor universal de documentos disponível em Linux, Windows, Mac, etc. Você pode escrever um documento em sua linguagem favorita: markdown, reStructuredText, textile, HTML, DocBook, LaTeX, ou MediaWiki markup e converter automaticamente para quase qualquer formato que quiser.

Atualmente estou usando para escrever meus posts. Eu escrevi esse post em markdown e o converti para HTML usando o Pandoc. Copiei o colei o fonte no blogger, depois fiz uns pequenos ajustes.

Por que eu faço isso? Bem, primeiro que nem sempre consigo tempo para ficar escrevendo direto no blogger. Escrever HTML diretamente é chato, trabalhoso e te deixa muito suscetível a erros. Escrever somente o texto do post, gera um trabalho grande depois de inserir os links e formatações necessárias.


Então, escrevo em markdown que é uma linguagem de marcação que me permite escrever um texto com diretivas de formatação que são simples, bonitas de ler e fáceis de entender por serem humanos mas que consigo converter em código HTML com um comando.

Além de coisas simples como _itálico_ --> itálico e __negrito__ --> negrito existe um tratamento especial para links.

Por exemplo, vamos tomar o primeiro parágrafo em markdown:

[Pandoc][1] é um conversor universal de documentos disponível em Linux, Windows, Mac, etc. 
Você pode escrever um documento em sua linguagem favorita: [markdown][2],
[reStructuredText][3], [textile][4], [HTML][5], [DocBook][6], [LaTeX][7], ou 
[MediaWiki markup][8] e converter automaticamente para quase qualquer formato que quiser.

No final do arquivo eu tenho:

[1]: http://johnmacfarlane.net/pandoc/
[2]: http://daringfireball.net/projects/markdown/

O pandoc, ao converter para HTML constrói os links corretamente buscando as referências no final do arquivo. Existem muitas outras formas de criar links mas essa e a minha favorita.

Outro recurso que uso bastante do pandoc é a geração de PDF. Guardo os arquivos como markdown, pois são mais fáceis de ler e editar, mas quando preciso enviar a alguém converto para PDF. E como o pandoc aplica a formatação indicada no markdown, sai um PDF bonito de se apresentar.
Para converter um documento usando pandoc basta fazer:

$ pandoc arquivo_original.md -o arquivo_convertido.pdf

O pandoc cuida de adivinhar os formatos e converter tudo para você.

Para funcionar conversão para pdf o pandoc depende do latex.
Por fim, um recurso muito legal é o de templates personalizados. Com ele, você consegue configurar a formatação do seu documento convertido. Primeiro você obtém uma cópia do tempalte padrão:

$ pandoc -D html > template.html

Então você edita o template ao seu gosto. As palavras cercadas por $ são variáveis. O pandoc substituirá essas variáveis para você. Você também verá uns if da vida que verificam se uma variável existe antes de colocar o conteúdo dela em alguma lugar. E também há loops através do for para variáveis com mais de um valor.

Algumas variáveis são criadas pelo próprio pandoc ao analisar o seu documento, como a variável $body$, outras podem ser configuradas via linha de comando, por exemplo, agora vamos colocar tudo junto:

$ pandoc arquivo_original.md -o arquivo_convertido.html --template template.html -Vauthor="Fulano Silva"

Nesse exemplo estamos definindo um template a ser usado e estamos passando a variável $author$.

Outra opção legal é a --toc (table of tontents/tabela de conteúdos) que lista no começo do documento um link para todos os títulos, criando um índice.

Atualmente estou fazendo alguns experimentos para gerar páginas HTML simples a partir de algumas notas que tomo para uso próprio. Como configurar um sistema, usar outro, trechos de shell scripting e etc. Eu anoto tudo em markdown para consumo próprio, mas tenho um script automaticamente gerando essas notas em HTML e compartilhando como páginas de internet a partir do meu computador.




Nenhum comentário: