Wie kann ich LaTeX-Code in einem IPython-Notebook anzeigen?
Wie kann ich LaTeX-Code in einem IPython-Notebook anzeigen?
Antworten:
Dies kam in einer Suche auf, die ich gerade durchführte, und fand eine bessere Lösung mit etwas mehr Suche. IPython-Notebooks haben jetzt eine %%latex
Magie, die den gesamten Zellen-Latex ohne den $$
Wrapper für jede Zeile macht.
Informationen zum Rich Display System finden Sie auf der Notebook-Tour
IPython Notebook verwendet MathJax , um LaTeX in HTML / Markdown zu rendern. Legen Sie einfach Ihre LaTeX-Mathematik hinein $$
.
$$c = \sqrt{a^2 + b^2}$$
Oder Sie können die LaTeX / Math-Ausgabe von Python gegen Ende der Notebook-Tour anzeigen :
from IPython.display import display, Math, Latex
display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
LaTeX
eingeben %%latex
.
Udacitys Blog hat den besten LaTeX-Primer, den ich gesehen habe: Er zeigt deutlich, wie man LaTeX-Befehle auf einfach zu lesende und leicht zu merkende Weise verwendet !! Sehr zu empfehlen .
Dieser Link enthält hervorragende Beispiele, die sowohl den Code als auch das gerenderte Ergebnis anzeigen!
Auf dieser Website können Sie schnell lernen, wie Sie LaTeX anhand eines Beispiels schreiben.
Und hier ist eine Kurzreferenz für LaTeX- Befehle / -Symbole.
Inline, einwickeln: $
The equation used depends on whether the the value of
$Vmax$ is R, G, or B.
blockieren, einwickeln: $$
$$H← 0 + \frac{30(G−B)}{Vmax−Vmin} , if Vmax = R$$
blockieren, einwickeln:\begin{equation}
und\end{equation}
\begin{equation}
H← 60 + \frac{30(B−R)}{Vmax−Vmin} , if Vmax = G
\end{equation}
blockieren, einwickeln:\begin{align}
und\end{align}
\begin{align}
H←120 + \frac{30(R−G)}{Vmax−Vmin} , if Vmax = B
\end{align}
LaTex-Zelle: Der %%latex
magische Befehl verwandelt die gesamte 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}
Mathematisches Objekt , das in einer rohen LaTeX-Zeichenfolge übergeben werden soll :
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 Trennzeichen selbst einfügen. Auf diese Weise können Sie andere LaTeX - Modi verwenden , wie zum Beispiel eqnarray
:
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}""")
(Entschuldigung, kein Beispiel hier, nur die Dokumente)
Rohzellen Rohzellen bieten einen Ort, an dem Sie die Ausgabe direkt schreiben können. Rohzellen werden vom Notebook nicht ausgewertet. Beim Durchlaufen
nbconvert
kommen Rohzellen unverändert im Zielformat an. Auf diese Weise können Sie beispielsweise vollständiges LaTeX in eine Rohzelle eingeben , die erst nach der Konvertierung von von LaTeX gerendert wirdnbconvert
.
Für Markdown-Zellen, wie aus Jupyter Notebook-Dokumenten zitiert :
In Markdown-Zellen können Sie Mathematik auch auf einfache Weise mit der Standard-LaTeX-Notation einschließen: $ ... $ für Inline-Mathematik und $$ ... $$ für angezeigte Mathematik . Wenn die Markdown-Zelle ausgeführt wird, werden die LaTeX-Teile in der HTML-Ausgabe automatisch als Gleichungen mit hochwertiger Typografie gerendert. Dies wird durch MathJax ermöglicht, das eine große Teilmenge der LaTeX-Funktionalität unterstützt
Standard-Mathematikumgebungen, die von LaTeX und AMS-LaTeX (dem Amsmath-Paket) definiert wurden, funktionieren ebenfalls, z. B. \ begin {Gleichung} ... \ end {Gleichung} und \ begin {align} ... \ end {align} . Neue LaTeX-Makros können mit Standardmethoden wie \ newcommand definiert werden, indem sie irgendwo zwischen mathematischen Trennzeichen in einer Markdown-Zelle platziert werden. Diese Definitionen sind dann während der restlichen IPython-Sitzung verfügbar.
Verwenden Sie $$, wenn Ihre Mathematik in einer einzelnen Zeile angezeigt werden soll, z.
$$a = b + c$$ (line break after the equation)
Wenn Sie nach der Berechnung keinen Zeilenumbruch benötigen, verwenden Sie ein einzelnes Dollarzeichen $, z.
$a = b + c$ (no line break after the equation)
Sie können eine Zelle als Markdown auswählen und dann Latexcode schreiben, der von mathjax interpretiert wird, wie einer der Antwortenden oben sagt.
Alternativ dazu wird dies im Abschnitt Latex des iPython-Notebook-Tutorials gut erklärt.
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 Infos finden Sie unter diesem Link
Ich habe PrettyPy entwickelt , das eine gute Möglichkeit bietet, Gleichungen zu drucken. Leider ist es nicht performant und muss getestet werden.
Beispiel:
Zugegeben, Sympy ist eine großartige Alternative, und obwohl PrettyPy die Auswertung von Ausdrücken nicht zulässt, ist keine Variableninitialisierung erforderlich.
Da ich auch nach Verwendung des Schlüsselworts %% latex oder des Limiters $ .. $ nicht alle Latexbefehle in Code verwenden konnte, installierte ich die nbextensions, über die ich die Latexbefehle in Markdown verwenden konnte. Befolgen Sie die Anweisungen hier: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md und starten Sie den Jupyter neu und dann localhost: 8888 / nbextensions und aktivieren Sie dann "Latex Environment for" Jupyter ", ich konnte viele Latex-Befehle ausführen. Beispiele finden Sie 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.
Die Antwort von minrk (der Vollständigkeit halber enthalten) ist gut, aber es gibt noch einen anderen Weg, den ich noch mehr mag.
Sie können auch eine ganze Zelle so rendern, wie Sie es als erste Zeile in eine Textzelle LaTeX
eingeben %%latex
. Dies ist nützlich, wenn Sie
Antwort von minrk :
IPython Notebook verwendet MathJax , um LaTeX in HTML / Markdown zu rendern. Legen Sie einfach Ihre LaTeX-Mathematik hinein
$$
.$$c = \sqrt{a^2 + b^2}$$
Oder Sie können die LaTeX / Math-Ausgabe von Python gegen Ende der Notebook-Tour anzeigen :
from IPython.display import display, Math, Latex display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
Wenn Ihr Hauptziel Mathematik ist, bietet SymPy einen hervorragenden Ansatz für funktionale Latexausdrücke, die großartig aussehen.
In diesem Artikel habe ich geschrieben, wie man LaTeX in Jupyter Notebook schreibt .
Sie müssen sie in Dollarzeichen ($) einschließen.
$P(A)=\frac{n(A)}{n(U)}$
$$P(A)=\frac{n(A)}{n(U)}$$
Verwenden Sie \limits
für \lim
, \sum
und \int
hinzufügen Grenzen nach oben und unten in jedem Zeichen.
Verwenden Sie einen Backslash, um LaTeX-Sonderwörter wie mathematische Symbole, lateinische Wörter, Text usw. zu umgehen.
Probier diese.
$$\overline{x}=\frac{\sum \limits _{i=1} ^k f_i x_i}{n} \text{, where } n=\sum \limits _{i=1} ^k f_i $$
$$
\begin{align}
\text{Probability density function:}\\
\begin{cases}
\frac{1}{b-a}&\text{for $x\in[a,b]$}\\
0&\text{otherwise}\\
\end{cases}
\\
\text{Cumulative distribution function:}\\
\begin{cases}
0&\text{for $x<a$}\\
\frac{x-a}{b-a}&\text{for $x\in[a,b)$}\\
1&\text{for $x\ge b$}\\
\end{cases}
\end{align}
$$
Der obige Code erstellt dies.
Wenn Sie wissen möchten, wie Sie Gleichungen nummerieren und Gleichungen ausrichten, lesen Sie diesen Artikel für Details .
Die Verwendung der LaTeX-Syntax direkt in einer Markdown-Zelle funktioniert bei mir. Ich benutze Jypiter 4.4.0.
Ich muss %%latex
darauf bestehen, dass ich keinen magischen Befehl verwenden muss, sondern nur 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}
Rendern zu:
Ich bin eines Tages mit Colab auf dieses Problem gestoßen. Und ich finde, der schmerzloseste Weg ist, 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 folgendermaßen aus:
Ich benutze Jupyter Notebooks. Ich musste schreiben
%%latex
$sin(x)/x$
um eine LaTex-Schriftart zu erhalten.