使用nbconvert转Jupyter Notebook为PDF时出现Missing $ inserted错误
我之前也碰到过一模一样的问题!这种报错不一定是代码块里的特殊字符搞的鬼,还有几个容易被忽略的触发点,你可以逐一排查:
图片文件名/路径的特殊字符:报错信息里明确提到了图片
Other Content Finding Features_10_0.png,虽然下划线本身没问题,但LaTeX对文件名里的空格、括号、&这类字符极度敏感。哪怕是图片路径里有空格,都可能让LaTeX误以为要进入数学模式。你可以把图片文件名改成纯字母数字+下划线的形式,或者把路径里的空格替换成下划线,再重新执行转换命令试试。Markdown单元格中的未转义字符:很多时候问题出在普通的Markdown文本里,而不是代码块。比如你可能写了
foo_bar这样的文本,LaTeX会把下划线当成数学下标标记,需要用反斜杠转义(写成foo\_bar),或者把整个内容用反引号包起来(`foo_bar`)。另外像$、%、&这些字符,哪怕在普通段落里,LaTeX也会当成命令解析,一定要检查所有Markdown单元格有没有这类没处理的字符。代码输出单元格的内容:如果你的Notebook保留了代码运行后的输出(比如打印的日志、生成的带特殊字符的文本),这些输出里的下划线、美元符号等也会被LaTeX误判。你可以先清空所有单元格的输出(Notebook菜单栏→Cell→All Output→Clear),再重新运行转换命令,看看是否解决问题。
LaTeX模板兼容性问题:nbconvert默认的LaTeX模板可能和某些内容不兼容,你可以尝试指定不同的模板来转换,比如执行:
jupyter nbconvert --to pdf --template article "Search and Other Content Finding Features.ipynb"或者自定义一个更简洁的LaTeX模板来适配你的Notebook内容。
内容的提问来源于stack exchange,提问作者fraxture

