webentwicklung-frage-antwort-db.com.de

Wie schreibe ich LaTeX in IPython Notebook?

Wie kann ich LaTeX-Code in einem IPython-Notizbuch anzeigen?

264
KostasA

Dies ergab sich aus einer Suche, die ich gerade durchführte, und fand eine bessere Lösung mit etwas mehr Suchvorgängen. IPython-Notizbücher haben jetzt eine %%latex -Magie, die den gesamten Zell-Latex ohne den $$ -Hüllkörper für jede Zeile macht.

Siehe Notebook-Tour für Rich Display System

127
hochopeper

IPython Notebook verwendet MathJax , um LaTeX in HTML/Markdown zu rendern. Geben Sie einfach Ihre LaTeX-Mathematik in $$ ein.

$$c = \sqrt{a^2 + b^2}$$

sqrt

Oder Sie können die LaTeX/Math-Ausgabe von Python anzeigen, wie am Ende der Notebook-Tour :

from IPython.display import display, Math, Latex
display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))

integral

263
minrk

LaTeX-Referenzen:

Udacitys Blog hat den besten LaTeX Primer Ich habe gesehen: Es zeigt deutlich, wie man LaTeX-Befehle auf einfach zu lesende und leicht zu merkende Weise verwendet !! Sehr zu empfehlen .

This Link has Excellent Examples zeigt sowohl den Code als auch das gerenderte Ergebnis!
Auf dieser Site können Sie schnell lernen, wie man LaTeX anhand eines Beispiels schreibt.

Und hier ist eine schnelle Referenz für LaTeX Befehle/Symbole.


Zusammenfassend: Verschiedene Möglichkeiten, LaTeX in Jupyter/IPython anzuzeigen:

- Beispiele für Markdown-Zellen:

Inline, umbrechen: _$_

_The equation used depends on whether the the value of  
$V​max​​$ is R, G, or B.  
_

blockieren, umbrechen: _$$_

_$$H←  ​​​​​0 ​+​ \frac{​​30(G−B)​​}{Vmax−Vmin}  ​​, if V​max​​ = R$$
_

blockieren, umbrechen: _\begin{equation}_ und _\end{equation}_

_\begin{equation}
H← ​​​60 ​+​ \frac{​​30(B−R)​​}{Vmax−Vmin}  ​​, if V​max​​ = G
\end{equation}
_

blockieren, umbrechen: _\begin{align}_ und _\end{align}_

_\begin{align}
H←120 ​+​ \frac{​​30(R−G)​​}{Vmax−Vmin}  ​​, if V​max​​ = B
\end{align}
_

- Beispiele für Code-Zellen:

LaTex Cell: %%latex Zauberbefehl schaltet den ganze Zelle in eine LaTeX-Zelle

_%%latex
\begin{align}
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0
\end{align}
_

Math-Objekt zum Übergeben einer unformatierten LaTeX-Zeichenfolge :

_from IPython.display import Math
Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
_

Latexklasse . Hinweis: Sie müssen die Begrenzer selbst eingeben. Auf diese Weise können Sie andere LaTeX-Modi wie eqnarray verwenden:

_from IPython.display import Latex
Latex(r"""\begin{eqnarray}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0 
\end{eqnarray}""")
_

- Dokumente für Rohzellen:

(Entschuldigung, hier kein Beispiel, nur die Dokumente)

Rohe Zellen Rohe Zellen bieten einen Ort, an dem Sie die Ausgabe direkt schreiben können. Rohe Zellen werden vom Notebook nicht ausgewertet. Beim Durchlaufen von nbconvert kommen Rohzellen im Zielformat unverändert an. Auf diese Weise können Sie beispielsweise volles LaTeX in eine unformatierte Zelle eingeben, die erst nach der Konvertierung durch nbconvert von LaTeX gerendert wird.

Zusätzliche Dokumentation:

Für Markdown-Zellen, wie in Jupyter Notebook docs angegeben:

In Markdown-Zellen können Sie auch Mathematik auf einfache Weise mit der Standard-LaTeX-Notation einbinden: $ ... $ für Inline-Mathematik und $$ ... $$ für angezeigte Mathematik . Wenn die Markdown-Zelle ausgeführt wird, werden die LaTeX-Teile automatisch in der HTML-Ausgabe als Gleichungen mit hochwertiger Typografie gerendert. Möglich macht dies MathJax, das einen großen Teil der LaTeX-Funktionalität unterstützt

Mit LaTeX und AMS-LaTeX (dem Amsmath-Paket) definierte Standard-Mathematikumgebungen funktionieren auch wie \begin {equation} ...\end {equation} und \begin {align} ...\end {align} . Neue LaTeX-Makros können mithilfe von Standardmethoden wie\newcommand definiert werden, indem sie an einer beliebigen Stelle zwischen mathematischen Begrenzungszeichen in einer Markdown-Zelle platziert werden. Diese Definitionen sind dann für den Rest der IPython-Sitzung verfügbar.

