Como gerar programaticamente a saída de markdown em notebooks Jupyter?

94

Quero escrever um relatório para as aulas no caderno Jupyter. Eu gostaria de contar algumas coisas, gerar alguns resultados e incluí-los na marcação. Posso definir a saída da célula para ser interpretada como redução?
Eu gostaria desse comando: print '$\phi$'para gerar o símbolo phi, assim como no markdown.
Ou seja, gostaria de ter um template feito no markdown e inserir os valores gerados pelo programa escritos no notebook. Recalcular o caderno deve gerar novos resultados e nova remarcação com os novos valores inseridos. Isso é possível com este software ou preciso substituir os valores sozinho?

fulafex
fonte

Respostas:

137

As funções que você deseja estão no módulo IPython.display .

from IPython.display import display, Markdown, Latex
display(Markdown('*some markdown* $\phi$'))
# If you particularly want to display maths, this is more direct:
display(Latex('\phi'))
Thomas K
fonte
1
Muito obrigado, acho que isso deve me ajudar significativamente. Se posso perguntar, há uma maneira de ocultar a célula com código? Quero dizer, quando eu "compilo" a célula de redução de preço, o "código" desaparece e apenas a saída de redução de preço compilada fica visível. Eu gostaria de poder repetir isso, mas com display_markdownfunção.
fulaphex
2
Infelizmente, seu código não funciona para mim, ele não produz nenhuma saída.
fulaphex
1
Agora realmente funciona, obrigado. Existe um comando para ocultar uma célula, para que eu possa gerar esse markdown e isso se comportar, como uma célula de markdown normal?
fulaphex
2
O link no comentário anterior não funciona mais, a extensão agora pode ser encontrada em: github.com/ipython-contrib/jupyter_contrib_nbextensions/tree/…
BioGeek
1
Eu recebo o objeto não a impressão:<IPython.core.display.Markdown object>
loretoparisi
30

Você está pedindo basicamente duas coisas diferentes:

  1. Células de markdown que geram resultados de código.

    Eu gostaria de contar algumas coisas, gerar alguns resultados e incluí-los na marcação. [...] gostaria de ter um template no markdown e inserir os valores gerados pelo programa no notebook

  2. Células de código emitindo markdown

    Eu gostaria desse comando: print '$\phi$'para gerar o símbolo phi, assim como no markdown.

Como 2. já é abordado por outra resposta (basicamente: usar Latex()ou Markdown()importado de IPython.display), vou me concentrar na primeira:


1. Modelo de Markdown com variáveis ​​inseridas

Com a extensão Python Markdown do Jupyter , na verdade, é possível fazer exatamente o que você descreve.

As instruções de instalação podem ser encontradas na página github de nbextensions. Certifique-se de habilitar a extensão markdown do python usando um comando jupyter ou o configurador de extensão .

Com a extensão, as variáveis ​​são acessadas via {{var-name}}. Um exemplo para tal modelo de redução poderia ser assim:

Código Python em células Markdown

A variável a é {{a}}

Você também pode incorporar LateX: {{b}} aqui!

Até as imagens podem ser incorporadas: {{i}}

Naturalmente todas as variáveis ou imagens a, b, ideve ser definido no código anterior. E, claro, você também pode usar expressões no estilo Markdown-Latex (como $\phi$) sem o comando de impressão. Esta imagem é do wiki da extensão, demonstrando a capacidade.

exemplo do wiki


Mais informações sobre essa funcionalidade sendo integrada ao ipython / jupyter são discutidas nos rastreadores de problemas para ipython e jupyter .

Honeybear
fonte
Isso está disponível no Jupyter Lab?
BND
Eu não uso isso, portanto, não tenho experiência. No entanto, não consigo encontrar "Python Markdown" na lista de extensões jupyter-lab: github.com/topics/jupyterlab-extension?q=&unscoped_q= - portanto: talvez não?
Honeybear