改造 OmniOutliner 的 latex公式支持
最近正在用OmniOutliner做笔记,工科需要一些公式,首选Latex。查了一下用户手册,发现悲剧(>﹏<)的不支持,说好的万能的OmniGroup呢。遂Baidu之,Google之,发现一个小方案OO_latex ,大喜,然后又发现不能用,人生果然不止眼前的苟且。
前人已经造出来的小轮子不能用,但是咱们可以改啊,代码两部分,一部分applescript,用来在OmniOutliner上面传参以及调用python部分;另一部分python,用来把接收到的latex公式生成对应的补全依赖的tex文件,用pdflatex转换成pdf,再用pdfcrop切成需要的大小。
(pdfcrop这部分,原本的代码是在python实现的,但是作为一个perl脚本,不知道为什么( ⊙o⊙?)不能在applescript里面实现python调用,无法生成需要的crop.pdf,测试了一下 sh 直接执行相关指令无法得到正确结果,但是Terminal直接调用可以,所以我把它移到applescript部分用tell Terminal来实现)
原本的OO_latex不能用的原因主要在于applescript位置改变了~/Library/Application Scripts/com.omnigroup.OmniOutliner4,这个路径中存在空格。原本的代码把所有temp文件存储在这里,调用会出问题。把py文件改到~/Documents/OmniOutliner4里面,同时生成的各种temp文件(tex, aux,log,pdf,etc.)也都在这里,并且py中删除之前的temp文件不用担心垃圾文件堆积。
第二个问题就是前面说的pdfcrop问题,通过把这部分转义到applescript里面用tell Terminal解决。同时,需要在最后把所有Terminal kill掉,否则会被Terminal塞满。
第三个是执行之后总是报错,找不到生成的temp-crop.pdf,这个文件生成需要时间,在applescript里面加一行delay延迟一下就好了。
最后一个是python部分的,现在用的是MacTeX 2015版的textbin位置改变了变成“/Library/Tex/texbin/” ,需要在执行pdflatex和pdfcrop部分注意,否则会出现找不到指令的情况。
结果在这里:
项目地址:GitHub for OO_in_latex (里面还有一些其他琐碎的说明已经使用方法)