IPython Notebook'a LaTeX nasıl yazılır?


296

Bir IPython Dizüstü Bilgisayarında LaTeX kodunu nasıl görüntüleyebilirim?


3
@duffymo LaTeX'in nasıl bir şey olduğuna bakılmaksızın, bu oldukça iyi bir soru. IPython dizüstü bilgisayarın gerçekte ne olduğuna bir göz atın. Belki de 'roids'deki orgmode gibi olduğunu söylesem yardımcı olur (ama ne yazık ki güzel bir editör olmadan ve LaTeX yerine Markdown ile OP'nin sorusu).
Konrad Rudolph

1
Bunu bilmiyorum, talimat için teşekkürler Konrad.
duffymo

2
Ve net olmak gerekirse, LaTeX'i seviyorum . (Tezimi yazmak için kullandım.) İtiraz yok; sadece sorunu anlayamadı.
duffymo

Yanıtlar:


155

Bu sadece yaptığım bir arama geldi, biraz daha arama ile daha iyi bir çözüm buldu, IPython dizüstü bilgisayarlar artık her satır %%latexiçin $$sarıcı olmadan tüm hücre Lateks yapan bir sihir var .

Zengin Ekran Sistemi için dizüstü bilgisayar turuna bakın


33
Jupyter'de, bir işaretleme hücresinde çalışmaz, ancak bir kod hücresinde çalışır.
jwe

287

IPython dizüstü bilgisayar LaTeX'i html / markdown içinde oluşturmak için MathJax kullanır . Sadece LaTeX matematiğinizi içine koyun $$.

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

sqrt

Veya dizüstü bilgisayar turunun sonuna doğru görüldüğü gibi Python'dan LaTeX / Math çıktısını görüntüleyebilirsiniz :

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

integral


19
Bence OP sadece denklemler yerine Markdown yerine LaTeX kullanmak istiyor . İsteğe sempati duyuyorum - Markdown gibi, LaTeX'i her zaman kullanacağım karmaşık belgeler için.
Konrad Rudolph

16
Anladım. Bunun için en iyi çözüm, işaretleme yerine 'ham' hücreleri kullanmak ve sadece sizin gibi LaTeX yazın. Daha sonra ipynb'yi TeX'e (kod, şekiller ve tümü) çevirmek için nbconvert kullanın ve bunu PDF'ye vb. Oluşturmak için lateks çalıştırın. hala bir belgede TeX / kod var.
minrk

1
aynı soru ama qtconsole içinde
MySchizoBuddy

8
ve denklemi yerinde tutmak için tekli $ (çift $$ yerine) kullanın. stackoverflow.com/q/19412644/1224255
TheGrimmScientist

6
Ayrıca , bir metin hücresindeki ilk satır olarak LaTeXyazarak hücrenin tamamını oluşturabilirsiniz %%latex.
Toke Faurby

81

LaTeX Referansları:

Udacity'nin Blog'u gördüğüm en iyi LaTeX Primer'e sahiptir : LaTeX komutlarının okunması kolay ve hatırlanması kolay bir şekilde nasıl kullanılacağını açıkça göstermektedir !! Şiddetle tavsiye edilir .

Bu Bağlantı hem kodu hem de oluşturulan sonucu gösteren Mükemmel Örneklere sahiptir !
Bu siteyi örnek olarak LaTeX yazmayı hızlı bir şekilde öğrenmek için kullanabilirsiniz.

Ve işte LaTeX komutları / sembolleri için hızlı bir Referans .


Özetlemek gerekirse: Jupyter / IPython'da LaTeX'i belirtmenin çeşitli yolları:

Markdown Hücrelerine Örnekler :

satır içi, sarın: $

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

blok, sarın: $$

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

engellemek, sarmak:\begin{equation} ve\end{equation}

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

engellemek, sarmak:\begin{align} ve\end{align}

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

Kod Hücrelerine Örnekler :

LaTex Cell: %%latex sihirli komut tüm hücreyi bir LaTeX Hücresine dönüştürür

%%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}

