相关文章推荐
聪明的领结  ·  @babel/cli入门 - 掘金·  1 年前    · 
踏实的水煮鱼  ·  Java 8上的SQL Server ...·  1 年前    · 
玉树临风的领带  ·  react.js - ...·  1 年前    · 
机器之心 机器之心 原创

最好用的文字与公式编辑器,这套数学笔记神器送给你

机器之心编辑部
报道

作为一个高大上的文字工作者,写写划划,抄抄数学表达式是必不可少的。今天小编介绍学习中必不可少的两大神器:最好用的 Markdown 编辑器 Typora,最好用的数学神器 Mathpix Snip,不接受反驳。它们珠联璧合简直能上天~

在我们学习生活中,经常需要记很多笔记,或者发发个人博客网站,那么工具就必不可少了。一般情况下,我们都钟爱使用贼简单、贼优美的 Markdown 标记语言,它的 学习曲线 并不陡峭,且基本上能 Cover 绝大多数使用场景。

Markdown 语法简洁明了,小白看几眼就能知道个大概。但是我们总不能一直以标记语言的形式看文章啊,因此也就需要 Typora 编辑器了,键入标记语言,编辑器将自动渲染为视图页面。总之用 Markdown 记下学习生活,才是程序猿必不可少的。

对于 ML 领域的程序猿,Markdown 的一个缺点是不能用 LaTex 数学表达式,但 Typora 能完美解决这个问题,它可以直接展示 LaTex 数学表达式。既然要写 ML 数学表达式,那么神器 Mathpix Snip 就必不可少了,它可以将表达式截图转化为 LaTex 代码。小编用它「抄了」这么多公式,基本上语法没有错误,而且还很「规矩」。

在这一篇文章中,我们将重点介绍这两大神器,至少在老编们的心中,它们是无敌的。如果你有更好的配置,欢迎留言推荐。

最好的 Markdown 编辑器 Typora

其实优秀的 Markdown 编辑器有很多,例如 微软 开源的 Madoko 在线 IDE、Cmd Markdown 等等。但是 Typora 简洁的界面和实时预览效果非常优美,而且甚至我们都不需要了解 Markdown 语法就能完成文档。Typora 比较适合轻量级的日常使用,它的特点就是入门简单。

  • Typora:https://typora.io/

有了 Typora,语法自动补全、Markdown 与 Word 或 PDF 等的导入与导出、字数统计等各种功能也就都有了。如下所示为 Typora 中的数学公式特点:

Typora 还支持各种主题、各种功能,还没搭上 Markdown 高速列车的小伙伴们,推荐使用 Typora。

数学公式神器 Mathpix Snip

前面我们可以使用 Typora 完成各种文章与笔记,那么我们该怎样写得更高效呢?这里可能需要花些时间的就是嵌入数学公式。其实用 LaTex 表达式写数学公式还是挺麻烦的,至少一般人做不到手写速度。但是我们有 Mathpix Snip 啊,只要截个图,公式会自动转化为 LaTex 表达式,我们只需要简单地修改修改就行了。

Mathpix Snip 的设计初衷是帮助人们在通过手机或电脑输入数学公式时节省时间。为此,Mathpix 研发了一款免费 APP——Snip 来自动化这一繁琐过程。

  • Mathpix Snip:https://mathpix.com/

Mathpix 怎么用?

以下是官网展示的操作步骤,其演示了各个 操作系统 配合使用的快捷键以及详细步骤。实际上,我们就只需要截个图:

以下是小编在 Windows 系统上安装该工具后,系统给出的操作步骤提示:

然后,小编亲手操作了一波:

打开 Mathpix 后,它会在后台运行。当遇到想编辑的图片公式时,只要按快捷键 Ctrl+Alt+M 即可对图片截图:

如上,截图选中了红框里的公式之后,很快就出现了转化效果。注意上面绿色的方框表示转换代码的置信度,只要截图正确,基本上它都是 OK 的。

最后 copy 想要的结果,再粘贴到 Typora 编辑器中就大功告成啦!有没有超简单?!

万能的 API

为了方便使用,该公司还研发了一个 API(MathpixOCR),可以帮助开发者将 Mathpix 的功能集成到自己的应用程序。

你向 MathpixOCR 发送一张图片,它就会告诉你其中的数学公式。就这么简单。该 API 会返回 LaTex 以及图片元数据,你可以在你的应用中使用它。

如下展示了如何简单调用 API 处理单张图像:

#!/usr/bin/env python
import sys
import base64
import requests
import json
# 将文件路径放在此处
file_path = 'limit.jpg'
image_uri = "data:image/jpg;base64," + base64.b64encode(open(file_path, "rb").read())
r = requests.post("https://api.mathpix.com/v3/latex",
    data=json.dumps({'url': image_uri}),
    headers={"app_id": "trial", "app_key": "34f1a4cea0eaca8540c95908b4dc84ab",
            "Content-type": "application/json"})
print json.dumps(json.loads(r.text), indent=4, sort_keys=True)
curl -X POST https://api.mathpix.com/v3/latex \
    -H 'app_id: trial' \
    -H 'app_key: 34f1a4cea0eaca8540c95908b4dc84ab' \
    -H 'Content-Type: application/json' \
    --data '{ "url": "data:image/jpeg;base64,'$(base64 -i limit.jpg)'" }'

API 返回的 JSON 结构如下所示:

{
    "detection_list": [],
    "detection_map": {
        "contains_chart": 0,
        "contains_diagram": 0,
        "contains_geometry": 0,
        "contains_graph": 0,
        "contains_table": 0,
        "is_inverted": 0,
        "is_not_math": 0,
        "is_printed": 0
    "error": "",
    "latex": "\\lim _ { x \\rightarrow 3} ( \\frac { x ^ { 2} + 9} { x - 3} )",
    "latex_confidence": 0.86757309488734,
    "position": {
        "height": 273,