一些用得上的工具

 

日常记录和写论文的工具的积累,包括好用的OCR工具、数学公式识别工具、还有自己写的小工具

日常记录和写论文的工具的积累,包括好用的OCR工具、数学公式识别工具、还有自己写的小工具

Markdown

简单看下就好,因为本身就很简单

因为排版简洁美观,读起来也更加舒服,

Markdown种类很多 基本语法是相通的 对着教程看下就好

Github Markdown的Guid

西电开源社区的帖子

这个PDF就是从Markdown导出的,平时用来排版文字,代码,数学公式是极为方便的,用来简单的写个作业或者论文初稿也是可以的

数学公式的写法和LaTeX基本相同

试从\int^{+\infty}_0e^{-y^2}{\rm{d}}y=\frac{\sqrt{\pi}}{2}推出L(x)=\int^{+\infty}_0e^{-y^2-\frac{c^2}{y^2}}\rm{d}x=\frac{\sqrt{\pi}}{2}e^{-2c}

渲染出来就是 \(试从\int^{+\infty}_0e^{-y^2}{\rm{d}}y=\frac{\sqrt{\pi}}{2}推出L(x)=\int^{+\infty}_0e^{-y^2-\frac{c^2}{y^2}}\rm{d}x=\frac{\sqrt{\pi}}{2}e^{-2c}\)

$\LaTeX$

因为之前有提到LaTeX 所以就简单地推荐一本书还有软件

电子书《一份不太简短的LATEX 2ε 介绍》(或《103 分钟了解LATEX2ε 》),Github提供了电子书以及书的源码,一两天可以快速扫读一遍,之后再在使用中积累经验

对于数学公式,可以使用的速查: Wiki Help:数学公式

Typora

官网,大概在20年前后,Beta之后需要付费了

Typora是一个支持实时渲染的,跨平台的Markdown编辑器,平时拿来写点公式特别方便

设置建议使用把markdown文件引用的图片统一保存到本地的相对路径,方便备份和跨设备,也可以使用图床(说不定哪天就没了),较新的版本也支持图片使用PicGo服务

PicGo

Molunerfinn/PicGo 又是一个相见恨晚的软件,支持从剪贴板复制图片,自动上传并输出Markdown引用URL的格式,对于使用Markdown写博客的人,可以使用Github+picGo搭建图床

OCR

Optical Character Recognition,也就是文字识别或者图像转文字,比如常见字体的验证码识别可以用开源的tesseract,但是对于其他比较复杂的使用情况还是要用专业的工具

ABBYY FineReader

软件官网:ABBYY FineReader 12 功能十分强大的一个付费软件,操纵也比较简单

比如可以识别PDF论文里面的表格到Excel,免去手动抄写/复制数据出错,效果如下:

如果是需要截图识别并将数据复制到LaTeX排版的表格的话,可以用下文的Excel2LaTeX复制数据,下文的Mathpix在更新后也具备了一定的表格识别能力

这家公司还有其他的OCR产品,部分也提供了试用

这里顺带说下 为什么有中国的官网不用

一些软件为了强化对盗版的控制,会选择在中国找代理商,然而由于国内外环境的差异,有些软件可能不会提供试用版甚至有中国定制版….

平时搜索一些东西的时候建议用Google…

可以找Adobe的中国代理,以及Flash中国版的新闻看看

Mathpix

$\LaTeX$ 数学公式OCR软件,也可以识别手写,平时主要是识别论文里面的复杂公式,这样能够节省写代码的时间

Update:Mathpix对普通的注册用户一个月只能免费用50次,再用就得5刀一月,暂时的一个解决办法是用信用卡开API:一个月可以免费用1000次,在之后一直到10万次都是0.004美元/次

具体开启流程可以参考:GLGJSSY的知乎专栏,工具可以用blaisewang/img2latex-mathpix

也可以根据官方的API文档按照喜好写,自己就写了一个简易的版本,在WSL下的效果如图:

手写有时候会有些小问题,检查之后修改一下就好 手写体

美中不足的,在大陆可能因为连不上服务器而不能用,远程IP都是AWS的服务器(18年用cports看到的)

Excel2LaTeX

把Excel表格快速转换成LaTeX代码

krlmlr/Excel2LaTeX

CLI Tools

命令行工具…因为之前写了简略的文档,这里就复制过来了,根据个人的需求来做的,价值不大

Cnki2Bib

原项目

一个运行在MacOS下的命令行小工具,之前既然提到了这里还是给出说明吧,作者也提到,其实没多大用,因为同样的论文用Google学术或者百度学术搜一下再直接按照BibTex格式导出就好了

WSL移植

因为周围的同学主要还是在Windows环境下,平时最多也只是用下WSL(windows的Linux子系统),所以就简单的移植了下

一些准备

  • WSL子系统

  • 命令行剪贴板 xclip (或者xsel)

  • Windows下的X windows Server : vcxsrv

    因为WSL使用剪贴板需要display

  • Ruby环境以及chinese_pinyin库