Ham bir LaTeX dizesinde geçmek için matematik nesnesi :

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

Lateks sınıfı . Not: Sınırlayıcıları kendiniz dahil etmeniz gerekir. Bu, aşağıdaki gibi diğer LaTeX modlarını kullanmanızı sağlar 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}""")

Ham Hücreler için Dokümanlar :

(üzgünüm, burada örnek yok, sadece dokümanlar)

Ham hücreler Ham hücreler, çıktıyı doğrudan yazabileceğiniz bir yer sağlar. Ham hücreler dizüstü bilgisayar tarafından değerlendirilmez. İçinden geçtiklerinde nbconvert, ham hücreler değiştirilmeyen hedef formatta gelir. Örneğin, bu, LaTeX tarafından ham hücreye tam olarak yazmanıza izin verir ; bu, yalnızca LaTeX tarafından dönüşümden sonra oluşturulur nbconvert.

Ek Belgeler:

Jupyter Notebook belgelerinde alıntılandığı gibi Markdown Hücreleri için :

Markdown hücreleri içinde, standart LaTeX gösterimini kullanarak matematiği basit bir şekilde de ekleyebilirsiniz: satır içi matematik için $ ... $ ve görüntülenen matematik için $$ ... $$ . Markdown hücresi yürütüldüğünde, LaTeX bölümleri otomatik olarak HTML çıktısında yüksek kaliteli tipografiye sahip denklemler olarak oluşturulur. Bu, LaTeX işlevselliğinin büyük bir alt kümesini destekleyen MathJax tarafından mümkün kılınmıştır.

LaTeX ve AMS-LaTeX (amsmath paketi) tarafından tanımlanan standart matematik ortamları da \ begin {equation} ... \ end {equation} ve \ begin {align} ... \ end {align} gibi çalışır . Yeni LaTeX makroları, \ newcommand gibi standart yöntemler kullanılarak bir Markdown hücresindeki matematik sınırlayıcıları arasında herhangi bir yere yerleştirilerek tanımlanabilir. Bu tanımlar daha sonra IPython oturumunun geri kalanında kullanılabilir.


Udacity sayfasının bağlantısı artık çalışmıyor.
Galaxy

33

Hesabınızın tek bir satırda görünmesini istiyorsanız $$ kullanın, örn.

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

Matematikten sonra satır sonuna ihtiyacınız yoksa, tek dolar işareti $ kullanın, ör.

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

23

İşaretleme için bir hücre seçebilir, ardından yanıtlayanlardan birinin yukarıda söylediği gibi mathjax tarafından yorumlanan lateks kodunu yazabilirsiniz.

Alternatif olarak, iPython dizüstü bilgisayar öğreticisinin Lateks bölümü bunu iyi açıklar.

Bunlardan birini yapabilirsiniz:

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}""")

veya bunu yapın:

%%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}

Bu bağlantıda daha fazla bilgi bulundu


4
bağlantınız bozuldu
J'e


14

Denklemi yazdırmanın güzel bir yolunu sunan prettyPy'yi geliştirdim . Ne yazık ki, performans değil ve test edilmesi gerekiyor.

Misal:

resim açıklamasını buraya girin

Verilen, sempati harika bir alternatiftir ve prettyPy ifadelerin değerlendirilmesine izin vermese de, değişken başlatma gerekli değildir.


2
Demek istediğim, paketi geliştirdiğimi ima etmekti. Cevabımı bunu açıkça belirtecek şekilde ayarladım.
Charles

1
Kamu malı kod koymak için şeref. (Şimdi) eski yorumumu sileceğim.
Robino

10

%% lateks anahtar kelimesini veya $ .. $ sınırlayıcıyı kullandıktan sonra bile Code'daki tüm lateks komutlarını kullanamadığımdan, Markdown'da lateks komutlarını kullanabileceğim nbextensions yükledim. Buradaki talimatları uyguladıktan sonra : https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md ve ardından Jupyter'ı yeniden başlattıktan sonra localhost: 8888 / nbextensions ve ardından "Lateks Ortamı Jupyter ", birçok Lateks komutunu çalıştırabilirim. Örnekler burada: 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}

