Как написать LaTeX в ноутбуке IPython?

Как я могу отобразить код LaTeX в записной книжке IPython?

Ответ 1

Это произошло в результате поиска, который я только что делал, нашел лучшее решение с еще большим количеством поисков. В ноутбуках IPython теперь есть магия %%latex, которая делает всю ячейку Latex без оболочки $$ для каждой строки.

Обратитесь к обсуждению ноутбука за Rich Display System

Ответ 2

IPython notebook использует MathJax для рендеринга LaTeX внутри html/markdown. Просто поместите свою математику LaTeX внутри $$.

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

sqrt

Или вы можете отображать вывод LaTeX/Math из Python, как показано в конце обзор ноутбука:

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

integral

Ответ 3

Ссылки LaTeX:

Блог Udacity имеет Лучший LaTeX Primer. Я видел: это ясно показывает, как использовать команды LaTeX в удобном для чтения и легко запоминаемом виде! Очень рекомендуется.

Эта ссылка имеет отличные примеры, показывающая как код, так и полученный результат!
Вы можете использовать этот сайт, чтобы быстро научиться писать LaTeX на примере.

А вот вот краткая Ссылка на LaTeX команды/символы.


Обобщение: различные способы указать LaTeX в Jupyter/IPython:

Примеры для 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}

Examples для кодовых ячеек:

LaTex Cell: %%latex волшебная команда превращает всю ячейку в ячейку 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}

Математический объект, чтобы передать строку raw LaTeX:

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

Класс латекс. Примечание. Вы должны включать разделители самостоятельно. Это позволяет использовать другие режимы LaTeX, такие как 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}""")

Документы для Необработанные ячейки:

(извините, здесь нет примера, только документы)

Сырые клетки Необработанные ячейки предоставляют место, в котором вы можете напрямую писать вывод. Сырые ячейки не оцениваются ноутбуком. Когда он проходит через nbconvert, необработанные ячейки поступают в формат назначения без изменений. Например, это позволяет набирать полный LaTeX в исходную ячейку, которая будет отображаться только LaTeX после преобразования на nbconvert.

Дополнительная документация:

Для Markdown Cells, как указано в Jupyter Notebook docs:

Внутри ячеек Markdown вы также можете включить математику простым способом, используя стандартную нотацию LaTeX: $... $для встроенной математики и $$... $$ для отображения математика. Когда ячейка Markdown выполняется, части LaTeX автоматически отображаются на выходе HTML как уравнения с высококачественной типографикой. Это стало возможным благодаря MathJax, который поддерживает большой набор функций LaTeX

Также работают стандартные среды математики, определенные LaTeX и AMS-LaTeX (пакет amsmath), такие как \begin {equation}...\end {equation} и \begin {выравнивать}...\конец {выравнивания}. Новые макросы LaTeX могут быть определены с использованием стандартных методов, таких как \newcommand, путем размещения их в любом месте между разделителями-математиками в ячейке Markdown. Эти определения затем доступны в течение всего сеанса IPython.

Ответ 4

Используйте $$, если вы хотите, чтобы ваша математика отображалась в одной строке, например,

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

Если вам не нужен разрыв строки после математики, используйте один знак доллара $, например,

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

Ответ 5

Вы можете выбрать ячейку для уценки, а затем написать латексный код, который интерпретируется mathjax, как сказал один из респондентов выше.

В качестве альтернативы Latex-раздел учебника для ноутбука iPython объясняет это хорошо.

Вы можете:

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}

Дополнительная информация найдена в этой ссылке

Ответ 6

Я разработал prettyPy, который предлагает хороший способ печати уравнения. К сожалению, он не работает и нуждается в тестировании.

Пример:

enter image description here

Конечно, sympy - отличная альтернатива, и, хотя prettyPy не позволяет вычислять выражения, инициализация переменной не требуется.

Ответ 7

Так как я не смог использовать все латексные команды в Code даже после использования ключевого слова %% latex или $.. $limititer, я установил nbextensions, через которые я мог бы использовать команды латекса в Markdown. Следуя инструкциям здесь: https://github.com/ipython-contrib/IPython-notebook-extensions/blob/master/README.md, а затем перезапустите Jupyter, а затем localhost: 8888/nbextensions и затем активируйте "Latex Environment for Jupyter", Я мог запускать много команд Latex. Примеры приведены здесь: 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. Но, возможно, в будущем это будет улучшено.

введите описание изображения здесь

Ответ 8

Ответ, полученный minrk (включен для полноты), хорош, но есть еще один способ, который мне нравится еще больше.

Вы также можете отобразить всю ячейку как LaTeX, введя %%latex в качестве первой строки в текстовой ячейке. Это полезно, если вы

  • требуется больше контроля,
  • хочу больше, чем просто математическую среду,
  • или если вы собираетесь написать много математики в одной ячейке.

minrk ответ:


В ноутбуке IPython используется MathJax для рендеринга LaTeX внутри html/markdown. Просто поместите свою математику LaTeX внутри $$.

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

sqrt

Или вы можете отображать вывод LaTeX/Math из Python, как показано в конец записная книжка тур:

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

integral

Ответ 9

Если ваша основная задача заключается в математике, SymPy обеспечивает отличный подход к функциональным латексным выражениям, которые отлично смотрятся.

Ответ 10

Использование синтаксиса LaTeX непосредственно в ячейке Markdown работает для меня. Я использую 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

Ответ 11

Однажды я столкнулся с этой проблемой, используя колаб. И я считаю, что самый безболезненный способ - запустить этот код перед печатью. Все работает как шарм тогда.

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

Ответ 12

Я использую ноутбуки Jupyter. Я должен был написать

%%latex
$sin(x)/x$

чтобы получить шрифт LaTex.