ฉันจะแสดงรหัส LaTeX ในสมุดบันทึก IPython ได้อย่างไร
ฉันจะแสดงรหัส LaTeX ในสมุดบันทึก IPython ได้อย่างไร
คำตอบ:
สิ่งนี้เกิดขึ้นในการค้นหาที่ฉันเพิ่งทำพบวิธีแก้ปัญหาที่ดีกว่าด้วยการค้นหาเพิ่มเติมตอนนี้โน้ตบุ๊ค IPython มี%%latex
เวทมนตร์ที่ทำให้ทั้งเซลล์ลาเท็กซ์โดยไม่มี$$
เสื้อคลุมสำหรับแต่ละบรรทัด
อ้างอิงการแนะนำโน๊ตบุ๊คสำหรับระบบ Rich Display
สมุดบันทึก IPython ใช้MathJaxเพื่อแสดง LaTeX ภายใน html / markdown $$
เพียงแค่ใส่ภายในคณิตศาสตร์น้ำยางของคุณ
$$c = \sqrt{a^2 + b^2}$$
หรือคุณสามารถแสดงน้ำยาง / เอาต์พุตคณิตศาสตร์จากงูใหญ่เท่าที่เห็นในตอนท้ายของการท่องเที่ยวโน๊ตบุ๊ค :
from IPython.display import display, Math, Latex
display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
LaTeX
โดยพิมพ์%%latex
เป็นบรรทัดแรกในเซลล์ข้อความ
บล็อกของ Udacity มีPrimer LaTeX ที่ดีที่สุด เท่าที่ฉันเคยเห็น: มันแสดงให้เห็นอย่างชัดเจนถึงวิธีการใช้คำสั่ง LaTeX ในการอ่านง่ายและจดจำได้ง่าย !! แนะนำเป็นอย่างยิ่ง
ลิงค์นี้มีตัวอย่างที่ดีเลิศแสดงทั้งรหัสและผลลัพธ์ที่แสดง!
คุณสามารถใช้เว็บไซต์นี้เพื่อเรียนรู้วิธีเขียน LaTeX อย่างรวดเร็วด้วยตัวอย่าง
และนี่คือการอ้างอิงด่วนสำหรับคำสั่ง / สัญลักษณ์ LaTeX
อินไลน์ห่อใน: $
The equation used depends on whether the the value of
$Vmax$ is R, G, or B.
บล็อก, ห่อใน: $$
$$H← 0 + \frac{30(G−B)}{Vmax−Vmin} , if Vmax = R$$
บล็อก, ห่อใน:\begin{equation}
และ\end{equation}
\begin{equation}
H← 60 + \frac{30(B−R)}{Vmax−Vmin} , if Vmax = G
\end{equation}
บล็อก, ห่อใน:\begin{align}
และ\end{align}
\begin{align}
H←120 + \frac{30(R−G)}{Vmax−Vmin} , if Vmax = B
\end{align}
LaTex Cell: %%latex
คำสั่งเวทเปลี่ยนทั้งเซลล์เป็นเซลล์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}
วัตถุทางคณิตศาสตร์ที่จะผ่านในสตริง Raw LaTeX :
from IPython.display import Math
Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
ระดับน้ำยางข้น หมายเหตุ: คุณต้องรวมตัวคั่นด้วยตนเอง สิ่งนี้ทำให้คุณสามารถใช้โหมด LaTeX อื่น ๆ เช่น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}""")
(ขออภัยไม่มีตัวอย่างที่นี่แค่เอกสาร)
เซลล์ดิบเซลล์ดิบเป็นสถานที่ที่คุณสามารถเขียนผลลัพธ์ได้โดยตรง โน๊ตบุ๊คไม่ได้ทำการประเมินเซลล์ดิบ เมื่อผ่านไป
nbconvert
เซลล์ดิบจะมาถึงในรูปแบบปลายทางที่ไม่ได้แก้ไข ตัวอย่างเช่นนี้ช่วยให้คุณสามารถพิมพ์น้ำยางเต็มลงในเซลล์ดิบnbconvert
ซึ่งจะถูกแสดงโดยน้ำยางหลังจากการแปลงโดย
สำหรับ Markdown Cells ที่ยกมาจากJupyter Notebook docs :
ภายในเซลล์ Markdown คุณยังสามารถรวมวิชาคณิตศาสตร์ในทางที่ตรงไปตรงมาโดยใช้สัญกรณ์น้ำยางมาตรฐาน: $ ... $ สำหรับคณิตศาสตร์แบบอินไลน์และ$$ $$ ... สำหรับคณิตศาสตร์แสดง เมื่อดำเนินการเซลล์มาร์คดาวน์ส่วน LaTeX จะแสดงผลโดยอัตโนมัติในเอาต์พุต HTML เป็นสมการที่มีตัวอักษรคุณภาพสูง สิ่งนี้เกิดขึ้นได้โดย MathJax ซึ่งรองรับชุดย่อยจำนวนมากของฟังก์ชัน LaTeX
สภาพแวดล้อมคณิตศาสตร์มาตรฐานที่กำหนดโดยน้ำยางและ AMS น้ำยาง (แพคเกจ amsmath) ที่ยังทำงานเช่น\ begin {} สม ... \ end {} สมและ\ begin {} ชิด ... \ end {} มาโคร LaTeX ใหม่อาจถูกกำหนดโดยใช้วิธีมาตรฐานเช่น \ newcommand โดยวางไว้ที่ใดก็ได้ระหว่างตัวคั่นคณิตศาสตร์ในเซลล์ Markdown คำจำกัดความเหล่านี้จะพร้อมใช้งานตลอดช่วงเวลาที่เหลือของเซสชัน IPython
ใช้ $$ หากคุณต้องการให้คณิตศาสตร์ของคุณปรากฏในบรรทัดเดียวเช่น
$$a = b + c$$ (line break after the equation)
หากคุณไม่ต้องการการแบ่งบรรทัดหลังคณิตศาสตร์ให้ใช้เครื่องหมายดอลลาร์เดียวเช่น
$a = b + c$ (no line break after the equation)
คุณสามารถเลือกเซลล์ที่จะถูกมาร์คเกอร์แล้วเขียนรหัสลาเท็กซ์ซึ่งได้รับการตีความโดย mathjax ตามที่ผู้ตอบคำถามคนหนึ่งพูดไว้ข้างต้น
อีกวิธีหนึ่งส่วน Latex ของโปรแกรมสอนสำหรับโน๊ตบุ๊ค iPython นั้นอธิบายได้ดี
คุณสามารถทำได้:
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}""")
หรือทำสิ่งนี้:
%%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}
พบข้อมูลเพิ่มเติมในลิงค์นี้
ฉันพัฒนาprettyPyซึ่งเป็นวิธีที่ดีในการพิมพ์สมการ น่าเสียดายที่มันไม่ได้มีประสิทธิภาพและต้องการการทดสอบ
ตัวอย่าง:
จริงอยู่ที่sympyเป็นทางเลือกที่ยอดเยี่ยมและถึงแม้ว่า prettyPy ไม่อนุญาตให้ทำการประเมินนิพจน์
ตั้งแต่ฉันไม่สามารถใช้คำสั่ง latex ทั้งหมดใน Code ได้แม้หลังจากใช้คำสำคัญ %% latex หรือ $ .. $ limiter ฉันจึงติดตั้ง nbextensions ซึ่งฉันสามารถใช้คำสั่ง latex ใน Markdown ได้ หลังจากทำตามคำแนะนำที่นี่: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.mdแล้วรีสตาร์ท Jupyter แล้ว localhost: 8888 / nbextensions แล้วเปิดใช้งาน "Latex Environment สำหรับ Jupyter "ฉันสามารถรันคำสั่ง Latex หลายคำได้ ตัวอย่างอยู่ที่นี่: 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}
อย่างที่คุณเห็นฉันยังคงไม่สามารถใช้แพ็คเกจการเดินทางได้ แต่บางทีมันอาจจะดีขึ้นในอนาคต
คำตอบที่ได้รับจากminrk (รวมเพื่อความสมบูรณ์) เป็นสิ่งที่ดี แต่มีวิธีอื่นที่ฉันชอบมากยิ่งขึ้น
นอกจากนี้คุณยังสามารถแสดงผลทั้งเซลล์LaTeX
โดยพิมพ์%%latex
เป็นบรรทัดแรกในเซลล์ข้อความ นี่คือมีประโยชน์ถ้าคุณ
คำตอบของminrk :
สมุดบันทึก IPython ใช้MathJaxเพื่อแสดง LaTeX ภายใน html / markdown
$$
เพียงแค่ใส่ภายในคณิตศาสตร์น้ำยางของคุณ$$c = \sqrt{a^2 + b^2}$$
หรือคุณสามารถแสดงน้ำยาง / เอาต์พุตคณิตศาสตร์จากงูใหญ่เท่าที่เห็นในตอนท้ายของการท่องเที่ยวโน๊ตบุ๊ค :
from IPython.display import display, Math, Latex display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
หากวัตถุประสงค์หลักของคุณกำลังทำคณิตศาสตร์อยู่ SymPy ให้วิธีการที่ยอดเยี่ยมในการแสดงออกของลาเท็กซ์ที่ทำหน้าที่ได้ดี
ฉันเขียนวิธีการเขียน LaTeX ใน Jupyter Notebook ในบทความนี้
คุณต้องใส่ไว้ในสัญลักษณ์ดอลลาร์ ($)
$P(A)=\frac{n(A)}{n(U)}$
$$P(A)=\frac{n(A)}{n(U)}$$
ใช้\limits
สำหรับ\lim
, \sum
และ\int
เพื่อเพิ่มขีด จำกัด ไปด้านบนและด้านล่างของแต่ละป้าย
ใช้แบ็กสแลชเพื่อหนีคำพิเศษของ LaTeX เช่นสัญลักษณ์ทางคณิตศาสตร์คำภาษาละตินข้อความ ฯลฯ
ลองอันนี้.
$$\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}
$$
รหัสด้านบนจะสร้างสิ่งนี้
หากคุณต้องการที่จะรู้วิธีการเพิ่มหมายเลขสมการและสมชิดโปรดอ่านบทความนี้สำหรับรายละเอียด
การใช้ไวยากรณ์ LaTeX โดยตรงในเซลล์ Markdown เหมาะสำหรับฉัน ฉันใช้ Jypiter 4.4.0
ฉันไม่ต้องใช้%%latex
คำสั่งเวทย์มนตร์ฉันยืนยันเพียงเซลล์ markdown:
\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}
แสดงผลเป็น:
ฉันเจอปัญหานี้ในบางวันโดยใช้ colab และฉันพบว่าวิธีที่เจ็บปวดที่สุดคือแค่เรียกใช้รหัสนี้ก่อนพิมพ์ ทุกอย่างใช้งานได้อย่างมีเสน่ห์
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()
ผลลัพธ์จะเป็นดังนี้:
ฉันกำลังใช้สมุดบันทึก Jupyter ฉันต้องเขียน
%%latex
$sin(x)/x$
เพื่อรับแบบอักษร LaTex