web-dev-qa-db-fra.com

Comment écrire LaTeX dans IPython Notebook?

Comment puis-je afficher le code LaTeX dans un bloc-notes IPython?

264
KostasA

Ceci est apparu dans une recherche que je venais de faire, a trouvé une meilleure solution avec davantage de recherche. Les ordinateurs portables IPython ont maintenant une magie %%latex qui rend toute la cellule Latex sans le wrapper $$ pour chaque ligne.

Se reporter au carnet de notes pour Rich Display System

127
hochopeper

Le cahier IPython utilise MathJax pour rendre LaTeX à l'intérieur de HTML/Markdown. Il suffit de mettre votre calcul LaTeX dans $$.

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

sqrt

Ou vous pouvez afficher la sortie LaTeX/Math de Python, comme on le voit vers la fin du visite du portable :

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

integral

263
minrk

Références LaTeX:

Le blog d'Udacity contient le Meilleuramorce LaTeX Je l'ai déjà vu: il montre clairement comment utiliser les commandes LaTeX de manière simple à lire et à mémoriser manière !! Fortement recommandé .

Ce lien a d'excellents exemples montrant à la fois le code et le résultat rendu!
Vous pouvez utiliser ce site pour apprendre rapidement à écrire LaTeX par exemple.

Et, voici un rapide référence pour LaTeX commandes/symboles.


Pour résumer: différentes manières d'indiquer LaTeX dans Jupyter/IPython:

Exemples pour les cellules de démarquage:

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{equation}_ et _\end{equation}_

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

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

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

Exemples pour les cellules de code:

Cellule LaTex:%%latex une commande magique transforme le cellule entière en 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}
_

objet mathématique pour passer un chaîne de caractères LaTeX brut:

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

Classe de latex. Remarque: vous devez inclure les délimiteurs vous-même. Cela vous permet d’utiliser d’autres modes LaTeX tels que 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}""")
_

Docs for Cellules brutes:

(désolé, pas d'exemple ici, juste la documentation)

Cellules brutes Les cellules brutes fournissent un emplacement dans lequel vous pouvez écrire directement une sortie. Les cellules brutes ne sont pas évaluées par le bloc-notes. Lorsqu'elles sont transmises via nbconvert, les cellules brutes arrivent dans le format de destination non modifiées. Par exemple, cela vous permet de taper Full LaTeX dans une cellule brute, qui ne sera restitué que par LaTeX après conversion par nbconvert.

Documentation supplémentaire:

Pour les cellules de démarcation, citées de documents Jupyter Notebook :

Dans les cellules de Markdown, vous pouvez également inclure les mathématiques de manière simple, en utilisant la notation LaTeX standard: $ ... $ pour les mathématiques intégrées et $$ ... $$ pour les mathématiques affichées. Lorsque la cellule Markdown est exécutée, les parties LaTeX sont automatiquement rendues dans la sortie HTML sous forme d'équations avec une typographie de haute qualité. Ceci est rendu possible par MathJax, qui supporte un large sous-ensemble de fonctionnalités LaTeX

Les environnements mathématiques standard définis par LaTeX et AMS-LaTeX (le paquet amsmath) fonctionnent également, tels que \ begin {equation} ... ...\end {equation}, et \ begin {align } ...\end {align}. Les nouvelles macros LaTeX peuvent être définies à l'aide de méthodes standard, telles que\newcommand, en les plaçant n'importe où entre les délimiteurs mathématiques dans une cellule Markdown. Ces définitions sont ensuite disponibles dans le reste de la session IPython.

62
SherylHohman

Utilisez $$ si vous souhaitez que vos calculs apparaissent sur une seule ligne, par exemple,

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

Si vous n'avez pas besoin d'un saut de ligne après le calcul, utilisez un seul signe dollar $, par exemple,

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

Vous pouvez choisir une cellule à démarquer, puis écrire du code latex qui sera interprété par mathjax, comme l’a dit l’un des répondants ci-dessus.

Alternativement, la section Latex du didacticiel de l’ordinateur portable iPython explique cela très bien.

Vous pouvez soit faire:

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}""")

ou faire ceci:

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

Plus d'informations trouvées dans ce lien

21
joeP

J'ai développé prettyPy , qui offre un moyen agréable d'imprimer une équation. Malheureusement, il n'est pas performant et doit être testé.

Exemple:

enter image description here

Accordé, sympy est une excellente alternative et bien que prettyPy ne permette pas l'évaluation d'expressions, l'initialisation de variable n'est pas requise.

10
Charles

Depuis, je n’étais pas capable d’utiliser toutes les commandes latex dans Code même après avoir utilisé le mot clé %% latex ou le limiteur $ .. $, j’ai installé les nbextensions à travers lesquelles je pouvais utiliser les commandes latex dans Markdown. Après avoir suivi les instructions suivantes: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md puis redémarrez Jupyter puis localhost: 8888/nbextensions puis en activant "Latex Environment for Jupyter", je pouvais exécuter de nombreuses commandes Latex. Voici des exemples: 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}

Comme vous le voyez, je ne peux toujours pas utiliser usepackage. Mais peut-être sera-t-il amélioré à l'avenir.

enter image description here

8
infoclogged

La réponse donnée par minrk (inclus pour être complet) est bonne, mais il y a une autre façon qui me plait encore plus.

Vous pouvez également rendre une cellule entière sous la forme LaTeX en tapant %%latex en tant que première ligne d'une cellule de texte. Ceci est utile si vous

  • veulent plus de contrôle,
  • veulent plus qu'un environnement mathématique,
  • ou si vous allez écrire beaucoup de maths dans une cellule.

minrk la réponse de:


Le cahier IPython utilise MathJax pour rendre LaTeX à l'intérieur de HTML/Markdown. Il suffit de mettre votre calcul LaTeX dans $$.

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

sqrt

Ou vous pouvez afficher la sortie LaTeX/Math de Python, comme on le voit vers la fin du visite du portable :

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

integral

5
Toke Faurby

Si votre objectif principal est de faire des calculs, SymPy fournit ne excellente approche des expressions fonctionnelles en latex qui ont fière allure.

3
Eron Lloyd

Utiliser la syntaxe LaTeX directement dans une cellule de Markdown me convient. J'utilise Jypiter 4.4.0.

Je n'ai pas besoin d'utiliser la commande magique %%latex, j'insiste, simplement une cellule de démarquage:

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

Rend à:

enter image description here

2
Stephane Rolland

Je suis tombé sur ce problème un jour en utilisant colab. Et je trouve que le moyen le plus simple est d’exécuter ce code avant l’impression. Tout fonctionne comme un charme alors.

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

Le résultat ressemble à ceci:

enter image description here

1
Ray

J'utilise des cahiers Jupyter. Je devais écrire

%%latex
$sin(x)/x$

obtenir une police LaTex.

1
user1402208