Wie kann programmgesteuert eine Markdown-Ausgabe in Jupyter-Notebooks generiert werden?


92

Ich möchte einen Bericht für Klassen in Jupyter Notebook schreiben. Ich möchte einige Dinge zählen, einige Ergebnisse generieren und sie in den Abschlag einbeziehen. Kann ich die Ausgabe der Zelle so einstellen, dass sie als Abschriften interpretiert wird?
Ich möchte einen solchen Befehl: print '$\phi$'Phi-Symbol erzeugen, genau wie beim Abschriften.
Mit anderen Worten, ich möchte eine Vorlage in Markdown erstellen lassen und die vom Programm generierten Werte in das Notizbuch einfügen. Eine Neuberechnung des Notizbuchs sollte neue Ergebnisse und einen neuen Abschlag mit diesen neuen Werten erzeugen. Ist das mit dieser Software möglich oder muss ich die Werte selbst ersetzen?

Antworten:


132

Die gewünschten Funktionen befinden sich im Modul 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'))

1
Vielen Dank, ich denke, das sollte mir erheblich helfen. Wenn ich fragen darf, gibt es eine Möglichkeit, die Zelle mit Code auszublenden? Ich meine, wenn ich die Markdown-Zelle "kompiliere", verschwindet der "Code" und nur die kompilierte Markdown-Ausgabe ist sichtbar. Ich würde das gerne wiederholen können, aber mit display_markdownFunktion.
Fulaphex

2
Leider funktioniert Ihr Code bei mir nicht, er erzeugt keine Ausgabe.
Fulaphex

1
Jetzt funktioniert es tatsächlich, danke. Gibt es einen Befehl zum Ausblenden einer Zelle, damit ich diesen Markdown generieren kann und dieser sich wie eine normale Markdown-Zelle verhält?
Fulaphex

2
Der Link im vorherigen Kommentar funktioniert nicht mehr. Die Erweiterung finden Sie jetzt unter: github.com/ipython-contrib/jupyter_contrib_nbextensions/tree/…
BioGeek

1
Ich bekomme das Objekt nicht den Druck:<IPython.core.display.Markdown object>
loretoparisi

30

Sie fragen grundsätzlich nach zwei verschiedenen Dingen:

  1. Markdown-Zellen, die Codeergebnisse ausgeben.

    Ich möchte einige Dinge zählen, einige Ergebnisse generieren und sie in den Abschlag einbeziehen. [...] Ich möchte eine Vorlage in Markdown haben und vom Programm generierte Werte in das Notizbuch einfügen

  2. Codezellen, die Markdown ausgeben

    Ich möchte einen solchen Befehl: print '$\phi$'Phi-Symbol erzeugen, genau wie beim Abschriften.

Da 2. bereits durch eine andere Antwort abgedeckt ist (im Grunde: verwenden Latex()oder Markdown()importieren von IPython.display), werde ich mich auf die erste konzentrieren:


1. Markdown-Vorlage mit eingefügten Variablen

Mit der Jupyter-Erweiterung Python Markdown ist es tatsächlich möglich, genau das zu tun, was Sie beschreiben.

Installationsanweisungen finden Sie auf der Github-Seite von nbextensions. Stellen Sie sicher, dass Sie die Python-Markdown-Erweiterung mit einem Jupyter-Befehl oder dem Erweiterungskonfigurator aktivieren .

Mit der Erweiterung wird über auf Variablen zugegriffen {{var-name}}. Ein Beispiel für eine solche Abschriftenvorlage könnte folgendermaßen aussehen:

Python-Code in Markdown-Zellen

Die Variable a ist {{a}}

Sie können hier auch LateX: {{b}} einbetten!

Sogar Bilder können eingebettet werden: {{i}}

Selbstverständlich sind alle Variablen oder Bilder a, b, isollten in vorherigen Code eingestellt werden. Natürlich können Sie auch Ausdrücke im Markdown-Latex-Stil (wie $\phi$) ohne den Befehl print verwenden. Dieses Bild stammt aus dem Wiki der Erweiterung und demonstriert die Fähigkeit.

Beispiel aus dem Wiki


Weitere Informationen zu dieser in ipython / jupyter integrierten Funktionalität finden Sie in den Issue-Trackern für ipython und jupyter .


Ist dies in Jupyter Lab verfügbar?
BND

Ich benutze das nicht, habe also keine Erfahrung. Ich kann "Python Markdown" jedoch nicht in der Liste der Jupyter-Lab-Erweiterungen finden: github.com/topics/jupyterlab-extension?q=&unscoped_q= - daher: vielleicht nein?
Honeybear
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.