web-dev-qa-db-ja.com

IPython NotebookでLaTeXを書く方法?

IPython NotebookにLaTeXコードを表示するにはどうすればいいですか?

249
KostasA

これは私が今行っていた検索で思いつきました。さらに検索することでより良い解決策を見つけました。IPythonノートブックは%%latexラッパーなしでセル全体をラテックスにする$$マジックを持っています。

Rich Display System のノートブックツアーを参照してください。

119
hochopeper

IPythonノートブックは MathJax を使ってLaTeXをhtml/markdownの中にレンダリングします。 LaTeXの数学を$$の中に入れるだけです。

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

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'))

integral

254
minrk

LaTeXリファレンス:

Udacityのブログには Best LaTeX Primerがあります:LaTeXコマンドの使用方法を明確に示しています読みやすく、マナーも覚えやすい!! 強くお勧めします

このリンクには優れた例がありますコードとレンダリング結果の両方を表示しています!
このサイトを使用して、LaTeXの例をどのように書くかをすばやく学ぶことができます。

そして、ここに簡単な LaTeXのリファレンス コマンド/シンボルがあります。


要約するには:Jupyter/IPythonでLaTeXを示すさまざまな方法:

Markdown Cellsの場合:

インライン、ラップ:$

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 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オブジェクト raw LaTeX string

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

ラテックスクラス。注:区切り文字を自分で含める必要があります。これにより、eqnarrayなどの他の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}""")

ドキュメント生セル:

(申し訳ありませんが、ここでは例はありません。ドキュメントのみです)

生セル生セルは、出力を直接書き込むことができる場所を提供します。生のセルはノートブックによって評価されません。 nbconvertを通過すると、未加工のセルは変更されずに宛先形式で到着します。たとえば、これにより完全なLaTeXを生のセルに入力できます。これは、nbconvertによる変換後にのみLaTeXによってレンダリングされます。

追加文書:

Jupyter Notebook docs から引用したMarkdown Cellsの場合:

Markdownセル内には、標準のLaTeX表記を使用して、簡単な方法で数学を含めることもできます。インライン数学の場合は$...$および $$ ...表示された数学の$$。 Markdownセルが実行されると、LaTeXの部分は、高品質の文字体裁の方程式としてHTML出力に自動的にレンダリングされます。これは、LaTeX機能の大規模なサブセットをサポートするMathJaxによって可能になりました

\begin{equation}...\end{equation}、および\begin{align}...\end{align}。新しいLaTeXマクロは、\ newcommandなどの標準的な方法を使用して、Markdownセルの数学区切り記号の間の任意の場所にマクロを配置することで定義できます。これらの定義は、IPythonセッションの残りの部分で利用できます。

62
SherylHohman

数学を単一行に表示する場合は、$$を使用します。たとえば、

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

数学の後に改行が必要ない場合は、シングルドル記号$を使用してください。

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

マークダウンするセルを選択してから、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}

これ以上の情報が見つかりました link

20
T D

偏見がないことは否定できませんが、 prettyPy を使用して完全なLaTeX式を書き出すことをお勧めします。

例:

enter image description here

確かに、 sympy は素晴らしい代替手段であり、prettyPyは式の評価を許可しませんが、変数の初期化は必要ありません。

9
Charles

%% latexキーワードや$ .. $リミッタを使用した後でも、Code内のすべてのlatexコマンドを使用できなかったので、Markdownでlatexコマンドを使用できるようにするためのnbextensionsをインストールしました。ここでの指示に従った後: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md そしてJupyterを再起動してからlocalhostを起動してからアクティブにする"Jupyterのためのラテックス環境"、私は多くのラテックスコマンドを実行することができました。例はここにあります: 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

7
infoclogged

minrk (完全性のために含まれています)によって与えられる答えは良いです、しかし私がさらにもっと好きな別の方法があります。

テキストセルの最初の行に%%latexを入力して、セル全体をLaTeXとしてレンダリングすることもできます。あなたにはこれは便利です

  • もっと制御したい、
  • 単なる数学環境以上のものが欲しい
  • あるいはあなたが一つのセルにたくさんの数学を書くつもりなら。

minrk の答え:


IPythonノートブックは MathJax を使ってLaTeXをhtml/markdownの中にレンダリングします。 LaTeXの数学を$$の中に入れるだけです。

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

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'))

integral

4
Toke Faurby

マークダウンセルでLaTeX構文を直接使用するとうまくいきます。 Jypiter 4.4.0を使用しています。

%%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}

レンダリング先:

enter image description here

2

あなたの主な目的が数学をすることであるならば、SymPyは 優れたアプローチ 見栄えのする機能的なラテックス表現に/を提供します。

2
Eron Lloyd

Jupyter Notebooksを使用しています。書かなければなりませんでした

%%latex
$sin(x)/x$

laTexフォントを取得します。

1
user1402208

私はいつの日か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()

結果は次のようになります。

enter image description here

0
Ray