首页 文章

如何在IPython Notebook中编写LaTeX?

提问于
浏览
219

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

9 回答

  • 235

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

    请参阅Rich Display System的笔记本电脑之旅

  • 4

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

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

    sqrt

    或者你可以在Python中显示LaTeX / Math输出,如notebook tour末尾所示:

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

    integral

  • 6

    LaTeX参考文献:

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

    This Link has Excellent Examples 显示代码和渲染结果!
    您可以使用此站点快速了解如何通过示例编写LaTeX .

    而且,这是一个快速Reference for LaTeX命令/符号 .


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

    降价单元格示例:

    inline, wrap in: $

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

    block, wrap in: $$

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

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

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

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

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

    代码单元的示例:

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

    %%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 object 传入 raw LaTeX string

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

    Latex 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时,原始单元格以未修改的形式到达目标格式 . 例如,这允许您将完整的LaTeX键入到原始单元格中,该单元格仅在由nbconvert转换后由LaTeX呈现 .

    其他文件:

    对于Markdown Cells,引自Jupyter Notebook docs

    在Markdown单元格中,您还可以使用标准的LaTeX表示法以简单的方式包含数学:$ ... $用于内联数学,$$ ... $$用于显示数学 . 执行Markdown单元格时,LaTeX部分会自动在HTML输出中呈现为具有高质量排版的方程式 . 这是由MathJax实现的,它支持大量的LaTeX功能 . 由LaTeX和AMS-LaTeX(amsmath包)定义的标准数学环境也可以工作,例如\ begin ... \ end ,和\ {开始对准} \ {结束}对齐 . 新的LaTeX宏可以使用标准方法定义,例如\ newcommand,通过将它们放在Markdown单元格中的数学分隔符之间的任何位置 . 然后,在整个IPython会话的其余部分中都可以使用这些定义 .

  • 8

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

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

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

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

    您可以选择要标记的单元格,然后编写由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}
    

    More info found in this link

  • 29

    我可以't deny that I' m没有偏见,但我更喜欢使用prettyPy而不是写出完整的LaTeX表达式 .

    例:

    enter image description here

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

  • 101

    因为,即使在使用%% latex关键字或$ .. $限制器之后,我也无法使用Code中的所有latex命令,我安装了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}
    

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

    enter image description here

  • 2

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

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

    • 想要更多控制,

    • 想要的不仅仅是数学环境,

    • 或者如果你打算在一个单元格中写下很多数学 .

    minrk's answer:


    IPython笔记本使用MathJax在html / markdown中呈现LaTeX . 把你的LaTeX数学放在$$里面 . $$ c = \ sqrt {a ^ 2 b ^ 2} $$
    或者您可以显示Python的LaTeX / Math输出,如笔记本游览结束时所示:来自IPython.display导入显示,Math,Latex
    display(Math(r'F(k)= \ int _ { - \ infty} ^ {\ infty} f(x)e ^ {2 \ pi i k} dx'))

  • 41

    如果您的主要目标是进行数学运算,SymPy将an excellent approach提供给看起来很棒的功能性乳胶表达式 .

相关问题