Depois de liberar bastante espaço no meu EeePC com o localepurge consegui, finalmente, instalar o TeXLive no meu netbook.
Como eu não sou especialista em TeX e Python é minha linguagem preferida, comecei a procurar como poderia embutir código Python em meus documentos LaTeX, dessa forma eu teria como gerar código automático em LaTeX.
Conversando com Alex Tercete, conseguimos encontrar uma página com o pacote python para LaTeX que faz exatamente o que queríamos: basta abrir um ambiente chamado python e sair programando :-) todo o output do código Python é interpretado pelo LaTeX - dessa forma podemos gerar tabelas, gráficos etc.
Vamos parar de encher o saco e ir direto ao código: para começar, baixe o pacote python.sty, esse pacote está sob licença GPLv2 e foi criado por Martin R. Ehmsen (veja o site oficial). O que esse arquivo faz, basicamente, é: joga tudo que está entre \begin{python} e \end{python} para o arquivo seu_arquivo_latex.py, executa o comando python seu_arquivo_latex.py, jogando a saída para o arquivo seu_arquivo_latex.py.out e, por fim, adiciona o conteúdo desse ao código LaTeX exatamente onde estava o \begin{python} ... \end{python}.
Depois de baixá-lo, basta colocá-lo no diretório de seu ambiente LaTeX e então incluí-lo com o comando \usepackage{python}. Agora o céu é o limite! ;-)
Apesar de simples, essa solução é bastante flexível e poderosa: podemos gerar gráficos em tempo real em Python (com bibliotecas como a Matplotlib) e gerar código LaTeX para incluí-los em nossos arquivos, gerar tabelas extensas através de loops, coletar dados atualizados de arquivos, bases de dados, sites etc. para serem incluídos em seu relatório dentre outras infinitas possibilidades.
Abaixo seguem alguns exemplos:
-
Um simples "Oi, LaTeX+Python!":
Mostrar resultado
-
Mostrar código
-
Baixar código.
1. 2. 3. 4. 5. 6. 7. 8. 9. | \documentclass{article} \usepackage[brazil]{babel} \usepackage[utf8]{inputenc} \usepackage{python} \begin{document} \begin{python} print 'Oi, \\LaTeX + Python!' \end{python} \end{document}
|
-
Utilizando a matplotlib:
Mostrar resultado
-
Mostrar código
-
Baixar código.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. | \documentclass{article} \usepackage[brazil]{babel} \usepackage[utf8]{inputenc} \usepackage{python} %Python rules! \usepackage{graphicx} %Usado para a imagem \begin{document} \begin{python} from matplotlib.pyplot import figure from matplotlib.pylab import poly_below from numpy import arange from random import randint
caracteres = 'abcdefghijklmnopqrstuvwxyz0123456789' nome_como_lista = [] for caractere in range(randint(0, 9)): nome_como_lista.append(caracteres[randint(0, len(caracteres) - 1)]) nome_figura = '%s.png' % (''.join(nome_como_lista))
fig = figure() x = arange(0, 1, 0.001) y = 4.0 / (x**2 + 1.0) grafico = fig.add_subplot(111) grafico.plot(x, y) grafico.set_axis_on() grafico.axis([0, 1, 0, 4])
fig.savefig(nome_figura)
print '''\\begin{figure}[ht] \\includegraphics[width=300px]{%s} \\caption{Figura gerada pela matplotlib} \\end{figure} ''' % nome_figura \end{python} \end{document}
|
Atenção: por padrão o LaTeX não permite que você execute o comando \write e para que o pacote python funcione temos duas opções:
- Configurar a opção shell_escape para o valor t no arquivo /usr/share/texmf/web2c/texmf.cnf (necessita de acesso como root).
- Passar a opção --shell-escape toda vez que for gerar o PDF, como em: pdflatex --shell-escape meu_arquivo_latex.tex
Achou útil? Comente! :-)
--
Álvaro Justen
Peta5 - Telecomunicações e Software Livre