Pandoc
Autor: Rodrigo Jardim da Fonseca | Publicado: 2013-04-20T12:00:00-03:00


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_ --&gt; itálico e __negrito__ --&gt; 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.&nbsp;
Você pode escrever um documento em sua linguagem favorita: [markdown][2],
[reStructuredText][3], [textile][4], [HTML][5], [DocBook][6], [LaTeX][7], ou&nbsp;
[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 &gt; 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.