Come posso visualizzare il codice LaTeX in un notebook IPython?
Come posso visualizzare il codice LaTeX in un notebook IPython?
Risposte:
Questo è emerso da una ricerca che stavo facendo, ha trovato una soluzione migliore con qualche ricerca in più, i notebook IPython ora hanno una %%latex
magia che rende l'intera cella Latex senza il $$
wrapper per ogni riga.
Fare riferimento al tour del notebook per Rich Display System
Il notebook IPython utilizza MathJax per eseguire il rendering di LaTeX all'interno di html / markdown. Inserisci la tua matematica LaTeX all'interno $$
.
$$c = \sqrt{a^2 + b^2}$$
Oppure puoi visualizzare l'output LaTeX / Math da Python, visto verso la fine del tour del notebook :
from IPython.display import display, Math, Latex
display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
LaTeX
digitando %%latex
come prima riga in una cella di testo.
Il blog di Udacity ha il miglior primer LaTeX che abbia mai visto: mostra chiaramente come usare i comandi LaTeX in modo facile da leggere e da ricordare !! Altamente raccomandato .
Questo collegamento ha eccellenti esempi che mostrano sia il codice, sia il risultato reso!
È possibile utilizzare questo sito per imparare rapidamente come scrivere LaTeX con l'esempio.
Ed ecco un rapido riferimento per i comandi / simboli LaTeX .
in linea, avvolgere in: $
The equation used depends on whether the the value of
$Vmax$ is R, G, or B.
bloccare, avvolgere in: $$
$$H← 0 + \frac{30(G−B)}{Vmax−Vmin} , if Vmax = R$$
bloccare, avvolgere in:\begin{equation}
e\end{equation}
\begin{equation}
H← 60 + \frac{30(B−R)}{Vmax−Vmin} , if Vmax = G
\end{equation}
bloccare, avvolgere in:\begin{align}
e\end{align}
\begin{align}
H←120 + \frac{30(R−G)}{Vmax−Vmin} , if Vmax = B
\end{align}
LaTex Cell: il %%latex
comando magico trasforma l' intera cella in una cella 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}
Oggetto matematico da passare in una stringa LaTeX non elaborata :
from IPython.display import Math
Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
Classe di lattice . Nota: devi includere tu stesso i delimitatori. Ciò consente di utilizzare altre modalità LaTeX come 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}""")
(scusa, nessun esempio qui, solo i documenti)
Celle grezze Le celle grezze forniscono un posto in cui è possibile scrivere direttamente l'output. Le celle grezze non vengono valutate dal notebook. Una volta passate
nbconvert
, le celle non elaborate arrivano nel formato di destinazione non modificato. Ad esempio, ciò consente di digitare LaTeX completo in una cella non elaborata , che verrà renderizzata da LaTeX solo dopo la conversionenbconvert
.
Per Markdown Cells, come citato dai documenti di Jupyter Notebook :
All'interno delle celle di Markdown, puoi anche includere la matematica in modo semplice, usando la notazione LaTeX standard: $ ... $ per la matematica in linea e $$ ... $$ per la matematica visualizzata . Quando viene eseguita la cella Markdown, le parti LaTeX vengono automaticamente visualizzate nell'output HTML come equazioni con tipografia di alta qualità. Ciò è reso possibile da MathJax, che supporta un ampio sottoinsieme di funzionalità LaTeX
Anche gli ambienti matematici standard definiti da LaTeX e AMS-LaTeX (il pacchetto amsmath) funzionano, come \ begin {equation} ... \ end {equation} e \ begin {align} ... \ end {align} . Le nuove macro LaTeX possono essere definite usando metodi standard, come \ newcommand, posizionandole ovunque tra i delimitatori matematici in una cella Markdown. Queste definizioni sono quindi disponibili per tutto il resto della sessione IPython.
Usa $$ se desideri che la tua matematica appaia in una sola riga, ad es.
$$a = b + c$$ (line break after the equation)
Se non hai bisogno di un'interruzione di riga dopo la matematica, usa il simbolo del dollaro singolo $, ad es.
$a = b + c$ (no line break after the equation)
Puoi scegliere una cella da contrassegnare, quindi scrivere il codice in lattice che viene interpretato da mathjax, come dice uno dei rispondenti sopra.
In alternativa, la sezione Latex del tutorial del notebook iPython lo spiega bene.
Puoi fare:
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}""")
o fare questo:
%%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}
Maggiori informazioni trovate in questo link
Ho sviluppato prettyPy , che offre un buon modo per stampare equazioni. Sfortunatamente, non è performante e necessita di test.
Esempio:
Certo, sympy è un'ottima alternativa e sebbene prettyPy non consenta di valutare espressioni, l'inizializzazione variabile non è richiesta.
Da allora, non sono stato in grado di utilizzare tutti i comandi di latex in Code anche dopo aver usato la parola chiave %% latex o il limitatore $ .. $, ho installato le nbextension attraverso le quali avrei potuto usare i comandi di latex in Markdown. Dopo aver seguito le istruzioni qui: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md e quindi riavviare Jupyter e quindi localhost: 8888 / nbextensions e quindi attivare "Latex Environment for Jupyter ", potrei eseguire molti comandi in lattice. Gli esempi sono qui: 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}
Come vedi, non sono ancora in grado di usare il pacchetto. Ma forse sarà migliorato in futuro.
La risposta data da minrk (inclusa per completezza) è buona, ma c'è un altro modo che mi piace ancora di più.
Puoi anche eseguire il rendering di un'intera cella LaTeX
digitando %%latex
come prima riga in una cella di testo. Questo è utile se tu
La risposta di minrk :
Il notebook IPython utilizza MathJax per eseguire il rendering di LaTeX all'interno di html / markdown. Inserisci la tua matematica LaTeX all'interno
$$
.$$c = \sqrt{a^2 + b^2}$$
Oppure puoi visualizzare l'output LaTeX / Math da Python, visto verso la fine del tour del notebook :
from IPython.display import display, Math, Latex display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))
Se il tuo obiettivo principale è fare matematica, SymPy fornisce un eccellente approccio alle espressioni funzionali in lattice che sembrano grandi.
In questo articolo ho scritto come scrivere LaTeX su Jupyter Notebook .
Devi racchiuderli in segni di dollaro ($).
$P(A)=\frac{n(A)}{n(U)}$
$$P(A)=\frac{n(A)}{n(U)}$$
Utilizzare \limits
per \lim
, \sum
e \int
per aggiungere limiti alla parte superiore e la parte inferiore di ogni segno.
Usa una barra rovesciata per sfuggire a parole speciali LaTeX come simboli matematici, parole latine, testo, ecc.
Prova questo.
$$\overline{x}=\frac{\sum \limits _{i=1} ^k f_i x_i}{n} \text{, where } n=\sum \limits _{i=1} ^k f_i $$
$$
\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}
$$
Il codice sopra creerà questo.
Se vuoi sapere come aggiungere la numerazione alle equazioni e allineare le equazioni, leggi questo articolo per i dettagli .
L'uso della sintassi LaTeX direttamente in una cella Markdown funziona per me. Sto usando Jypiter 4.4.0.
Non devo usare il %%latex
comando magico, insisto, semplicemente una cella di markdown:
\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}
Rende a:
Un giorno ho riscontrato questo problema usando colab. E trovo che il modo più indolore sia semplicemente eseguire questo codice prima di stampare. Allora tutto funziona come un fascino.
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()
Il risultato è simile al seguente:
Sto usando i quaderni Jupyter. Ho dovuto scrivere
%%latex
$sin(x)/x$
per ottenere un carattere LaTex.