Como posso exibir o código LaTeX em um notebook IPython?
Como posso exibir o código LaTeX em um notebook IPython?
Respostas:
Isso surgiu em uma pesquisa que eu estava fazendo, encontrou uma solução melhor com mais pesquisas, os notebooks IPython agora têm uma %%latex
mágica que torna a célula inteira de látex sem o $$
invólucro de cada linha.
Consulte o tour do notebook para o Rich Display System
O notebook IPython usa MathJax para renderizar o LaTeX dentro de html / markdown. Basta colocar a sua matemática LaTeX dentro $$
.
$$c = \sqrt{a^2 + b^2}$$
Ou você pode exibir a saída LaTeX / Math do Python, como visto no final do tour do 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
como a primeira linha em uma célula de texto.
O blog da Udacity tem o melhor LaTeX Primer que eu já vi: mostra claramente como usar os comandos do LaTeX de maneira fácil de ler e fácil de lembrar !! Altamente recomendado .
Este link possui excelentes exemplos mostrando o código e o resultado renderizado!
Você pode usar este site para aprender rapidamente como escrever LaTeX por exemplo.
E, aqui está uma referência rápida para comandos / símbolos do LaTeX .
embutido, envolva: $
The equation used depends on whether the the value of
$Vmax$ is R, G, or B.
bloco, envolva: $$
$$H← 0 + \frac{30(G−B)}{Vmax−Vmin} , if Vmax = R$$
bloco, envolva:\begin{equation}
e\end{equation}
\begin{equation}
H← 60 + \frac{30(B−R)}{Vmax−Vmin} , if Vmax = G
\end{equation}
bloco, envolva:\begin{align}
e\end{align}
\begin{align}
H←120 + \frac{30(R−G)}{Vmax−Vmin} , if Vmax = B
\end{align}
Célula LaTex: %%latex
comando mágico transforma a célula inteira em uma célula 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}
Objeto matemático a ser transmitido em uma string LaTeX não processada :
from IPython.display import Math
Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
Aula de látex . Nota: você deve incluir os delimitadores. Isso permite que você use outros modos de LaTeX, como 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}""")
(desculpe, nenhum exemplo aqui, apenas os documentos)
Células não processadas As células não processadas fornecem um local no qual você pode gravar a saída diretamente. As células brutas não são avaliadas pelo notebook. Quando passadas
nbconvert
, as células brutas chegam no formato de destino sem modificação. Por exemplo, isso permite digitar o LaTeX completo em uma célula não processada , que só será renderizada pelo LaTeX após a conversão pornbconvert
.
Para células Markdown, conforme citado em documentos do Jupyter Notebook :
Nas células Markdown, você também pode incluir matemática de maneira direta, usando a notação padrão do LaTeX: $ ... $ para matemática embutida e $$ ... $$ para matemática exibida . Quando a célula Markdown é executada, as partes do LaTeX são renderizadas automaticamente na saída HTML como equações com tipografia de alta qualidade. Isso é possível graças ao MathJax, que suporta um grande subconjunto da funcionalidade LaTeX
Os ambientes matemáticos padrão definidos pelo LaTeX e pelo AMS-LaTeX (o pacote amsmath) também funcionam, como \ begin {equation} ... \ end {equation} e \ begin {align} ... \ end {align} . Novas macros do LaTeX podem ser definidas usando métodos padrão, como \ newcommand, colocando-os em qualquer lugar entre delimitadores matemáticos em uma célula Markdown. Essas definições estão disponíveis no restante da sessão do IPython.
Use $$ se quiser que sua matemática apareça em uma única linha, por exemplo,
$$a = b + c$$ (line break after the equation)
Se você não precisar de uma quebra de linha após a matemática, use um único cifrão $, por exemplo,
$a = b + c$ (no line break after the equation)
Você pode escolher uma célula a ser remarcada e depois escrever um código de látex que seja interpretado pelo mathjax, como um dos respondentes disse acima.
Como alternativa, a seção Látex do tutorial do notebook iPython explica isso bem.
Você pode fazer:
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 faça o seguinte:
%%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}
Mais informações encontradas neste link
Eu desenvolvi prettyPy , que oferece uma boa maneira de imprimir equações. Infelizmente, não é de alto desempenho e precisa ser testado.
Exemplo:
É verdade que o sympy é uma ótima alternativa e, embora o prettyPy não permita avaliar expressões, a inicialização de variáveis não é necessária.
Como não consegui usar todos os comandos de látex no Code, mesmo depois de usar a palavra-chave %% latex ou o limitador $ .. $, instalei as nbextensions pelas quais poderia usar os comandos de látex no Markdown. Depois de seguir as instruções aqui: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md e, em seguida, reinicie o Jupyter e o localhost: 8888 / nbextensions e ative "Latex Environment for Jupyter ", eu poderia executar muitos comandos Latex. Os exemplos estão aqui: 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}
Como você vê, ainda não consigo usar o usepackage. Mas talvez seja melhorado no futuro.
A resposta dada pelo minrk (incluída para ser completa) é boa, mas há outra maneira de eu gostar ainda mais.
Você também pode renderizar uma célula inteira LaTeX
digitando %%latex
como a primeira linha em uma célula de texto. Isso é útil se você
resposta de minrk :
O notebook IPython usa MathJax para renderizar o LaTeX dentro de html / markdown. Basta colocar a sua matemática LaTeX dentro
$$
.$$c = \sqrt{a^2 + b^2}$$
Ou você pode exibir a saída LaTeX / Math do Python, como visto no final do tour do 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 seu objetivo principal é fazer contas, o SymPy fornece uma excelente abordagem para expressões funcionais de látex que parecem ótimas.
Eu escrevi como escrever LaTeX no Jupyter Notebook neste artigo.
Você precisa colocá-los em sinais de dólar ($).
$P(A)=\frac{n(A)}{n(U)}$
$$P(A)=\frac{n(A)}{n(U)}$$
Use \limits
para \lim
, \sum
e \int
para adicionar limites para o topo e no fundo de cada signo.
Use uma barra invertida para escapar de palavras especiais do LaTeX, como símbolos matemáticos, palavras latinas, texto etc.
Tente este.
$$\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}
$$
O código acima criará isso.
Se você quiser saber como adicionar numeração a equações e alinhar equações, leia este artigo para obter detalhes .
Usar a sintaxe do LaTeX diretamente em uma célula Markdown funciona para mim. Estou usando o Jypiter 4.4.0.
Não preciso usar o %%latex
comando mágico, insisto, simplesmente uma célula de remarcação:
\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}
Renderiza para:
Me deparei com esse problema algum dia usando colab. E acho que a maneira mais indolor é apenas executar esse código antes da impressão. Tudo funciona como charme então.
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()
O resultado fica assim:
Estou usando os notebooks Jupyter. Eu tive que escrever
%%latex
$sin(x)/x$
para obter uma fonte LaTex.