如何在IPython Notebook中编写LaTeX?

Kos*_*asA 272 latex ipython jupyter-notebook

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

min*_*nrk 272

IPython笔记本使用MathJax在html/markdown中呈现LaTeX.把你的LaTeX数学放进去$$.

$$c = \sqrt{a^2 + b^2}$$
Run Code Online (Sandbox Code Playgroud)

开方

或者你可以在Python 笔记本游览结束时看到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'))
Run Code Online (Sandbox Code Playgroud)

积分

  • 我认为OP想要使用LaTeX*而不是Markdown*,而不仅仅是方程式.我同情这个请求 - 就像我喜欢Markdown一样,对于复杂的文档,我总是使用LaTeX. (16认同)
  • 疑难杂症.现在最好的解决方案是使用'原始'单元而不是降价,只需输入LaTeX就可以了.然后使用[nbconvert](https://github.com/ipython/nbconvert)将ipynb转换为TeX(代码,数字和所有),并运行latex以将其呈现为PDF等.您无法获得 - 在浏览器中渲染TeX就像使用MathJax/Markdown一样,但在一个文档中仍然有TeX /代码. (16认同)
  • 并使用单个$(而不是double $$)来保持等式符合线性.http://stackoverflow.com/q/19412644/1224255 (8认同)
  • 您还可以通过键入`%% latex`作为文本单元格中的第一行来将整个单元格渲染为"LaTeX". (6认同)

小智 139

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

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

  • 在Jupyter中,它在降序单元格中不起作用,但它在代码单元格中起作用. (30认同)
  • 使用Jupyter,它对我不起作用 (3认同)
  • `$$`在Jupyter和Markdown单元中都有效 (2认同)
  • 现在正在木星上工作。我将 %%latex 放入单元格中,然后导入“from IPython.display import Latex”。之后,Jupyter 笔记本即可识别 Latex 符号。 (2认同)

She*_*man 68

LaTeX参考文献:

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

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

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


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

降价单元格的示例:

内联,包装: $

The equation used depends on whether the the value of  
$V?max??$ is R, G, or B.  
Run Code Online (Sandbox Code Playgroud)

阻止,包裹: $$

$$H?  ?????0 ?+? \frac{??30(G?B)??}{Vmax?Vmin}  ??, if V?max?? = R$$
Run Code Online (Sandbox Code Playgroud)

阻止,包裹:\begin{equation}\end{equation}

\begin{equation}
H? ???60 ?+? \frac{??30(B?R)??}{Vmax?Vmin}  ??, if V?max?? = G
\end{equation}
Run Code Online (Sandbox Code Playgroud)

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

\begin{align}
H?120 ?+? \frac{??30(R?G)??}{Vmax?Vmin}  ??, if V?max?? = B
\end{align}
Run Code Online (Sandbox Code Playgroud)

代码单元的示例:

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}
Run Code Online (Sandbox Code Playgroud)

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

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

乳胶类.注意:您必须自己包含分隔符.这允许您使用其他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}""")
Run Code Online (Sandbox Code Playgroud)

原始单元的文档:

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

原始单元原始单元格提供了一个可以直接写入输出的位置.笔记本不评估原始单元格.传递时nbconvert,原始单元格以未修改的形式到达目标格式.例如,这允许您将完整的LaTeX键入到原始单元格中,该单元格仅在转换后由LaTeX呈现nbconvert.

其他文件:

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

在Markdown单元格中,您还可以使用标准的LaTeX表示法以简单的方式包含数学:$ ... $用于内联数学,$$ ... $$用于显示数学.执行Markdown单元格时,LaTeX部分会自动在HTML输出中呈现为具有高质量排版的方程式.这是由MathJax实现的,它支持大量的LaTeX功能

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

  • Udacity 页面的链接不再有效。 (2认同)

lin*_*cao 33

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

$$a = b + c$$ (line break after the equation)
Run Code Online (Sandbox Code Playgroud)

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

$a = b + c$   (no line break after the equation)
Run Code Online (Sandbox Code Playgroud)


joe*_*oeP 22

您可以选择要标记的单元格,然后编写由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}""")
Run Code Online (Sandbox Code Playgroud)

或者这样做:

%%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}
Run Code Online (Sandbox Code Playgroud)

更多信息请参见此链接

  • 你的链接现在已经破了 (4认同)

Cha*_*les 12

我不能否认我没有偏见,但我更喜欢使用prettyPy来编写完整的LaTeX表达式.

例:

在此输入图像描述

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

  • 我的意思是暗示我开发了该程序包。我调整了答案以明确说明这一点。 (2认同)

inf*_*ged 9

因为,即使在使用%% 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

\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}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

  • latex_envs notebook 扩展不能使用外部 LaTeX 包或样式;它不包括编译器,而只是识别一些关键字、结构并进行适当的 html 替换。感谢您使用它。现在使用 pip 安装 ipython-contrib 笔记本扩展要容易得多。 (2认同)

Tok*_*rby 9

minrk给出的答案(包括完整性在内)是不错的选择,但还有另一种我更喜欢的方式。

您也可以LaTeX通过%%latex在文本单元格中键入第一行来呈现整个单元格。这对您很有用

  • 需要更多控制权,
  • 不仅需要数学环境,
  • 或者如果您要在一个单元格中写很多数学。

明克的答案:


IPython Notebook使用MathJax在html / markdown中渲染LaTeX。只需将LaTeX数学运算放到里面即可$$

$$c = \sqrt{a^2 + b^2}$$
Run Code Online (Sandbox Code Playgroud)

sqrt

或者,您可以显示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'))
Run Code Online (Sandbox Code Playgroud)

积分


shi*_*hin 7

我在这篇文章中写了如何在 Jupyter Notebook 中编写 LaTeX

您需要将它们括在美元 ($) 符号中。

  • 要向左对齐,请使用一个美元 ($) 符号。

$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  $$
Run Code Online (Sandbox Code Playgroud)
  • 矩阵

在此处输入图片说明

  • 分段函数
$$
\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}
$$
Run Code Online (Sandbox Code Playgroud)

上面的代码将创建这个。

在此处输入图片说明

如果您想知道如何为方程添加编号和对齐方程,请阅读本文了解详细信息


Ero*_*oyd 5

如果你的主要目标是做数学,SymPy 提供了一种很好的方法处理看起来很棒的功能性乳胶表达式。