手搓了个简单的org文件解释+html导出程序(基于python)

作为一个用org-mode+emacs导出html写博客的人,emacs原生导出速度有点低,而我能找到的第三方导出程序或者解析器样式效果都不大还原emacs导出的html,索性自己搓了个解释器,主程序github链接在这。希望能给出些改进意见。

使用方法:

环境要求:Python>=3.12 , 安装argcomplete, requests, pygments 包

下载orgreader2.py, pytools.py放到同一目录,运行orgreader2.py -h获取帮助

如果没有设定输入文件会自动查找,默认输出html,保存依赖重定向,默认不内嵌emacs的css样式但内嵌pygments的语法高亮样式,linux安装了emacs就可以使用-E参数查找/usr/share/emacs/的安装文件嵌入默认css样式。

支持的特性:

各级标题+目录,脚注,代码块(src,quote,center,example,export),行内效果(链接,图片(支持使用caption),粗体,斜体,删除线,下划线,code),部分元数据(title,date,author,setupfiles,html_link_{up,home},html_head,seq_todo),多级列表(有序和无序),表格(支持对齐和分割线识别)

暂不支持的特性(可能列不全):

公式,列表checkbox,合理代码高亮,自动识别链接,自动修改链接等

自己感觉这东西比较业余所以也就没有放到org-mode区

6 个赞

从我的体验来说,关掉 babel(设置 org-export-use-babelnil), 单个文件的导出速度能快一倍。

如果说支持 setupfiles 的话,那也就是说支持 #+options 吗?

目前只支持引用setupfiles并且使用其中受支持的元数据设置,options还不行,涉及到的内容有点多,不过可以加上去(如果做得到)

经过我的测试,即使设置了org-export-use-babel并且使用emacs server进行导出,我搓的程序在大批量导出时仍然具有速度优势(虽然说少了些功能)

1 个赞

现在的话程序加上了部分options的处理,目录能够处理toc,num和H的设置了,正文标题超过H自动转换为列表还需要做点工作。emacs这块的处理逻辑有点毛病,会出现一些不在预期内的行为,目前考虑实现时顺带处理掉这个bug。欢迎提出其他建议。

btw虽然项目里加上了pyproject.toml,但暂时还没胆量传pypi上