【问题标题】:How do I use Latex in a Jupyter notebook inside Visual Studio code?如何在 Visual Studio 代码中的 Jupyter 笔记本中使用 Latex?
【发布时间】:2020-11-02 20:21:31
【问题描述】:

我已经看到了一些与这个问题相关的其他链接,如下所述:

  1. How to write LaTeX in IPython Notebook?
  2. https://towardsdatascience.com/write-markdown-latex-in-the-jupyter-notebook-10985edb91fd
  3. https://colab.research.google.com/drive/18_2yFdH8G-6NXY_7fTcshMoScgJ-SYac#scrollTo=go3imAWqE9au

但是,在 Jupyter notebook 中使用 Latex 代码时,我仍然遇到一些问题。

例如,

\begin{align*}
  f(x) &= x^2\\
  g(x) &= \frac{1}{x}\\
  F(x) &= \int^a_b \frac{1}{3}x^3
\end{align*}

这可以像Markdown 一样正常工作,但是

\begin{equation*}
  f(x) &= x^2\\
  g(x) &= \frac{1}{x}\\
  F(x) &= \int^a_b \frac{1}{3}x^3
\end{equation*}

没有。

在尝试使用以下内容创建有序列表时

\begin{enumerate}
  \item The labels consists of sequential numbers.
  \item The numbers starts at 1 with every call to the enumerate environment.
\end{enumerate}

但是,$\textbf{This is a bold text.}$ 有效。

这真的让我很困惑我可以使用什么以及什么。有什么方法可以让我在 Visual Studio 代码中只使用 Latex 代码(而不是 HTML 或其他代码)来格式化我的文本和方程式,而不用担心哪些会起作用,哪些不起作用?

【问题讨论】:

    标签: visual-studio-code jupyter-notebook formatting latex markdown


    【解决方案1】:

    简短而实用的答案是:你不能。

    当您在 Markdown 单元格中键入 $ a^2 $ 之类的内容时,Jupyter Notebook 实际所做的是将其发送到名为 MathJax 的库中。反过来,Mathjax 编译您使用标准 LaTeX 编译器键入的 TeX 代码。相反,它只是寻找数学环境并尝试将类似 TeX 的语法处理成 MathJax 可以理解的东西。

    在 LaTeX 中潜水

    (La)TeX 中有两种模式:文本模式和数学模式,由 TeX 编译器分别处理。例如,打开您的 TeX 编辑器并尝试编译以下代码。

    \documentclass{article}
    \begin{document}
    a^2
    
    $ ação $
    \end{document}
    

    您将收到该错误:

    ! Missing $ inserted.
    <inserted text> 
    $
    l.4     
       
    I've inserted a begin-math/end-math symbol since I think
    you left one out. Proceed, with fingers crossed.
    
    Missing character: There is no ç (U+00E7) in font cmmi10!
    Missing character: There is no ç (U+00E7) in font cmmi10!
    Missing character: There is no ã (U+00E3) in font cmmi10!
    Missing character: There is no ã (U+00E3) in font cmmi10!
    

    它告诉你(1)你不能在文本模式下使用^; (2) 您不能在数学模式下使用 unicode 字符,例如 çã

    在这一点上,重要的是要记住 align 环境是由 amsmathmathtools 包提供的,并且不存在于“普通”LaTeX 中

    返回 MathJax

    与真正的 LaTeX 编译器不同,MathJax 没有实现整个 TeX 宏领域,而只实现了与数学模式相关的那些(顾名思义)。来自documentation

    请注意,TeX 输入处理器仅实现 TeX 和 LaTeX 的数学模式宏,而不是文本模式宏。 MathJax 期望您使用标准的 HTML 标记来处理页面文本的格式设置;它只处理数学。因此,例如,MathJax 没有实现 \emph\begin{enumerate}...\end{enumerate} 或其他文本模式宏或环境。您必须使用 HTML 来处理此类格式化任务。如果你需要一个 LaTeX 到 HTML 的转换器,你应该考虑other options

    但是,也有一些例外。 TeX 输入处理器的default configuration 允许检测数学模式之外的环境,因此可以正确排版那些与数学相关的环境(equationalignmatrix 等)。回想一下,LaTeX 没有实现开箱即用的align,而 MathJax 可以。

    那么错误的equation 环境呢?

    关于你的 equation 环境,它更像是一个 LaTeX 的东西。 equation 环境不支持换行符 (\\) 也不支持 &amp;(第一个我无法解释确切原因,但肯定有人在 TeX SE 可以),所以你的输入是 invalid em>。

    【讨论】:

      【解决方案2】:

      您现在可以使用最新版本的 VS Code。该功能仍处于预览阶段(截至撰写时),因此您必须在 settings.json 中添加 "notebook.experimental.useMarkdownRenderer": true 来启用它

      重新启动 VS Code 并尝试 $$y=x^2$$ 并按 ctrl+enter 以查看它的渲染。我认为现在这个等式需要单独在一行上。

      这里是公告:https://code.visualstudio.com/updates/v1_55#_preview-features

      【讨论】:

        猜你喜欢
        • 2020-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 1970-01-01
        • 2016-07-24
        • 1970-01-01
        相关资源
        最近更新 更多