Jak mogę wyświetlić kod LaTeX w Notatniku IPython?
Jak mogę wyświetlić kod LaTeX w Notatniku IPython?
Odpowiedzi:
To przyszło podczas wyszukiwania, które właśnie przeprowadzałem, znalazłem lepsze rozwiązanie z kilkoma kolejnymi wyszukiwaniami, notebooki IPython mają teraz %%latex
magię, która sprawia, że cała komórka Lateks nie ma $$
opakowania dla każdej linii.
Zapoznaj się z przewodnikiem po notebooku, aby zapoznać się z bogatym systemem wyświetlania
Notatnik IPython używa MathJax do renderowania LaTeX wewnątrz html / markdown. Po prostu włóż matematykę LaTeX do środka $$
.
$$c = \sqrt{a^2 + b^2}$$
Lub możesz wyświetlić dane wyjściowe LaTeX / Math z Pythona, jak widać pod koniec przewodnika po notebookach :
from IPython.display import display, Math, Latex
display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
LaTeX
, wpisując %%latex
jako pierwszy wiersz w komórce tekstowej.
Blog Udacity ma najlepszy LaTeX Primer , jaki widziałem: wyraźnie pokazuje, jak używać poleceń LaTeX w łatwy do odczytania i łatwy do zapamiętania sposób !! Gorąco polecam .
Ten link zawiera doskonałe przykłady pokazujące zarówno kod, jak i renderowany wynik!
Możesz użyć tej strony, aby szybko nauczyć się pisać LaTeX przez przykład.
A oto krótkie omówienie poleceń / symboli LaTeX .
inline, zawiń: $
The equation used depends on whether the the value of
$Vmax$ is R, G, or B.
blok, zawiń: $$
$$H← 0 + \frac{30(G−B)}{Vmax−Vmin} , if Vmax = R$$
blok, zawiń:\begin{equation}
i\end{equation}
\begin{equation}
H← 60 + \frac{30(B−R)}{Vmax−Vmin} , if Vmax = G
\end{equation}
blok, zawiń:\begin{align}
i\end{align}
\begin{align}
H←120 + \frac{30(R−G)}{Vmax−Vmin} , if Vmax = B
\end{align}
Komórka LaTex: %%latex
magiczne polecenie zamienia całą komórkę w komórkę LaTeX
%%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}
Obiekt matematyczny do przekazania w nieprzetworzonym ciągu LaTeX :
from IPython.display import Math
Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
Klasa lateksowa . Uwaga: musisz samodzielnie wprowadzić ograniczniki. Umożliwia to korzystanie z innych trybów LaTeX, takich jak 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}""")
(przepraszam, nie ma tutaj przykładu, tylko dokumenty)
Surowe komórki Surowe komórki zapewniają miejsce, w którym można bezpośrednio pisać dane wyjściowe. Surowe komórki nie są oceniane przez notatnik. Po przejściu
nbconvert
surowe komórki przybywają w niezmodyfikowanym formacie docelowym. Na przykład pozwala to wpisać pełny LaTeX w surową komórkę , która będzie renderowana przez LaTeX dopiero po konwersji przeznbconvert
.
W przypadku komórek Markdown cytowanych w dokumentach Jupyter Notebook :
W komórkach Markdown można również w prosty sposób włączyć matematykę, używając standardowej notacji LaTeX: $ ... $ dla matematyki wbudowanej i $$ ... $$ dla matematyki wyświetlanej . Gdy komórka Markdown jest wykonywana, części LaTeX są automatycznie renderowane w danych wyjściowych HTML jako równania z typografią wysokiej jakości. Jest to możliwe dzięki MathJax, który obsługuje duży podzbiór funkcjonalności LaTeX
Standardowe środowiska matematyczne zdefiniowane przez LaTeX i AMS-LaTeX (pakiet amsmath) również działają, takie jak \ begin {equation} ... \ end {equation} i \ begin {align} ... \ end {align} . Nowe makra LaTeX można zdefiniować przy użyciu standardowych metod, takich jak \ newcommand, umieszczając je w dowolnym miejscu między ogranicznikami matematycznymi w komórce Markdown. Te definicje są następnie dostępne przez pozostałą część sesji IPython.
Użyj $$, jeśli chcesz, aby matematyka pojawiała się w jednym wierszu, np.
$$a = b + c$$ (line break after the equation)
Jeśli nie potrzebujesz podziału linii po matematyce, użyj pojedynczego znaku dolara $, np.
$a = b + c$ (no line break after the equation)
Możesz wybrać komórkę, która ma być przeceniona, a następnie napisać kod lateksowy, który zostanie zinterpretowany przez mathjax, jak powiedział jeden z respondentów powyżej.
Alternatywnie, sekcja dotycząca lateksu w samouczku na temat iPython wyjaśnia to dobrze.
Możesz albo:
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}""")
lub zrób to:
%%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}
Więcej informacji można znaleźć w tym linku
Opracowałem prettyPy , który oferuje dobry sposób na wydrukowanie równania. Niestety nie jest wydajny i wymaga testowania.
Przykład:
Oczywiście sympy jest świetną alternatywą i chociaż prettyPy nie pozwala na ocenę wyrażeń, inicjalizacja zmiennych nie jest wymagana.
Ponieważ nie byłem w stanie używać wszystkich poleceń lateksowych w kodzie, nawet po użyciu słowa kluczowego %% latex lub limitu $ .. $, zainstalowałem rozszerzenia nb, dzięki którym mogłem używać poleceń lateksowych w Markdown. Po wykonaniu instrukcji tutaj: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md, a następnie zrestartowanie Jupyter, a następnie localhost: 8888 / nbextensions, a następnie aktywacja „Środowiska lateksowego dla Jupyter ”, mogłem uruchomić wiele poleceń lateksowych. Przykłady są tutaj: 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}
Jak widać, nadal nie mogę korzystać z usepackage. Ale może zostanie poprawiony w przyszłości.
Odpowiedź udzielona przez minrka (dołączona do kompletności) jest dobra, ale jest jeszcze inny sposób, który lubię jeszcze bardziej.
Możesz także wyrenderować całą komórkę LaTeX
, wpisując %%latex
jako pierwszy wiersz w komórce tekstowej. Jest to przydatne, jeśli ty
Notatnik IPython używa MathJax do renderowania LaTeX wewnątrz html / markdown. Po prostu włóż matematykę LaTeX do środka
$$
.$$c = \sqrt{a^2 + b^2}$$
Lub możesz wyświetlić dane wyjściowe LaTeX / Math z Pythona, jak widać pod koniec przewodnika po notebookach :
from IPython.display import display, Math, Latex display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
Jeśli Twoim głównym celem jest robienie matematyki, SymPy zapewnia doskonałe podejście do funkcjonalnych wyrażeń lateksowych, które wyglądają świetnie.
W tym artykule napisałem, jak napisać LaTeX w Jupyter Notebook .
Musisz zawrzeć je w znakach dolara ($).
$P(A)=\frac{n(A)}{n(U)}$
$$P(A)=\frac{n(A)}{n(U)}$$
Użyj \limits
dla \lim
, \sum
i \int
dodać do granic górnej i dolnej części każdego znaku.
Użyj odwrotnego ukośnika, aby uciec od specjalnych słów LaTeX, takich jak symbole matematyczne, słowa łacińskie, tekst itp.
Spróbuj tego.
$$\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}
$$
Powyższy kod to utworzy.
Jeśli chcesz wiedzieć, jak dodać numerację do równań i wyrównać równania, przeczytaj ten artykuł, aby uzyskać szczegółowe informacje .
Używanie składni LaTeX bezpośrednio w komórce Markdown działa dla mnie. Używam Jypiter 4.4.0.
%%latex
Nalegam, żeby nie używać komendy magicznej, po prostu cela przeceny:
\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}
Renderuje do:
Pewnego dnia natknąłem się na ten problem za pomocą colaba. I uważam, że najbardziej bezbolesnym sposobem jest uruchomienie tego kodu przed wydrukowaniem. Wtedy wszystko działa jak urok.
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()
Wynik wygląda następująco:
Używam notesów Jupyter. Musiałam pisać
%%latex
$sin(x)/x$
aby uzyskać czcionkę LaTex.