IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Typora转Notion指南(解决Notion导入latex问题) -> 正文阅读

[开发工具]Typora转Notion指南(解决Notion导入latex问题)

最近入坑了Notion。被它的简洁设计与高效率打动,毅然决然舍弃Typora,转战Notion。

但是,原来在Typora上的写的文章笔记,直接import进notion时,发现latex公式全都无法显示。这就很离谱。对文章中写了大量公式的我来说,十分不友好!

抱着试一试的心态,上github看看有没有解决这个问题。一看还真有,果然github无所不能?。

github上有个叫 md2notion 的python库,它提供的方法是直接 pip install md2notion 就能使用,不过我安装完跑它代码时提示 md2notion is not a package,只好把在pip安装文件夹里找到package,放到代码文件夹里,才能使用。

ok先来看他的github使用教程:

from notion.client import NotionClient
from notion.block import PageBlock
from md2notion.upload import upload

# Follow the instructions at https://github.com/jamalex/notion-py#quickstart to setup Notion.py
client = NotionClient(token_v2="<token_v2>")
page = client.get_block("https://www.notion.so/myorg/Test-c0d20a71c0944985ae96e661ccc99821")

with open("TestMarkdown.md", "r", encoding="utf-8") as mdFile:
    newPage = page.children.add_new(PageBlock, title="TestMarkdown Upload")
    upload(mdFile, newPage) #Appends the converted contents of TestMarkdown.md to newPage

针对latex,最后的upload要改成:

upload(mdFile, newPage, notionPyRendererCls=addLatexExtension(NotionPyRenderer))

简单说明一下这里要改的几个参数:

  • token_v2是你登录进网页版的notion,浏览器对 www.notion.so.com这个站点的cookies。F12控制台就可以看到,复制过来就好。

在这里插入图片描述

  • page里的url是需要添加进的notion页面地址
  • TestMarkdown.md就是你的md文件

我们试一下发现

在这里插入图片描述

按他的方法确实可以把md转到notion,不过仍然存在一个问题,就是行内的latex是可以显示的,即这种$...$ 包起来的latex语句,但对于行间公式 即 $$...$$ 这种是不行的,原因是他必须前后都有一个空格,才能被识别出来。我们在Typora中写的公式块(如下)前后是没有空格的

在这里插入图片描述

所以,我们只需要在包含 $$...$$ 的前后手动加上换行符就ok。

直接上代码:

with open("TestMarkdown.md", "r", encoding="utf-8") as mdFile:
        
    newPage = page.children.add_new(PageBlock, title="TestMarkdown Upload")
    lines=mdFile.readlines()
    new_lines = lines.copy()

    flag = 0
    insert_nums = 0
    for (i, line) in enumerate(lines):
     
        if i > 0 and i < len(lines) - 2:
            if flag == 0 and line == '$$\n':
                pos = i + insert_nums
                new_lines.insert(pos, '\n')
                insert_nums += 1
                flag = 1

            elif flag == 1 and line == '$$\n':
                pos = i + insert_nums + 1
                new_lines.insert(pos, '\n')
                insert_nums += 1
                flag = 0
    
    
    rendered = convert(new_lines, addLatexExtension(NotionPyRenderer))
    for blockDescriptor in rendered:
        uploadBlock(blockDescriptor, newPage, mdFile.name)

这里还有一个坑,这样子实现后,latex行间公式是可以显示了,但是公式的内容却有问题,

在这里插入图片描述

原来是每个 / 字符在 NotionPyRender 这个渲染模块里被强制转义成 // ,这个还好解决,直接定位到 NotionPyRender 代码文件,找到 render_block_equation 这个函数,把图中对应的代码改成如下形式就好了

在这里插入图片描述

最终Notion的结果:

在这里插入图片描述

完结撒花!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:53:00  更:2021-09-22 14:54:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:50:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码