如何在IPython Notebook中显示LaTeX代码?
IPython notebook使用MathJax在html/markdown中渲染LaTeX。只要把你的LaTeX数学放在$$里面。
$$
$$c = \sqrt{a^2 + b^2}$$
或者你可以从Python中显示LaTeX / Math输出,就像笔记本电脑之旅结尾所看到的那样:
from IPython.display import display, Math, Latex display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
这是在我刚刚做的搜索中出现的,通过更多的搜索发现了一个更好的解决方案,IPython笔记本现在有一个%%latex魔法,使整个单元乳胶没有$$包装每行。
%%latex
丰富显示系统参考笔记本旅游
使用$$如果你想要你的数学出现在单行,例如,
$$a = b + c$$ (line break after the equation)
如果在数学运算之后不需要换行符,可以使用单美元符号$,例如:
$a = b + c$ (no line break after the equation)
您可以选择一个要降价的单元格,然后编写由mathjax解释的latex代码,就像上面提到的应答器之一一样。
另外,iPython笔记本教程的Latex部分很好地解释了这一点。
你可以这样做:
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关键字或$..之后,我也无法使用代码中的所有latex命令。$ limititer,我安装了nbextensions,通过它我可以在Markdown中使用latex命令。在遵循这里的指示:https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md,然后重新启动Jupyter,然后localhost:8888/nbextensions,然后激活“Latex Environment for 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}
如你所见,我仍然无法使用uspackage。但也许将来会有所改进。
如果你的主要目标是做数学,SymPy提供一个很好的方法函数乳胶表达式看起来很棒。
minrk给出的答案(包括完整性)是好的,但还有另一种方式,我更喜欢。
你也可以通过在文本单元格中输入%%latex作为第一行来呈现整个单元格为LaTeX。这很有用,如果你
LaTeX
minrk的答案:
IPython notebook使用MathJax进行渲染 html/markdown中的LaTeX。只要把你的LaTeX数学放在$$里面 $$c = \sqrt{a^2 + b^2}$$ 或者你可以从Python中显示LaTeX / Math输出,如图所示 结束笔记本 游览< / >:< / p > from IPython.display import display, Math, Latex display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
或者你可以从Python中显示LaTeX / Math输出,如图所示 结束笔记本 游览< / >:< / p > from IPython.display import display, Math, Latex display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
Udacity的博客有我看过的最好的 LaTeX Primer .:它清楚地展示了如何使用LaTeX命令,易于阅读,易于记忆!!强烈推荐。
这个链接有很好的例子显示代码和呈现的结果 您可以使用该网站通过示例快速学习如何编写LaTeX。< / p >
这里是一个快速的乳胶的参考资料命令/符号。
inline, wrap in: $
$
The equation used depends on whether the the value of $Vmax$ is R, G, or B.
block, wrap in: $$
$$H← 0 + \frac{30(G−B)}{Vmax−Vmin} , if Vmax = R$$
block, wrap in: \begin{equation}和\end{equation}
\begin{equation}
\end{equation}
\begin{equation} H← 60 + \frac{30(B−R)}{Vmax−Vmin} , if Vmax = G \end{equation}
block, wrap in: \begin{align}和\end{align}
\begin{align}
\end{align}
\begin{align} H←120 + \frac{30(R−G)}{Vmax−Vmin} , if Vmax = B \end{align}
乳胶细胞: %%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}
数学对象来传递一个生乳胶绳:
from IPython.display import Math Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
乳胶类。注意:您必须自己包含分隔符。这允许你使用其他LaTeX模式,如eqnarray:
eqnarray
(抱歉,这里没有例子,只有文档)
< p >原始细胞 原始单元格提供了一个可以直接写入输出的地方。原始单元格不被笔记本计算。当通过nbconvert传递时,原始单元格以未修改的目标格式到达。例如,这允许你输入完整的LaTeX到原始单元格中,它只会在nbconvert转换后由LaTeX呈现
nbconvert
对于Markdown单元格,引用自Jupyter Notebook文档:
在Markdown单元格中,您还可以使用标准LaTeX符号美元……$用于内联数学和$ $……$$用于显示数学,以一种直接的方式包含数学。当Markdown单元格执行时,LaTeX部分会自动呈现在HTML输出中,作为具有高质量排版的方程式。这是由MathJax实现的,它支持大量的LaTeX功能子集 由LaTeX和AMS-LaTeX (amsmath包)定义的标准数学环境也可以工作,例如结束\{方程}开始…\{方程}和结束\{对齐}开始…\{对齐}。可以使用标准方法(如\newcommand)定义新的LaTeX宏,方法是将它们放在Markdown单元格中数学分隔符之间的任何位置。这些定义可以在IPython会话的其余部分使用。
在Markdown单元格中,您还可以使用标准LaTeX符号美元……$用于内联数学和$ $……$$用于显示数学,以一种直接的方式包含数学。当Markdown单元格执行时,LaTeX部分会自动呈现在HTML输出中,作为具有高质量排版的方程式。这是由MathJax实现的,它支持大量的LaTeX功能子集
由LaTeX和AMS-LaTeX (amsmath包)定义的标准数学环境也可以工作,例如结束\{方程}开始…\{方程}和结束\{对齐}开始…\{对齐}。可以使用标准方法(如\newcommand)定义新的LaTeX宏,方法是将它们放在Markdown单元格中数学分隔符之间的任何位置。这些定义可以在IPython会话的其余部分使用。
有一天我在使用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()
结果如下所示:
在Markdown单元格中直接使用LaTeX语法适合我。我使用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}
呈现:
我正在使用Jupyter笔记本电脑。 我必须写
%%latex $sin(x)/x$
来获得LaTex字体。
我在这篇文章。中写了如何在Jupyter Notebook中编写LaTeX
你需要用美元($)符号把它们括起来。
$P(A)=\frac{n(A)}{n(U)}$
$$P(A)=\frac{n(A)}{n(U)}$$
使用\limits为\lim, \sum和\int在每个符号的顶部和底部添加限制。
\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} $$
上面的代码将创建这个。
如果你想知道如何给方程添加编号和对齐方程,请阅读本文提供详细信息。
这是当您想要控制文档序言时的另一种解决方案。编写整个文档,将其发送到system latex,将pdf转换为png,使用IPython.display加载和显示。
IPython.display
import tempfile import os.path import subprocess from IPython.display import Image, display with tempfile.TemporaryDirectory(prefix="texinpy_") as tmpdir: path = os.path.join(tmpdir, "document.tex") with open(path, 'w') as fp: fp.write(r""" \documentclass[12pt]{standalone} \begin{document} \LaTeX{} \end{document} """) subprocess.run(["lualatex", path], cwd=tmpdir) subprocess.run(["pdftocairo", "-singlefile", "-transp", "-r", "100", "-png", "document.pdf", "document"], cwd=tmpdir) im = Image(filename=os.path.join(tmpdir, "document.png")) display(im)
如果你想从笔记本代码单元格中显示LaTeX方程,你可以创建一个使用Jupyter笔记本显示丰富表示的简单包装器类。这个类应该有一个_repr_latex_方法(注意在开始和结束处有一个下划线,而不是其他特殊方法的双下划线)来输出LaTeX字符串。例如:
_repr_latex_
class LaTeXEquation: def __init__(self, eqntext): self.eqntext = eqntext def __repr__(self): return repr(self.eqntext) def _repr_latex_(self): """ Special method for rich display of LaTeX formula. """ # add $'s at start and end if not present if self.eqntext.strip()[0] != "$" and self.eqntext.strip()[-1] != "$": return "$" + self.eqntext + "$" else: return self.eqntext myeqn = "x = y^2"
然后在代码单元格中,如果你这样做,例如,
LaTeXEquation(myeqn)
它将显示格式化的方程式。