Gördüğünüz gibi hala ambalajı kullanamıyorum. Ama belki de gelecekte geliştirilecektir.

resim açıklamasını buraya girin


1
Latex_envs dizüstü bilgisayar uzantısı harici LaTeX paketlerini veya stillerini kullanamaz; Bir derleyici içermez, ancak bazı anahtar kelimeleri, yapıları tanır ve uygun html ikamelerini yapar. Kullandığınız için teşekkürler. Şimdi pip kullanarak ipython-katkıda bulunan dizüstü bilgisayar uzantılarını kurmak çok daha kolay.
jfb

9

Minrk tarafından verilen cevap ( bütünlük için dahil) iyidir, ancak daha çok sevdiğim başka bir yol var.

Ayrıca , bir metin hücresindeki ilk satır olarak LaTeXyazarak hücrenin tamamını oluşturabilirsiniz %%latex. Bu, eğer

  • daha fazla kontrol istemek,
  • bir matematik ortamından daha fazlasını istemek,
  • veya bir hücreye çok fazla matematik yazacaksanız.

minrk kullanıcısının yanıtı:


IPython dizüstü bilgisayar LaTeX'i html / markdown içinde oluşturmak için MathJax kullanır . Sadece LaTeX matematiğinizi içine koyun $$.

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

sqrt

Veya dizüstü bilgisayar turunun sonuna doğru görüldüğü gibi Python'dan LaTeX / Math çıktısını görüntüleyebilirsiniz :

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

integral



3

Bu yazıda Jupyter Notebook'a LaTeX yazmayı yazdım .

Bunları dolar ($) işaretlerine eklemeniz gerekir.

  • Sola hizalamak için tek bir dolar ($) işareti kullanın.

$P(A)=\frac{n(A)}{n(U)}$

  • Merkeze hizalamak için çift dolar ($$) işaretleri kullanın.

$$P(A)=\frac{n(A)}{n(U)}$$

  • Kullanım \limitsiçin \lim, \sumve \intüst ve her işaretin altına sınırlarını ekleyin.

  • Matematik sembolleri, Latince kelimeler, metin vb.Gibi LaTeX özel kelimelerinden kaçmak için ters eğik çizgi kullanın.

resim açıklamasını buraya girin

Bunu dene.

$$\overline{x}=\frac{\sum \limits _{i=1} ^k f_i x_i}{n} \text{, where } n=\sum \limits _{i=1} ^k f_i  $$
  • Matrisler

resim açıklamasını buraya girin

  • Parçalı fonksiyonlar
$$
\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}
$$

Yukarıdaki kod bunu yaratacaktır.

resim açıklamasını buraya girin

Denklemlere nasıl numaralandırma ekleyeceğinizi ve denklemleri nasıl hizalayacağınızı öğrenmek istiyorsanız, lütfen ayrıntılar için bu makaleyi okuyun .


2

LaTeX sözdizimini doğrudan bir Markdown hücresinde kullanmak benim için işe yarar. Jypiter 4.4.0 kullanıyorum.

%%latexSihirli komut kullanmak zorunda değilim , ısrar ediyorum, sadece bir işaretleme hücresi:

\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}

Renders:

resim açıklamasını buraya girin


2
Bu gerçekten de bunu yapmanın en kolay ve en temiz yoludur.
Veliko

1

Bu problemle bir gün kolab kullanarak karşılaştım. Ve en acısız yolun yazdırmadan önce bu kodu çalıştırdığını görüyorum. O zaman her şey cazibe gibi çalışır.

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()

Sonuç şuna benzer:

resim açıklamasını buraya girin


1

Jupyter Notebook kullanıyorum. Yazmak zorunda kaldım

%%latex
$sin(x)/x$

LaTex yazı tipi almak için.


1
Bu, kodlama modundayken çalışır. Markdown modundaysanız %% lateks
Lahiru Karunaratne
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.