352 votes

Comment écrire LaTeX dans le notebook IPython ?

Comment puis-je afficher du code LaTeX dans un cahier IPython?

4 votes

@duffymo Quel que soit votre opinion sur LaTeX, c'est une assez bonne question. Jetez un coup d'œil à ce qu'est réellement le bloc-notes IPython. Peut-être que cela vous aidera si je vous dis que c'est un peu comme orgmode sous stéroïdes (mais malheureusement sans un éditeur agréable, et avec Markdown au lieu de LaTeX, d'où la question de l'OP).

1 votes

Je l'ignore, merci pour l'instruction, Konrad.

2 votes

Et, juste pour être clair, j'adore LaTeX. (Je l'ai utilisé pour mettre en forme ma thèse.) Aucune objection; j'ai juste échoué à comprendre le problème.

333voto

minrk Points 10008

Le carnet IPython utilise MathJax pour rendre le LaTeX à l'intérieur de html/markdown. Il suffit de placer votre formule mathématique LaTeX à l'intérieur de $$.

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

sqrt

Ou vous pouvez afficher la sortie LaTeX / Math depuis Python, comme on peut le voir vers la fin de la visite du carnet:

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

integral

23 votes

Je pense que l'OP veut utiliser LaTeX au lieu de Markdown, plutôt que seulement pour les équations. Je sympathise avec la demande - autant j'aime Markdown, pour les documents complexes j'utiliserais toujours LaTeX.

18 votes

Gotcha. La meilleure solution pour l'instant serait d'utiliser des cellules «raw» au lieu de markdown, et de simplement taper LaTeX comme vous le feriez. Ensuite, utilisez nbconvert pour convertir le fichier ipynb en TeX (code, figures, etc.), et exécutez latex pour le rendre en PDF, etc. Vous n'obtenez pas de TeX rendu en direct dans le navigateur comme avec MathJax / Markdown, mais vous avez toujours TeX / code dans un seul document.

1 votes

Même question mais dans qtconsole

183voto

hochopeper Points 211

Ceci est apparu dans une recherche que je venais de faire, j'ai trouvé une meilleure solution en cherchant un peu plus, les cahiers IPython ont maintenant une magie %%latex qui rend toute la cellule en Latex sans le $$ pour chaque ligne.

Référez-vous à la visite guidée du cahier pour Système d'affichage riche

43 votes

Dans Jupyter, cela ne fonctionne pas dans une cellule de markdown mais ça fonctionne dans une cellule de code.

3 votes

Maintenant fonctionne sur Jupiter. J'ai mis %%latex dans une cellule, et j'importe le from IPython.display import Latex. Après cela, le cahier Jupyter reconnaît la notation Latex.

36voto

user2956795 Points 71

Utilisez $$ si vous voulez que votre formule mathématique apparaisse sur une seule ligne, par exemple,

$$a = b + c$$ (saut de ligne après l'équation)

Si vous n'avez pas besoin d'un saut de ligne après la formule mathématique, utilisez un seul signe dollar $, par exemple,

$a = b + c$   (pas de saut de ligne après l'équation)

24voto

T D Points 56

Vous pouvez choisir une cellule pour être en markdown, puis écrire du code latex qui est interprété par mathjax, comme l'ont dit certains répondants ci-dessus.

Alternativement, la section Latex du tutoriel du calepin iPython explique bien cela.

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 sont disponibles dans ce lien

4 votes

Votre lien est maintenant cassé

1 votes

15voto

Charlie Points 89

J'ai développé prettyPy, qui offre une belle façon d'imprimer des équations. Malheureusement, ce n'est pas performant et nécessite des tests.

Exemple:

entrer la description de l'image ici

Il est vrai que sympy est une excellente alternative et bien que prettyPy ne permette pas d'évaluer les expressions, l'initialisation des variables n'est pas nécessaire.

2 votes

Tout ce que je voulais dire, c'était d'impliquer que j'avais développé le package. J'ai ajusté ma réponse pour le dire explicitement.

1 votes

Félicitations pour mettre le code dans le domaine public. Je vais supprimer mon commentaire (maintenant) obsolète.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X