Jupyter notebook LaTeX环境 无法复制粘贴图片解决

本文介绍了在使用 Jupyter Notebook 的 LaTeX 插件时遇到的无法复制粘贴图片的问题及解决方法。通过修改 latex_envs.js 文件,避免插件覆盖 Markdown 的图片渲染,从而实现 LaTeX 环境与图片粘贴功能共存。

简单的说呢,作者经常使用 jupyter notebook 里一个 LaTeX 环境的插件,对于自己编写数学公式写入到 jupyter notebook 的 Markdown cell 里很有帮助。还有一些附加功能,比如会自动帮你预测 LaTeX 指令:\textbf, \textit 等。 还可以自动帮你 结束括号,引号 {}, "", $$ 等。其次,点一下工具栏的equation 就会自动帮你写 \begin{equation} \end{equation}... 还是比较方便的。

那么问题来了,在启用这个插件后,作者发现自己没有办法在 Markdown cell 里面复制粘贴图片。 我们都知道保存一个图片到一个路径,再用方程引用来显示图片很麻烦。 Jupyter notebook 是支持, CTRL +C 复制图片, 再CTRL+V 粘贴来直接显示图片的。

具体是通过在 Markdown cell 里粘贴,自动完成一行 ![Image.png](attachment:image.png) 来实现的。 可是在 LaTeX 这个插件启用的时候,![image]...会显示图片失效。

看了一眼Github, 原因是这个插件导致了 render 方法被覆盖。我们只需要在 jupyter notebook 的文件里找到 latex_envs.js 文件。该文件的路径应该是在 

$HOME/.local/share/jupyter/nbextensions/latex_envs/latex_envs.js

用文本编辑器在 function override_mdrenderer() 中找到这样一行代码:

html.find("a[href]").not('[href^="#"]').attr("target", "_blank");

在这行代码后直接添加下面几行后保存,就大功告成了:

// replace attachment:<key> by the corresponding entry
// in the cell's attachments
html.find('img[src^="attachment:"]').each(function (i, h) {
    h       = $(h);
    var key = h.attr('src').replace(/^attachment:/, '');

    if (that.attachments.hasOwnProperty(key)) {
        var att  = that.attachments[key];
        var mime = Object.keys(att)[0];
        h.attr('src', 'data:' + mime + ';base64,' + att[mime]);
    } else {
        h.attr('src', '');
    }
});

这样一来,可以在继续使用 LaTeX 环境的插件的同时,复制并粘贴图片了。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值