如何在IPython Notebook中编写LaTeX?

任何人都可以分享的方式,如何编写IPython笔记本中的LaTeX代码?

这只是一个search,我刚刚做了一个search,find了一个更好的解决scheme,一些更多的search,IPython笔记本现在有一个%%latex魔术,使整个单元Latex没有$$包装每行。

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

IPython笔记本使用MathJax在html / markdown内部渲染LaTeX。 只需把你的LaTeXmath放在$$

 $$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 ik} dx')) 

积分

如果你想让你的math出现在一行中,请使用$$,例如,

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

如果math后不需要换行符,则使用单个美元符号$,例如,

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

您可以select一个单元格作为降价,然后编写由mathjax解释的乳胶代码,如上面的响应者之一所述。

或者,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} 

在此链接中find更多信息

乳胶参考:

Udacity的博客有我见过的最好的 LaTeX入门 :它清楚地显示了如何使用易于阅读和易于记忆的方式使用LaTeX命令! 强烈推荐

这个链接有很好的例子,显示代码和渲染结果!
你可以使用这个网站来快速学习如何写LaTeX的例子。

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


总结:在Jupyter / IPython中指出LaTeX的各种方法:

Markdown单元示例 :

内联,换行: $

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

块,换行: $$

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

块,换行: \begin{equation}\end{equation}

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

块,换行: \begin{align}\end{align}

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

代码单元示例 :

LaTex Cell: %%latex magic命令将整个单元格变成一个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} 

math对象传递一个原始的LaTeXstring

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

乳胶class 。 注意:你必须自己包含分隔符。 这使您可以使用其他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传递时,未经修改的原始单元格以目标格式到达。 例如,这允许您将完整的LaTeXinput到原始单元格中 ,该单元格仅在由nbconvert转换nbconvert由LaTeX呈现。

其他文件:

对于Markup Cells, Jupyter Notebook引用文档 :

在Markdown单元格中,还可以使用标准LaTeX表示法直接包含math: $ … $表示内联math$$ … $$表示mathexpression式 。 执行Markdown单元格时,LaTeX部分会自动以HTML输出forms呈现为具有高质量排版的方程式。 MathJax支持LaTeXfunction的一大部分,这使得这成为可能

由LaTeX和AMS-LaTeX(amsmath包)定义的标准math环境也可以工作,如\ begin {equation} … \ end {equation}\ begin {align} … \ end {align} 。 新的LaTeXmacros可以使用标准方法定义,比如\ newcommand,通过将它们放置在Markdown单元格中的math分隔符之间的任何位置。 这些定义在整个IPython会话的其余部分都是可用的。

我不能否认我没有偏见,但我更喜欢使用prettyPy写出完整的LaTeXexpression式。

例:

在这里输入图像说明

当然, sympy是一个很好的select,虽然prettyPy不允许评估expression式,但不需要variables初始化。

因为在使用%% latex关键字或$ .. $ limiter之后,我无法使用代码中的所有latex命令,所以我安装了可以在Markdown中使用latex命令的nbextensions。 按照这里的说明: https : //github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md ,然后重新启动Jupyter,然后localhost:8888 / nbextensions,然后激活“乳胶环境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} 

正如你所看到的,我仍然无法使用usepackage。 但是也许今后会有所改进。

在这里输入图像说明

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

您也可以通过在文本单元格中input%%latex作为第一行来将整个单元格渲染为LaTeX 。 这是有用的,如果你

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

小克的答案是:


IPython笔记本使用MathJax在html / markdown内部渲染LaTeX。 只需把你的LaTeXmath放在$$

 $$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 ik} dx')) 

积分

如果你的主要目标是做math,SymPy提供了一个很好的function乳胶expression看起来很棒的方法。

Interesting Posts