一键制作图片词典 MdxSourceBuilder

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

  • 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 Like

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

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

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

3 Likes

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

1 Like

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

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

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

案例:

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

新案例:

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


打开之后就是这样


版本参数

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

1 Like

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

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

===—补充:

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

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

1 Like

感谢感谢!晚上来试试。

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

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

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

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

最简单的教程:

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

1 Like

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

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

1 Like

楼主你好,请问图片名称在哪里设置呢?

1 Like

2 Likes

我碰到了一个棘手的问题,就是生成的mdx,没有上一页,下一页功能,有些词条是跨页的导致我看不到,举例来说
我使用格式如下的索引
A 001
B 003
C 010
生成的结果中导览行只显示1,3,10,当我想看词条A的第二页,词条B的后面7页时完全看不到,同时没有翻页功能,我不知道应该怎么办?虽然我可以在索引里打上002,004,005,006……但是对我来说工作量巨大,而且我举出的例子,编码是从小到大按顺序的,实际的索引文件是乱序的,更难找出缺了什么页?我应该怎么做?

很简单:直接添加一份完整无遗漏的页码(没有关键词,仅有页码,可以用Excel快速生成)到词条末尾(其实放任意位置都可以,放最后只是方便以后添删改)即可。

程序会自动处理:若该页面之前无词条,则根据这个页码添加上下页;若该页面已有词条,这里重复添加的页码会被处理掉,所以也就不会有任何影响。因此你不必担心是否重复的问题,也不必关心排序的问题。

关于页码的灵活性,程序已经附带有案例:火星词典.Body.Part3.txt

明白了,非常感谢。