jupyter 笔记本在转换为 pdf 期间崩溃 Latex

时间:2021-03-23 13:50:53

标签: python jupyter-notebook latex markdown

当我尝试在 jupyter notebook markdown cell 中编写数学函数时,在使用 Latex 转换为 PDF 的过程中,它给出了数百行不完整的不可读错误消息。如果我删除这个数学函数,它就可以正常工作,即使使用其他数学函数也是如此。似乎有一些奇怪的相互作用与乳胶试图阅读这个。有人能注意到为什么吗?

$$
m_{M,n}(x;\Theta_{1},..,\Theta_{M},D_{n}) = \left\{
    \begin{array}\\
        1 & if \frac{1}{M} \sum \limits _{j=1} ^{M} m_{n}(x;\Theta_{j},D_{n}) > 1/2 \\
        0 & otherwise
    \end{array}
\right.
$$

The output is supposed to look like this

1 个答案:

答案 0 :(得分:1)

您的 LaTeX 代码无效。 array 环境期望传递一个对齐参数,例如 \begin{array}{ll} 表示两列左对齐。

此外,第一行中的 \\ 根本不是必需的。

工作代码是:

$$
    m_{M,n}(x;\Theta_{1},..,\Theta_{M},D_{n}) = \left\{
        \begin{array}{ll}
            1 & \mathrm{if}\; \frac{1}{M} \sum \limits _{j=1} ^{M}  m_{n}(x;\Theta_{j},D_{n}) > 1/2 \\
            0 & \mathrm{otherwise}
        \end{array}
    \right.
$$

Result

Result

但为什么它可以在 Jupyter Notebook 中工作?

这是因为 Jupyter Notebook 使用 MathJax,另一个 TeX 实现,当您不通知 cc 对齐时,默认情况下使用 array。因此,Jupyter Notebook(或 MathJax)真的不在乎您的代码是否缺少它。

然而,在 LaTeX 方面,情况完全不同。在 LaTeX 中,任何用 {} 传递的参数都是必需的(与 [] 相反,这是可选的),所以当你写 \begin{array}\\ 时,TeX 试图扩展 \\ 标记作为对齐参数,这显然会引发错误(首先是因为 \\ 不是预期的,然后是因为您只传递了一个参数并试图使用两列)。