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:
:resultsPara informar o tipo de resultado a ser incluĂdo. Para imagens utilize
filecomo valor.:filePara informar o arquivo a ser utilizado para salvar a saĂda.
:exportsInforma o que deve ser exportado quando convertendo o arquivo do Org Mode. As opçÔes são
code,results,bothounone.:sessionCria 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: