如何在IPython Notebook中显示LaTeX代码?
IPython笔记本使用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笔记本现在有一个%%乳胶魔法,使整个细胞乳胶没有$$包装每行。
关于富显示系统,请参考笔记本手册
使用$$如果你想要你的数学出现在单行,例如,
$$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}
更多信息在此链接
我开发了pretty typy,它提供了一种打印方程的好方法。不幸的是,它不是高性能的,需要测试。
例子:
当然,sympy是一个很好的替代方案,尽管prettyPy不允许计算表达式,变量初始化是不需要的。
Since, I was not able to use all the latex commands in Code even after using the %%latex keyword or the $..$ limiter, I installed the nbextensions through which I could use the latex commands in Markdown. After following the instructions here: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md and then restarting the Jupyter and then localhost:8888/nbextensions and then activating "Latex Environment for Jupyter", I could run many Latex commands. Examples are here: 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。但也许将来会有所改进。
minrk给出的答案(包括完整性)很好,但还有另一种方式我更喜欢。
通过在文本单元格中键入%% LaTeX作为第一行,还可以将整个单元格呈现为LaTeX。这很有用,如果你
想要更多的控制, 想要的不仅仅是数学环境, 或者如果你要在一个格子里写很多数学。
minrk的回答是:
IPython笔记本使用MathJax进行渲染 html/markdown中的LaTeX。只要把你的LaTeX数学放在$$中。 $$c = \√{a^2 + b^2}$$ 或者你也可以从Python中显示LaTeX / Math输出,如图所示 笔记本的结尾 旅游: IPython。display导入display, Math, Latex 显示器(数学(r 'F (k) = \ int_ {- \ infty} ^ {\ infty} f (x) e ^{2 \πk} dx '))
乳胶引用:
Udacity的博客有我见过的最好的LaTeX入门:它清楚地展示了如何使用LaTeX命令,易于阅读,易于记忆!!强烈推荐。
这个链接有优秀的示例,显示了代码和呈现的结果! 您可以使用该网站通过示例快速学习如何编写LaTeX。
并且,这里有一个LaTeX命令/符号的快速参考。
总结:在Jupyter/IPython中表示LaTeX的各种方式:
Markdown单元格的例子:
内联,封装:$
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$$
块,包装在:\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
\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}
Math对象传递一个原始LaTeX字符串:
from IPython.display import Math
Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
乳胶类。注意:您必须自己包含分隔符。这允许你使用其他LaTeX模式,如equnarray:
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传递时,原始单元格以未修改的目标格式到达。例如,这允许您将完整的LaTeX输入到原始单元格中,该单元格仅在由nbconvert转换后由LaTeX呈现。
附加的文档:
对于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 \newcommand, by placing them anywhere between math delimiters in a Markdown cell. These definitions are then available throughout the rest of the IPython session.
有一天我在使用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 Notebook中编写LaTeX。
你需要用美元($)符号把它们括起来。
要向左对齐,请使用单个美元($)符号。
$ P (A) = \压裂{n (A)} {n (U)} $
要对齐到中心,请使用双元($$)符号。
$ $ P (A) = \压裂{n (A)} {n (U)} $ $
使用\limit for \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。显示加载和显示。
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字符串。例如:
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)
它将显示格式化的方程式。
推荐文章
- 使用pandoc从Markdown转换为PDF时设置空白大小
- Python和IPython的区别是什么?
- 如何从终端运行。ipynb Jupyter Notebook ?
- 移除jupyter笔记本上的内核
- 如何使用列的格式字符串显示浮动的熊猫数据帧?
- 使用Python 2。3. Python。IPython Notebook中的x
- 如何加载/编辑/运行/保存文本文件(.py)到IPython笔记本细胞?
- 在R中制作乳胶表的工具
- 在安装pip后,“jupyter:命令未找到”
- 在IPython中自动重载模块
- 如何防止谷歌Colab断开连接?
- git + LaTeX工作流
- 如何在Jupyter Notebook中显示文件中的图像?
- 熊猫操作期间的进度指标
- 修改IPython/Jupyter笔记本工作目录