Org Mode e Python

Published on February 24, 2015.

Org Mode Ă© um modo do Emacs para gerenciar notas e manter lista de tarefas. O Org Mode possui uma “extensĂŁo”, chamada Org Babel, que possibilita o uso de vĂĄrias linguagens de programação de dentro do Org Mode. Nesse post vamos ver como utilizar Python dentro do Org Mode.

Nota

Antes de ler esse post vocĂȘ talvez queira ler esse outro post <../../../2014/12/17/orgmode_lt>.

Configuração

Adicione em ~/.emacs :

(org-babel-do-load-languages
 'org-babel-load-languages
 '((python . t)))

OlĂĄ mundo

Download

Baixe o arquivo dessa sessĂŁo: sample1.org.

Blocos de cĂłdigo sĂŁo delimitador por :

#+BEGIN_SRC python

e :

#+END_SRC

Nota

Infelizmente nĂŁo existe um atalho para adicionar os delimitadores.

Para editar o cĂłdigo mais facilmente vocĂȘ pode utilizar C-c '.

Escrevemos o “OlĂĄ mundo” da seguinte forma:

$+BEGIN_SRC python
return "Ola mundo"
#+END_SRC

Para executar o cĂłdigo utilizamos C-c C-c. Ao executar o cĂłdigo irĂĄ aparecer :

#+RESULTS:
: Ola mundo

Nota

Para executar todo o buffer utilize C-c C-v b.

OpçÔes

Cada bloco de código aceita um conjunto de opçÔes. Para adicionar uma nova opção utilize C-c C-v j.

Nota

Utilize TAB para visualizar as opçÔes disponíveis.

Algumas opçÔes importantes são:

:results

Para informar o tipo de resultado a ser incluĂ­do. Para imagens utilize file como valor.

:file

Para informar o arquivo a ser utilizado para salvar a saĂ­da.

:exports

Informa o que deve ser exportado quando convertendo o arquivo do Org Mode. As opçÔes são code, results, both ou none.

:session

Cria uma sessĂŁo com o nome utilizado.

GrĂĄficos

Download

Baixe o arquivo dessa sessĂŁo: sample2.org.

Para gråficos é preciso utilizar a opção :results. :

#+BEGIN_SRC python :results file
import sympy
x = sympy.S('x')
sympy.plot(x).save('plot.png')
return 'plot.png'
#+END_SRC

#+RESULTS:
[[file:plot.png]]

Nota

É possível mostrar as figuras no Emacs utilizando M-x org-display-inline-images.

{width=“80%”}

SessĂŁo

Download

Baixe o arquivo dessa sessĂŁo: sample3.org.

Se vocĂȘ precisar do resultado de um bloco em outro, deve-se utilizar a opção :session. :

#+BEGIN_SRC python :session main
import sympy
x = sympy.S('x')
eq =  x**2 + 5 * x + 4
eq
#+END_SRC

#+RESULTS:
: x**2 + 5*x + 4

#+BEGIN_SRC python :session main
sympy.solve(eq)
#+END_SRC

#+RESULTS:
| -4 | -1 |

ReferĂȘncias

Tags: