一键制作图片词典 MdxSourceBuilder

大神您好。

我尝试制作一个日英的辞典,发现配置文件(body,cover,prefix)的文件名如果是英文的话,可以直接输出txt,但是不能直接生成mdx和mdd。

不知道大神那边可不可以复现这个现象哈。

另外,生成的txt可以用mdxbuilder转换成mdx,mdd。

看附件中4位和5位的对比,同理3、4、5、6、7……想怎么调就怎么调:
(其实3位没有必要,5位对巨型书籍有必要,6、7、8那得多大的书啊…)

页码位数调整.zip (5.7 KB)

程序自带的案例“火星词典”能跑通吗?

生成mdx和mdd,需要安装与Vim配套版本的 python、mdict-utils。

文件名用什么语言写,应该没什么影响啊,中英日韩等都可以。

1 个赞

可以的。已经制作过拟声拟态词辞典成功了的哈。

我把文件名都改成中文就可以用vim一键输出了。

不知道是否跟文件中的英文名称单词间的空格有关。

1 个赞

update:文件名使用空格需要升级,详见:

1 个赞

好滴,谢谢大神!

您好,多谢回复。实际上,我看到一些书没有1000页,所以希望也发个3位的vim文件。多谢了!

目前的4位可以适用于几页、几十页、几百页的书。

其影响仅仅是给图片命名时,要配套的4位,不足的部分用前缀0补全。

最终显示的页码不会有4位,即不会显示0123,而是直接显示123。

明白了,多谢。

您好,使用您最新更新的vim文件,即Change the CustomNav to top and add absolute img size option这个版本,制作出来的词典,在电脑上使用没有问题,在ios欧路端上使用时,查询单词时会在历史记录的词头下方显示CustomNav项目,不知道有什么办法可以隐藏呢

是否没清空缓存啊

。。。。。

我理解错了。这可能是这个词典软件的特点,不仅显示词条,也部分显示正文的前面部分内容。

当然,使用这个版本制作的词典,封面附录等项目置于顶端,一目了然,在查询过程中对词典的体例可以随时翻阅,极为方便。非常感谢您的辛苦工作。

清空了缓存了。

奇怪了,现在又没有这个问题了。

我正在重造这个轮子,直接支持你这种索引格式,你不需更改。
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 个赞