如何在IPython Notebook中编写LaTeX?

How to write LaTeX in IPython Notebook?

如何在IPython笔记本中显示LaTeX代码?


IPython笔记本使用MathJax在html / markdown中呈现LaTeX。把你的LaTeX数学放在$$里面。

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

sqrt

或者你可以在Python笔记本游览结束时看到Python的LaTeX / Math输出:

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

integral


这出现在我正在进行的搜索中,通过更多搜索找到了更好的解决方案,IPython笔记本现在具有%%latex魔法,使得整个单元格Latex不包含每行的$$包装。

请参阅Rich Display System的笔记本导览


LaTeX参考文献:

Udacity的Blog有我见过的最好的LaTeX Primer:它清楚地展示了如何使用易读的LaTeX命令,并且易于记忆!强烈推荐。

此链接具有显示代码和渲染结果的优秀示例!
您可以使用此站点快速了解如何通过示例编写LaTeX。

并且,这是LaTeX命令/符号的快速参考。

总结:在Jupyter / IPython中表示LaTeX的各种方法:

降价单元格的示例:

内联,换行:$

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

阻止,包裹:$$

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

block,wrap in:\begin{equation}\end{equation}

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

阻止,包装:\begin{align}\end{align}

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

代码单元的示例:

LaTex Cell:%%latex magic命令将整个单元格转换为LaTeX单元格

1
2
3
4
5
6
7
8
9
10
%%latex
\begin{align}

abla \cdot \vec{\mathbf{E}} & = 4 \pi
ho \\

abla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\

abla \cdot \vec{\mathbf{B}} & = 0
\end{align
}

要传入原始LaTeX字符串的Math对象:

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

乳胶类。注意:您必须自己包含分隔符。这允许您使用其他LaTeX模式,例如eqnarray

1
2
3
4
5
6
7
8
9
10
11
12
from IPython.display import Latex
Latex(r"""\begin{eqnarray}

abla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\

abla \cdot \vec{\mathbf{E}} & = 4 \pi
ho \\

abla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\

abla \cdot \vec{\mathbf{B}} & = 0
\end{eqnarray
}""")

原始单元的文档:

(抱歉,这里没有例子,只是文档)

Raw cells
Raw cells provide a place in which you can write output directly. Raw cells are not evaluated by the notebook. When passed through nbconvert, raw cells arrive in the destination format unmodified. For example, this allows you to type full LaTeX into a raw cell, which will only be rendered by LaTeX after conversion by nbconvert.

其他文件:

对于Markdown Cells,引自Jupyter Notebook文档:

Within Markdown cells, you can also include mathematics in a straightforward way, using standard LaTeX notation: $...$ for inline mathematics and $$...$$ for displayed mathematics. When the Markdown cell is executed, the LaTeX portions are automatically rendered in the HTML output as equations with high quality typography. This is made possible by MathJax, which supports a large subset of LaTeX functionality

Standard mathematics environments defined by LaTeX and AMS-LaTeX (the amsmath package) also work, such as \begin{equation}...\end{equation}, and \begin{align}...\end{align}. New LaTeX macros may be defined using standard methods, such as
ewcommand, by placing them anywhere between math delimiters in a Markdown cell. These definitions are then available throughout the rest of the IPython session.


如果您希望数学出现在一行中,请使用$$,例如,

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

如果您在数学后不需要换行符,请使用单个美元符号$,例如,

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

您可以选择要标记的单元格,然后编写由mathjax解释的乳胶代码,如上面的响应者之一所述。

或者,iPython笔记本教程的Latex部分很好地解释了这一点。

你可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
from IPython.display import Latex
Latex(r"""\begin{eqnarray}

abla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\

abla \cdot \vec{\mathbf{E}} & = 4 \pi
ho \\

abla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\

abla \cdot \vec{\mathbf{B}} & = 0
\end{eqnarray
}""")

或者这样做:

1
2
3
4
5
6
7
8
9
10
11
12
%%latex
\begin{align}

abla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\

abla \cdot \vec{\mathbf{E}} & = 4 \pi
ho \\

abla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\

abla \cdot \vec{\mathbf{B}} & = 0
\end{align
}

更多信息请参见此链接


我开发了prettyPy,它提供了打印方程式的好方法。不幸的是,它不具备性能并且需要测试。

例:

enter image description here

当然,sympy是一个很好的选择,虽然prettyPy不允许评估表达式,但不需要变量初始化。


因为,即使在使用%% latex关键字或$ .. $限制器之后,我也无法使用Code中的所有latex命令,我安装了nbextensions,我可以在Markdown中使用latex命令。按照以下说明操作:https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md然后重新启动Jupyter然后重新启动localhost:8888 / nbextensions,然后激活"Latex Env??ironment for Jupyter",我可以运行许多Latex命令。示例如下:https://rawgit.com/jfbercher/latex_envs/master/doc/latex_env_doc.html

1
2
3
4
5
6
7
8
9
10
11
12
\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
}

如你所见,我仍然无法使用usepackage。但也许它将来会得到改善。

enter image description here


minrk给出的答案(包括完整性)是好的,但还有另一种我喜欢的方式。

您还可以通过键入%%latex作为文本单元格中的第一行,将整个单元格渲染为LaTeX。如果你这很有用

  • 想要更多的控制,
  • 想要的不仅仅是数学环境,
  • 或者如果你打算在一个单元格中写下很多数学。

minrk的回答:

IPython notebook uses MathJax to render
LaTeX inside html/markdown. Just put your LaTeX math inside $$.

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

sqrt

Or you can display LaTeX / Math output from Python, as seen towards
the end of the notebook
tour:

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

integral


如果您的主要目标是进行数学运算,SymPy提供了一种非常出色的功能性乳胶表达方法。


直接在Markdown单元格中使用LaTeX语法对我有用。 我正在使用Jypiter 4.4.0。

我不必使用%%latex魔术命令,我坚持,只需一个降价单元格:

1
2
3
4
5
6
7
8
9
10
11
\begin{align}

abla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\

abla \cdot \vec{\mathbf{E}} & = 4 \pi
ho \\

abla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\

abla \cdot \vec{\mathbf{B}} & = 0
\end{align
}

呈现给:

enter image description here


我正在使用Jupyter笔记本。
我不得不写

1
2
%%latex
$sin(x)/x$

获得LaTex字体。


有一天我使用colab来解决这个问题。 我发现最无痛的方法就是在打印前运行此代码。 一切都像魅力一样。

1
2
3
4
5
6
7
8
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'>"))
get_ipython().events.register('pre_run_cell', load_mathjax_in_cell_output)
import sympy as sp
sp.init_printing()

结果如下:

enter image description here