使用方式

  1. 复制 知网上的GB格式的引文条目

  2. 在WSL命令行执行脚本

    此时转换完成的引文格式已经到了剪贴板上

  3. 粘贴已经转换的Bibtex格式即可

存在的问题

对比来看的话,应该还是需要按照需求来看吧,比如说作者名字需不需要转拼音之类的,如果常用cnki的话,小问题还是有不少的,这里没有呈现的,一个是第一行,博士论文就不是article了(GB格式信息有限),所以这个只是粗略的转换,之后可能还需要细改

#!/bin/bash
# 首先从剪切板当中读取数据
string=$(xclip -selection clipboard -o)
echo $string
# 当剪切板中的数据不符合要求时,直接退出脚本
size=${#string}
if [ $size -lt 1 ] && [ $size -gt 200 ]; then
    echo "字符串为空或过长,疑似数据有误!";echo
    exit 1
fi
echo size is $size
# 新建函数用以快速切割字符串
# 需要提供原始字符串以及相应的切割符号
# 事实上可以使用cut,sed等高级工具的,但是我不会啊,回头再加以改善吧
splitString(){
    rawstring=$1
    tempstr=${rawstring//./ }
    arr=($tempstr)
}
# 开始切割字符串
splitString $string .
# 计算数组元素个数
num=${#arr[*]}
echo $num
if [ $num -ne 3 ] && [ $num -ne 4 ]; then
    echo "剪贴板内数据无法被切割为三组或者是四组,请检查数据";echo
    exit 1
fi


# 开始处理第一组数据,作者的名字以及不需要的[1]
tempstr=${arr[0]}
tempstr=${tempstr#\[*\]}
tempstr=${tempstr//,/ }
temparr=($tempstr)
tempnum=${#temparr[*]}
if [ $tempnum -eq 1 ]; then
    author=$tempstr
else
    for((i=0;i<tempnum;i++))
    do
        if [ $i -eq 0 ]; then
            author=${temparr[$i]}
        else
            author=$author" and "${temparr[$i]}
        fi
    done
fi

# 开始处理第二段数据,去掉最后的[J]直接就可以用啦
tempstr=${arr[1]}
title=${tempstr%\[*\]}

# 开始处理第三段数据
# 首先给出期刊名字

tempstr=${arr[2]}
tempstr=${tempstr//,/ }
temparr=($tempstr)
journal=${temparr[0]}

# 开始抽离出后续的内容
# 首先是页码
tempstr=${temparr[1]}
tempstr=${tempstr//:/ }
temparr=($tempstr)
pages=${temparr[1]}

# 开始抽出期刊时间与相应的卷数
tempstr=${temparr[0]}
tempstr=${tempstr//\(/ }
tempstr=${tempstr//\)/}
temparr=($tempstr)
year=${temparr[0]}
number=${temparr[1]}


# 这里准备输出的模板

# 使用ch2py来输出作者首字母的拼音
# https://blog.csdn.net/hanchaohao2012/article/details/53678319
# sudo gem install chinese_pinyin

key=$(ch2py ${author:0:1})
result="@article{$key$year,\n  \
        author={$author},\n  \
        title={$title},\n  \
        journal={$journal},\n  \
        year={$year},\n  \
        number={$number},\n  \
        pages={$pages},\n  \
        language={chinese},\n\
        }"

# 将最后的结果输出到剪贴板中

Wiki2LaTeX

也是随手写的把维基复制下来的公式图片批量转换为LaTeX代码的一行bash命令

sed -i -e 's:!\[:\n$$\n:g'  -e 's:]([^ ]*):\n$$:g' filename

用法:复制公式的图片,可以是多个,复制到Typora(Typora会自动解析出网络图片的网址),之后以Markdown文件为输入运行脚本就可以得到多个公式的行间公式的LaTeX代码

脚本最大的作用还是在于批处理吧,如果公式不多的话

直接在维基的网页用检查工具也是可以的,只需要找到图片对应的源代码

  <img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/37638fc8a691764fe848ef7723088dccc7d6bb21" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -3.171ex; width:28.425ex; height:7.509ex;" alt="{\displaystyle \operatorname {Var} (X)=\left(\sum _{i=1}^{n}p_{i}x_{i}^{2}\right)-\mu ^{2},}">

中的alt之后的部分alt="{\displaystyle \operatorname {Var} (X)=\left(\sum _{i=1}^{n}p_{i}x_{i}^{2}\right)-\mu ^{2},}"就是LaTeX的源代码,至于原理:

alt 属性是一个必需的属性,它规定在图像无法显示时的替代文本。

假设由于下列原因用户无法查看图像,alt 属性可以为图像提供替代的信息:

  • 网速太慢
  • src 属性中的错误
  • 浏览器禁用图像
  • 用户使用的是屏幕阅读器

我们强烈推荐您在文档的每个图像中都使用这个属性。这样即使图像无法显示,用户还是可以看到关于丢失了什么东西的一些信息。而且对于残疾人来说,alt 属性通常是他们了解图像内容的唯一方式。