# 一键制作图片词典 MdxSourceBuilder

**URL:** <https://forum.freemdict.com/t/topic/2882>\
**Category:** 技术交流与词典编修\
**Tags:** 图片词典, mdxsourcebuilder, opensource, mdx工具, ⭐star\
**Created:** [2020 年8 月 12 日 08:34 UTC](https://forum.freemdict.com/t/topic/2882 "2020-08-12T08:34:34Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年11 月 12 日 16:50 UTC](https://forum.freemdict.com/t/topic/2882/82 "2021-11-12T16:50:37Z")

</div>

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

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

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年11 月 15 日 03:27 UTC](https://forum.freemdict.com/t/topic/2882/83 "2021-11-15T03:27:46Z")

</div>

最新完整正式案例（带源码）：

> [@Oxford Practical English Usage 3rd 中英双解【已完成】](https://forum.freemdict.com/t/topic/9255):
>
> Update：已完成！ 感谢 @smiling1384、@dictionaryfan 和 @thx333 的积极支持！ 彩蛋看词典说明。 以下为旧内容================== 在 @smiling1384 [提供的资料](https://forum.freemdict.com/t/topic/9173) 基础上，目前已完成主要内容设计，只待有志愿者进一步协助完成二级词条精准定位的修订工作，即可发布。 待修订文件：[OPEU3rd.Link2.txt](https://forum.freemdict.com/uploads/short-url/hK1V6EYw80vTBfPTdhRFyRqLQlk.txt) (70.7 …

---

<div class="post-metadata">

作者： ![fruition](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/fruition/32/51082_2.png) [@fruition](https://forum.freemdict.com/u/fruition)\
发布日期： [2021 年11 月 15 日 04:05 UTC](https://forum.freemdict.com/t/topic/2882/84 "2021-11-15T04:05:40Z")

</div>

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

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年11 月 25 日 10:22 UTC](https://forum.freemdict.com/t/topic/2882/85 "2021-11-25T10:22:47Z")

</div>

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

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

```

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年12 月 1 日 09:57 UTC](https://forum.freemdict.com/t/topic/2882/86 "2021-12-01T09:57:49Z")

</div>

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

案例：

> [@Longman Lexicon of Contemporary English](https://forum.freemdict.com/t/topic/9670):
>
> 《朗文多功能分类词典》 针对有多层级目录的书籍，专门设计了如下导航系统。感觉比之前大多图片词典在顶部突兀的显示一堆导航链接的整体感官统一性要更好些，适用于语法、用法、分类等类型的图书。 好像可以将以前的很多mdx都用此升级一下。 [Longman Lexicon of Contemporary English]

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年12 月 1 日 13:16 UTC](https://forum.freemdict.com/t/topic/2882/87 "2021-12-01T13:16:11Z")

</div>

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

> [@【已完成】牛津英美文化词典 中英双语](https://forum.freemdict.com/t/topic/9535/112):
>
> 升级为双语导航，好处大大的：看了中文想看英文，但又是跨页的，只要点击左上角的\<\<\<即可直达，不必关心它会跨几页；反过来也一样。 也可自由设定是否显示 中或英 的关键词导航。

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年12 月 5 日 12:58 UTC](https://forum.freemdict.com/t/topic/2882/88 "2021-12-05T12:58:12Z")

</div>

新案例：

> [@【查询竞赛】Longman Language Activator 2nd 完美复现双解版](https://forum.freemdict.com/t/topic/9711):
>
> 已经有很多版本的《朗文英语写作活用词典》在流传，包括PDF、图片版mdx、文字版mdx等，但是它们大都有很多缺陷：不信你就查一查 “jump”，对比一下，高下立判 1、要么查询不齐全，与原书提供的索引相比差得太远。 2、要么查询结果太多，完全没有领会原书的精髓。 3、要么就是导航太差，难以快速查看相关义项。 4、要么检索只有英文，没有中文，或错误一堆。 5、要么黑白模糊图片，看得人难受。 …

---

<div class="post-metadata">

作者： ![alexpeng](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/alexpeng/32/19592_2.png) [@alexpeng](https://forum.freemdict.com/u/alexpeng)\
发布日期： [2021 年12 月 22 日 07:51 UTC](https://forum.freemdict.com/t/topic/2882/89 "2021-12-22T07:51:48Z")

</div>

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

 ![1](https://forumcdn.freemdict.com/uploads/default/original/3X/d/2/d25007bc2219daa7c2ff8e081288f24756ad5ef2.png)  
打开之后就是这样

 ![2](https://forumcdn.freemdict.com/uploads/default/original/3X/f/b/fb34b0d9f8cc00b2b97d03470787b40faed425f7.png)  
版本参数

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年12 月 22 日 08:09 UTC](https://forum.freemdict.com/t/topic/2882/90 "2021-12-22T08:09:17Z")

</div>

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

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年12 月 22 日 08:13 UTC](https://forum.freemdict.com/t/topic/2882/91 "2021-12-22T08:13:12Z")

</div>

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

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

===—补充：

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

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

---

<div class="post-metadata">

作者： ![alexpeng](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/alexpeng/32/19592_2.png) [@alexpeng](https://forum.freemdict.com/u/alexpeng)\
发布日期： [2021 年12 月 22 日 08:15 UTC](https://forum.freemdict.com/t/topic/2882/92 "2021-12-22T08:15:13Z")

</div>

感谢感谢！晚上来试试。

---

<div class="post-metadata">

作者： ![alexpeng](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/alexpeng/32/19592_2.png) [@alexpeng](https://forum.freemdict.com/u/alexpeng)\
发布日期： [2021 年12 月 22 日 11:58 UTC](https://forum.freemdict.com/t/topic/2882/93 "2021-12-22T11:58:19Z")

</div>

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

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

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2021 年12 月 22 日 12:07 UTC](https://forum.freemdict.com/t/topic/2882/94 "2021-12-22T12:07:01Z")

</div>

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

> [@alexpeng](#):
>
> 得先:new 再来:so mdx它才工作

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

最简单的教程：

 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/e/0/e0d089bf011bde055fb1e99ca69e5d18374ad578.png)

出错提示也有（底部）：  
 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/b/5/b5a16fc1ba379110de7cf79035379eda3e9c6843.png)

---

<div class="post-metadata">

作者： ![alexpeng](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/alexpeng/32/19592_2.png) [@alexpeng](https://forum.freemdict.com/u/alexpeng)\
发布日期： [2021 年12 月 22 日 12:57 UTC](https://forum.freemdict.com/t/topic/2882/95 "2021-12-22T12:57:56Z")

</div>

> [@Vim](#):
>
> 文件大小取决于很多因素

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

> [@Vim](#):
>
> 严格照做基本不会有问题

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

---

<div class="post-metadata">

作者： ![hanhteegs](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/hanhteegs/32/26414_2.png) [@hanhteegs](https://forum.freemdict.com/u/hanhteegs)\
发布日期： [2022 年4 月 28 日 11:23 UTC](https://forum.freemdict.com/t/topic/2882/96 "2022-04-28T11:23:32Z")

</div>

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

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2022 年4 月 28 日 13:56 UTC](https://forum.freemdict.com/t/topic/2882/97 "2022-04-28T13:56:13Z")

</div>

![image](https://forumcdn.freemdict.com/uploads/default/original/3X/5/1/51461f04f93c398e24d2eae30d91415735c4bff5.png)

---

<div class="post-metadata">

作者： ![dadada321](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@dadada321](https://forum.freemdict.com/u/dadada321)\
发布日期： [2022 年5 月 2 日 12:17 UTC](https://forum.freemdict.com/t/topic/2882/98 "2022-05-02T12:17:33Z")

</div>

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

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2022 年5 月 2 日 13:22 UTC](https://forum.freemdict.com/t/topic/2882/99 "2022-05-02T13:22:58Z")

</div>

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

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

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

---

<div class="post-metadata">

作者： ![dadada321](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@dadada321](https://forum.freemdict.com/u/dadada321)\
发布日期： [2022 年5 月 2 日 13:28 UTC](https://forum.freemdict.com/t/topic/2882/100 "2022-05-02T13:28:18Z")

</div>

明白了，非常感谢。

---

<div class="post-metadata">

作者： ![random](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/random/32/19006_2.png) [@random](https://forum.freemdict.com/u/random)\
发布日期： [2023 年5 月 3 日 11:39 UTC](https://forum.freemdict.com/t/topic/2882/101 "2023-05-03T11:39:47Z")

</div>

今天第一次尝试这个工具制作图片词典，报了两个错：  
E121: Undefined variable: g:dictionaryParts  
E484: Can’t open file MdxSourceBuilderMultiLevel.vim

关于 E121 错误：

```auto
let g:dictionaryParts 里我没有设置，因为是用的下面的“多层级词条”。
let g:dictionaryParts 里必须设置吗？目前我先把处理这块的代码给注释掉了

```

关于 E484 错误：

```auto
是按下面这样设置的，为啥还是报E484错误了：
let g:multiLevelParts = [[
        \["cgel_body_title1.txt", 3, 0, 1],
        \["cgel_body_title2.txt", 3, 0, 1],
        \["cgel_body_title3.txt", 3, 0, 1],
        \["cgel_body_title4.txt", 3, 0, 1],
        \["cgel_body_title5.txt", 3, 0, 1],
        \["cgel_body_title6.txt", 3, 0, 1],
        \], "CGEL_EN_", ".png", 2]

```

更新：  
原来是忘了拷贝这个文件到目录里：MdxSourceBuilderMultiLevel.vim

我再研究下

[上一页](https://forum.freemdict.com/t/topic/2882.md?page=4)

[下一页](https://forum.freemdict.com/t/topic/2882.md?page=6)
