一键制作图片词典 MdxSourceBuilder

我正在重造这个轮子,直接支持你这种索引格式,你不需更改。
image

1 个赞

重造轮子记录:
2021-11-05
已可初步处理: 火星词典.Body.Part1.txt
image

已可初步处理: 火星词典.Body.Part2.txt
image

1 个赞

重造轮子记录:
2021-11-06
已可初步打包图片,并通过“上一页”,“下一页”浏览。

接下来难点要到了,生成导航目录,并挂到页面上。

升级MdxSourceBuilder以支持类似如下案例。
但整理到标准可发布代码好像还挺麻烦,先预览吧,有时间再整理:

  • [X] 词条风格2兼容tab和空格,bug修正
  • [X] 可设置多个Link文件,以适用于不同类型的内容
  • [X] 可对不同类型的Link文件进行不同逻辑的处理,方便维护
  • [X] 可设置词条定位百分比信息是否显示的参数
  • [X] 词条导航增加"最近的前一词条"和"最近的后一词条",方便词条较少等情形
  • [X] 页码位数可设参数:默认为4,可设置3,5等

Oxford Practical English Usage 3rd.zip (55.7 KB)

赞,我在此词典中想到但没做到的您都做了,赞!

终于可以支持文件名使用空格了:

  • Windows下,mdict-utils 中的参数要使用双引号。
  • Linux下,mdict-utils 中的参数要将空格转义。

以下是修正后在Windows下的代码,已测试通过。

if s:autoMdxPack == 1
    echomsg "正在生成 Mdx 文件..."
    silent! exe '!mdict'
        \. ' --title "'
        \. substitute(s:mdxSourceFileName, ".txt$", ".info.title.html", "")
        \. '" --description "'
        \. substitute(s:mdxSourceFileName, ".txt$", ".info.description.html", "")
        \. '" -a "' . s:mdxSourceFileName . '" "'
        \. substitute(s:mdxSourceFileName, ".txt$", ".mdx", "") . '"'

    echomsg "已输出 Mdx,请查阅: " . getcwd() . "\\"
        \. substitute(s:mdxSourceFileName, ".txt$", ".mdx", "")
endif

if s:autoMddPack == 1
    echomsg "正在生成 Mdd 文件..."
    silent! exe '!mdict'
        \. ' -a "' . s:imageFolder . '" "'
        \. substitute(s:mdxSourceFileName, ".txt$", ".mdd", "") . '"'

    echomsg "已输出 Mdd,请查阅: " . getcwd() . "\\"
        \. substitute(s:mdxSourceFileName, ".txt$", ".mdd", "")
endif

Linux下的参数不用引号,但要将空格转义(以下转义代码仅供参考),请自行修订,未测试

" let s:mdxSourceFileName = substitute(s:mdxSourceFileName, "\\s", "\\\\ ", 'g')

详情请参见: 好像不支持带空格的文件名? · Issue #13 · liuyug/mdict-utils · GitHub

1 个赞

github已提交升级,欢迎享用。

  • [X] Feat: 可添加多个不同类型的额外文件,更加灵活方便了
  • [X] Feat: 可设置词条定位百分比信息是否显示
  • [X] Feat: 可设置词条导航是否显示最近的词条
  • [X] Feat: 可设置页码位数,默认为4,可设置3及以上
  • [X] Perf: 页码导航显示更多页码
  • [X] Perf: mdx文件名可以使用空格
  • [X] Fix: 词条风格2兼容tab和空格
3 个赞

最新完整正式案例(带源码):

3 个赞

感謝 Vim 兄分享優質佳作…讚!

1 个赞

已升级支持sourceStyle 3,案例:火星词典.Body.Part3.txt

词条A      0001
词条B      0002
词条X      0010

重大升级:增加多层级导航体系。

案例:

关于多层级导航系统的更多案例:

新案例:

1 个赞

你好楼主,我正在试着能否自己生成英美文件词典,可是连txt都不能生成。第一次用Vim,实在不知道哪里有问题。
我按主楼所说打开关闭,可是什么也没有。
我以为是因为没装python,就将 let s:autoMdxPack = 0,可还是什么也没有。
希望楼主能拨冗指导,成分感谢!
win10 gvim82


打开之后就是这样


版本参数

估计工作路径不在当前目录吧。
输入命令 :pwd 即可查看当前工作目录。若与当前mdxsourcebuilder的文件所在目录不同,就使用 :cd 可以切换工作目录 (与cmd中的cd命令一样使用)。

1 个赞

也可以使用 mdxsourcebuilder附带的 _vimrc 配置文件,将其放在 c:\Users%%yourname%%\vimfiles\ 下,重启vim。

之后,你用vim打开 mdxsourcebuilder.vim,然后用 命令 :CD (注意,是大写的字符),即可自动切换当前工作目录到mdxsourcebuilder.vim文件所在的目录。

===—补充:

通常不需要上述那么麻烦,只要:
1、关闭所有vim窗口
2、直接在文件上右键用vim打开

如此,vim会自动将文件所在目录设为当前工作目录。

1 个赞

感谢感谢!晚上来试试。

我滴个娘嘞,终于把txt搞出来了,直接右键打开不行,得先:new 再来:so mdx它才工作。

就是为什么这么小,是不是哪里又不对?三个文本加一起有400多k,生成的txt只有196k
试了几次,从压缩包重新解压,也不行。
我将您网站的火星词典文件都下载下来了,几个txt文本总共740k多,生成的txt有22.6M
麻烦您再给解解惑。感谢感谢!

首先,只要能输出就说明程序工作正常,甭管文件大小。
其次,文件大小取决于很多因素,主要与词条多少和配置的参数有关(参数控制如何输出,比如是否输出导航条,大小就会相差好几倍)。

MdxSourceBuilder.vim已经内置了教程和容错提示,只要严格照做基本不会有问题:

最简单的教程:

出错提示也有(底部):
image

1 个赞

是有些奇怪400进去,只出来196,以为哪又错了。

是的。只是一个是新软件不熟悉,再一个想走捷径,有了GUI不想敲键盘 :joy:

1 个赞