自己做了一款 sy 转 word 的文件

introduction

高中学生,平时用 SiYuan 学习,真的很不错!

个人感觉思源笔记中借用 pandoc 导出 word 的功能不是很好用,尤其是标记块不能挖空处理,于是自己重写了一个版本,实现了大部分功能

链接:sy2doc: 更好的思源笔记转 Word,使用 python-docx

用法

从源代码使用

依赖清单:

  1. python-docx​主要用到的模块
  2. latex2word​用于处理公式​
  3. loguru​用于日志记录

直接使用 exe 文件

到 release 中下载,双击 trans.exe 运行

命令行参数

python trans.py -i 输入文件.sy -o 输出文件.docx -conf config.json

其中,输入文件应是思源导出.sy.zip 之后解压缩的那个.sy 文件

输出文件可不填,不填则是和.sy 同名同路径的.docx 文件

conf 配置见下,不填则直接使用和 exe 文件同路径的 config.json

样式设置/中文乱码问题

在导出 docx 文件之后用 Word 打开,

TODOs:

本人高二,只有放假时间可以写代码。所以可能下次更新就得到寒假了,有什么问题还望多多包容

  1. 字体颜色、标记块均不可用(如果哪位能提供字体颜色和标记块对应的样式,麻烦提一个 issue,谢谢)
  2. 引用块不可处理
  3. 页眉页脚设置
  4. 样式自动设置
  5. 问题:不支持数学文本

使用 latex2word 处理文本,其中 symbols_parser.py​文件会读取自己同名目录下的 unimathsymbols.txt​文件,但是打包出 exe 后,exe 自解压到 AppData 中就没有这个文件了。

尝试方法:将 unimathsymbols.txt​的内容以字符串的形式直接写到 symbols_parser.py​里,并且用 r 字符串

File "d:\Python\Py3913\lib\site-packages\latex2mathml\symbols_parser.py", line 2890, in parse_symbols
    latex = columns[2]
IndexError: list index out of range

在 py 运行时,出这个毛病。一气之下直接把这个库停用了,导出的 exe 文件就不含这个模块了

如果您下载 py 文件的话,取消注释第 16 行和 70、110 行的调用就可以正常使用了,这个毛病只出现在 exe 中

conf.json

  • log_path​:日志存放路径
  • log_level​:日志级别,默认为 DEBUG
  • title_to_head0​:是否将文档标题输出为 0 级标题
  • mark_replacement​:将标记转化成脚注之后,之前的空位转化成什么?默认是和标记长度相同的下划线
  • footnote_inline​:将标记转化成脚注之后,文档的最末尾脚注写在一行里(true)还是写在多行里(false)
  • TaskListItemChecked​:当任务列表被勾选时显示的字符
  • TaskListItemUnchecked​:当任务列表未被勾选时显示的字符
  • code_font​:代码块的字体,默认 Consolas

效果:

2A52446C-9C77-42A9-B61D-846A5498213D

98001656-EEFE-4C0B-874C-ECCCDB81565F

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23281 引用 • 93946 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
请输入回帖内容 ...