Comment générer par programme une sortie de démarque dans les notebooks Jupyter?

94

Je souhaite rédiger un rapport pour les classes dans le notebook Jupyter. J'aimerais compter certaines choses, générer des résultats et les inclure dans le démarquage. Puis-je définir la sortie de la cellule à interpréter comme une démarque?
Je voudrais une telle commande: print '$\phi$'générer le symbole phi, tout comme dans markdown.
En d'autres termes, j'aimerais faire créer un modèle en démarque et insérer les valeurs générées par le programme écrit dans le cahier. Le recalcul du bloc-notes devrait générer de nouveaux résultats et une nouvelle démarque avec ces nouvelles valeurs insérées. Est-ce possible avec ce logiciel ou dois-je remplacer les valeurs par moi-même?

fulaphex
la source

Réponses:

137

Les fonctions souhaitées se trouvent dans le module 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
la source
1
Merci beaucoup, je suppose que cela devrait m'aider considérablement. Si je peux demander, existe-t-il un moyen de masquer la cellule avec du code? Je veux dire, lorsque je "compile" la cellule de démarquage, le "code" disparaît et seule la sortie de démarque compilée est visible. J'aimerais pouvoir répéter cela, mais avec display_markdownfonction.
fulaphex
2
Malheureusement, votre code ne fonctionne pas pour moi, il ne produit aucune sortie.
fulaphex
1
Maintenant, cela fonctionne, merci. Existe-t-il une commande pour masquer une cellule, afin que je puisse générer cette démarque et que cela se comporte comme une cellule de démarquage normale?
fulaphex
2
Le lien dans le commentaire précédent ne fonctionne plus, l'extension peut maintenant être trouvée à: github.com/ipython-contrib/jupyter_contrib_nbextensions/tree
...
1
Je reçois l'objet pas l'impression:<IPython.core.display.Markdown object>
loretoparisi
30

Vous demandez essentiellement deux choses différentes:

  1. Cellules Markdown produisant des résultats de code.

    J'aimerais compter certaines choses, générer des résultats et les inclure dans le démarquage. [...] Je voudrais avoir un modèle en démarque et insérer les valeurs générées par le programme dans le cahier

  2. Cellules de code générant une démarque

    Je voudrais une telle commande: print '$\phi$'générer le symbole phi, tout comme dans markdown.

Puisque 2. est déjà couvert par une autre réponse (essentiellement: utiliser Latex()ou Markdown()importé de IPython.display), je me concentrerai sur la première:


1. Modèle Markdown avec des variables insérées

Avec l'extension Jupyter Python Markdown, il est en fait possible de faire exactement ce que vous décrivez.

Les instructions d'installation peuvent être trouvées sur la page github de nbextensions. Assurez-vous d'activer l'extension Python Markdown à l' aide d'une commande jupyter ou du configurateur d'extension .

Avec l'extension, les variables sont accessibles via {{var-name}}. Un exemple d'un tel modèle de démarque pourrait ressembler à ceci:

Code Python dans les cellules Markdown

La variable a est {{a}}

Vous pouvez également intégrer LateX: {{b}} ici!

Même les images peuvent être intégrées: {{i}}

Naturellement , toutes les variables ou les images a, b, idoivent être définies dans le code précédent. Et bien sûr, vous pouvez également utiliser des expressions de style Markdown-Latex (comme $\phi$) sans la commande d'impression. Cette image provient du wiki de l'extension, démontrant la capacité.

exemple du wiki


De plus amples informations sur cette fonctionnalité en cours d'intégration dans ipython / jupyter sont discutées dans les trackers de problèmes pour ipython et jupyter .

Honeybear
la source
Est-ce disponible dans Jupyter Lab?
BND
Je n'utilise pas cela, donc je n'ai aucune expérience. Cependant, je ne trouve pas "Python Markdown" dans la liste des extensions jupyter-lab: github.com/topics/jupyterlab-extension?q=&unscoped_q= - donc: peut-être non?
Honeybear