62
SherylHohman

Verwenden Sie $$, wenn Ihre Mathematik in einer einzelnen Zeile angezeigt werden soll, z.

$$a = b + c$$ (line break after the equation)

Wenn Sie nach dem Rechnen keinen Zeilenumbruch benötigen, verwenden Sie das Dollarzeichen $, z.

$a = b + c$   (no line break after the equation)
31
linbianxiaocao

Sie können eine Zelle als Abschrift auswählen und dann Latex-Code schreiben, der von mathjax interpretiert wird, wie einer der oben genannten Antwortenden sagt.

Alternativ wird dies im Abschnitt Latex des iPython-Notizbuch-Tutorials ausführlich erläutert.

Sie können entweder:

from IPython.display import Latex
Latex(r"""\begin{eqnarray}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0 
\end{eqnarray}""")

oder mach das:

%%latex
\begin{align}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0
\end{align}

Weitere Informationen finden Sie in diesem Link

21
joeP

Ich habe prettyPy entwickelt, das eine gute Möglichkeit zum Drucken von Gleichungen bietet. Leider ist es nicht performant und muss getestet werden.

Beispiel:

enter image description here

Zugegeben, sympy ist eine großartige Alternative, und obwohl prettyPy die Auswertung von Ausdrücken nicht zulässt, ist keine Variableninitialisierung erforderlich.

10
Charles

Da ich auch nach Verwendung des Schlüsselworts %% latex oder des Limiters $ .. $ nicht alle Latexbefehle in Code verwenden konnte, installierte ich die nbextensions, mit denen ich die Latexbefehle in Markdown verwenden konnte. Nachdem Sie die Anweisungen hier befolgt haben: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md und dann den Jupyter und dann localhost neu gestartet haben: 8888/nbextensions Wenn ich dann "Latex Environment for Jupyter" aktiviere, kann ich viele Latex-Befehle ausführen. Beispiele sind hier: https://rawgit.com/jfbercher/latex_envs/master/doc/latex_env_doc.html

\section{First section}
\textbf{Hello}
$
\begin{equation} 
c = \sqrt{a^2 + b^2}
\end{equation}
$
\begin{itemize}
\item First item
\item Second item
\end{itemize}
\textbf{World}

Wie Sie sehen, kann ich das Usepackage immer noch nicht verwenden. Aber vielleicht wird es in Zukunft verbessert.

enter image description here

8
infoclogged

Die Antwort von minrk (der Vollständigkeit halber eingeschlossen) ist gut, aber es gibt noch einen anderen Weg, den ich noch mehr mag.

Sie können eine gesamte Zelle auch als LaTeX rendern, indem Sie %%latex als erste Zeile in eine Textzelle eingeben. Dies ist nützlich, wenn Sie

  • wollen mehr Kontrolle,
  • wollen mehr als nur eine mathematische Umgebung,
  • oder wenn Sie eine Menge Mathe in eine Zelle schreiben wollen.

Antwort von minrk :


IPython Notebook verwendet MathJax , um LaTeX in HTML/Markdown zu rendern. Geben Sie einfach Ihre LaTeX-Mathematik in $$ ein.

$$c = \sqrt{a^2 + b^2}$$

sqrt

Oder Sie können die LaTeX/Math-Ausgabe von Python anzeigen, wie am Ende der Notebook-Tour :

from IPython.display import display, Math, Latex
display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))

integral

5
Toke Faurby

Wenn Ihr Hauptziel Mathe ist, bietet SymPy ein ausgezeichneter Ansatz für funktionale Latex-Ausdrücke, die großartig aussehen.

3
Eron Lloyd

Die Verwendung der LaTeX-Syntax direkt in einer Markdown-Zelle funktioniert bei mir. Ich benutze Jypiter 4.4.0.

Ich muss den magischen Befehl %%latex nicht verwenden, ich bestehe darauf, einfach eine Markdown-Zelle:

\begin{align}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0
\end{align}

Rendert zu:

enter image description here

2

Ich bin eines Tages mit Colab auf dieses Problem gestoßen. Am schmerzlosesten ist es, diesen Code vor dem Drucken auszuführen. Dann funktioniert alles wie Charme.

from IPython.display import Math, HTML

def load_mathjax_in_cell_output():
  display(HTML("<script src='https://www.gstatic.com/external_hosted/"
               "mathjax/latest/MathJax.js?config=default'></script>"))
get_ipython().events.register('pre_run_cell', load_mathjax_in_cell_output)
import sympy as sp
sp.init_printing()

Das Ergebnis sieht so aus:

enter image description here

1
Ray

Ich benutze Jupyter Notebooks. Ich musste schreiben

%%latex
$sin(x)/x$

um eine LaTex-Schriftart zu erhalten.

1
user1402208