{"id":20105427,"url":"https://github.com/vimwei/mdxsourcebuilder","last_synced_at":"2025-06-26T06:36:07.147Z","repository":{"id":140981672,"uuid":"286891694","full_name":"VimWei/MdxSourceBuilder","owner":"VimWei","description":"一键制作mdx图片词典","archived":false,"fork":false,"pushed_at":"2023-06-05T16:54:38.000Z","size":1537,"stargazers_count":47,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-04T21:31:09.471Z","etag":null,"topics":["mdx","vim","vim-mdxsourcebuilder"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VimWei.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-12T02:01:03.000Z","updated_at":"2025-04-26T11:26:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"3303bcd7-a8b7-426c-bf78-ecdc6e7d1931","html_url":"https://github.com/VimWei/MdxSourceBuilder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/VimWei/MdxSourceBuilder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VimWei%2FMdxSourceBuilder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VimWei%2FMdxSourceBuilder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VimWei%2FMdxSourceBuilder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VimWei%2FMdxSourceBuilder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VimWei","download_url":"https://codeload.github.com/VimWei/MdxSourceBuilder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VimWei%2FMdxSourceBuilder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262016886,"owners_count":23245574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mdx","vim","vim-mdxsourcebuilder"],"created_at":"2024-11-13T17:47:00.219Z","updated_at":"2025-06-26T06:36:07.138Z","avatar_url":"https://github.com/VimWei.png","language":"Vim Script","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MdxSourceBuilder\n\n一键制作图片词典：原始词条==\u003e 标准化词条==\u003e mdx源文件 ==\u003e mdx词典文件\n\n打开Vim，输入命令 `:bro so`，找到MdxSourceBuilder.vim，打开，结束。\n\n或者使用如下自动寻址方式 `:so MdxSourceBuilder.vim`\n\n![MdxSourceBuilder GIF Demo](https://raw.githubusercontent.com/VimWei/MdxSourceBuilder/master/MdxSourceBuilderDemo.gif)\n\n更多视频演示: https://www.bilibili.com/video/BV1Ki4y1g74X/\n\n## 背景\n\n### 需求背景\n\n时常遇到一些好资料，怎奈只有纸质版或扫描版之类，希望将这些资料转换为可以检索的mdx词典，既方便使用，也提高利用率。\n\n但是，常常在辛苦整理好词条（这是纯苦力活）之后，使用过往技术方案实现的成品却不够理想，不理想之处有两大方面：\n\n* 导航不理想，极大降低了用户的使用体验\n* 制作修订过程复杂，极大干扰了制作者的热情\n\n这完全可以通过工具来解决。\n\n### 程序设计背景\n\n本来我只是提出痛点，希望有高人能出手解决，怎奈高人大都不屑于处理。\n\n本非码农，可鉴于实在痛的厉害，只好自己用三脚猫功夫倒腾了人生第一个具有完整功能的程序。在此之前，从来没用过list、dict之类的，连这个github发布，都是现学现卖，还望高人不要耻笑，多提点才是。若有高人能够弄个更好的程序或是python版的或是GUI版的，那大家就有福了，我这纯粹抛砖引玉。\n\n非码农的好处，或许是可以有更好的用户视角：既考虑词典终端用户的使用体验，也考虑普通的词典制作者的使用体验。虽不能解决所有问题，但至少已能解决我自己的大部分诉求，希望也能解决众多mdx词典用户的些许痛点。\n\n## 解决方案\n\n基本思路： 1.原始词条==\u003e 2.标准化词条==\u003e 3.mdx源文件 ==\u003e 4.mdx词典文件\n\n1. 原始词条：鉴于资料的多样性，原始词条的获取方式也是多种多样，有OCR来的，有手工输入的，也有从其他人的资料转编译来的，也有是因为制作人的喜好或用的工具不同，导致原始词条的格式完全不同。这个特点造就了解决方案必须：(1)兼容多样性，将最常见的词条样式纳入进来；(2)开放性，用户可以根据需要自定义更多个性化的原始词条样式。\n\n    目前，本程序已经实现了对三种原始词条样式的兼容，用户也可以根据需要自定义添加。\n\n2. 标准化词条：若能将多样化的原始词条转化为标准化的词条，那么后续就可以标准化处理了。因此如何定义标准化词条就变得很重要，它是实现后续程序的基础。\n\n    目前，本程序已经提出了一个1.0版的最基本词条标准：一行页码，之后跟随多行关键词，每行一个关键词，如此往复。之所以说1.0版仅仅是最基本的标准，是因为这个标准还未能兼容如分栏、多层级词条等更复杂的情形，这些都有待后续有高人继续升级完善。\n\n3. mdx源文件：这个txt文件与其他技术方案的最大区别是——包含了足够优良的页面导航、关键词导航以及用户自由定义的导航信息，极大提升用户对图片词典的使用体验。图片导航如何设计仁者见仁智者见智，因此，解决方案必须：(1)足够优良，不能太简陋，能用机器实现的定位，就不要浪费肉眼定位、繁琐操作定位等人类的精力；(2)兼容多样性，将最常见的导航样式纳入进来，比如封面附录等无需关键词导航、正文等需要关键词导航、拼音等则无需导航直接转链接到现有页面即可；(3)开放性，用户可以根据需要自定义CSS样式，或者添加更多个性化的导航样式。\n\n    目前，本程序已经实现了三种导航样式，满足一本常见词典的基本需求，同时本程序会输出配套的精细CSS，方便用户个性化定制，此外用户也可以自由添加、改造导航样式。\n\n4. mdx词典文件：这个步骤是可选项，但一步到位可以极大提升用户的体验，更重要的是使用这个工具可以实现跨平台制作mdx词典了，不必局限于Windows，Linux、Mac统统不在话下。当然要说明的是，这一环节用到了另一个开源工具， https://github.com/liuyug/mdict-utils ，功劳统统属于他！\n\n## 程序文件及安装\n\n根本谈不上安装，因为整个程序就是3个Vim脚本文件而已，下载后，直接将这些脚本文件放在与词条文件同一个目录即可。\n\n* MdxSourceBuilder.vim  这是入口文件：上半部分是配置文件，需要用户定义词典参数；下半部分是主程序，通常无需理会\n* MdxSourceBuilderCore.vim  这是主程序调用的程序，仅当需要高级定制时修改，通常无需理会\n* MdxSourceBuilderCSS.vim  这是CSS文件，样式文件可以在这里定义，通常无需理会\n\n其他文件，都是附带的Readme、动图演示、参考资料、案例词典之类，可以忽略。\n\n## 体验案例“火星词典”\n\n为展示程序的特点，特制作了“火星词典”，供观摩使用。\n\n* 案例词条文件：以\"火星词典\"开头的所有.txt和.html文件，其中body.part1、body.part2、Pinyin三个文件展示了不同的词条格式\n* 程序及词典配置文件：以\"MdxSourceBuilder\"开头的所有.vim文件，其中MdxSourceBuilder.vim已经包含了案例词典的配置信息\n\n案例使用：打开Vim，输入命令 `:bro so`，找到MdxSourceBuilder.vim，打开，结束。\n\n* 你会看到，仅仅使用上述一个命令，就会输出3个成品文件：MarsDict.css，火星词典.txt，火星词典.mdx\n* 你若没有复现上述效果，也别着急，可能是vim、python和mdict-utils没有安装配置好，继续往下看说明文件即可解决\n* 之后你只要照猫画虎，即可制作自己的图片词典了\n\n## 使用说明\n\n### 极简使用说明\n\n打开Vim，输入命令 `:bro so`，找到MdxSourceBuilder.vim，打开，结束。\n\n### 概要使用说明\n\n1. 按格式要求准备好词条文件\n2. 使用任意文本编辑器配置好 MdxSourceBuilder.vim 中的词典参数\n3. 打开Vim，输入命令 `:bro so`，找到MdxSourceBuilder.vim，打开，结束。\n\n### 详细使用说明\n\n* 直接打开查阅 MdxSourceBuilder.vim，其中“使用方法”及“词典参数配置”两个部分自带详细使用说明。\n* 若想深度定制，把所有以\"MdxSourceBuilder\"开头的.vim文件看一遍就知道怎么处理了，即使不懂VimL语言，看注释也能猜个差不离。\n\n### Tips: 使用更便捷快速的命令\n\n* 若觉得如下步骤还要寻找MdxSourceBuilder.vim，有些麻烦\n\n打开Vim，输入命令 `:bro so`，找到MdxSourceBuilder.vim，打开，结束。\n\n* 那么建议使用如下更快的方法(自动寻址)：\n\n用 Vim 打开 MdxSourceBuilder.vim，新建文档`:new`，输入命令`:so MdxSourceBuilder.vim`\n\n甚至输入`:so mdx` 之后，按Tab键即可自动补全命令 `:so MdxSourceBuilder.vim`\n\n这个新方法的逻辑，其实是利用Vim首次打开一个文件时，会将该文件所在目录设置为Vim当前工作目录。\n\n也可以使用系统命令 `:cd` 来更换Vim的工作目录，如 `:cd d:\\火星词典`\n\n若您使用附带的`_vimrc`，还可以直接使用自定义的命令 `:CD` 将Vim的工作目录切换为当前文件所在目录。\n\n### 相关FAQ\n\n1. 关于Vim的使用：号称编辑器之神，要想完全掌握确实有难度，但本程序要用到的Vim知识则少的可怜，不必顾虑。\n\n* Q: vim出现乱码\n* A: 请将`_vimrc`文件复制到`$HOME`目录下，Windows下即是`c:\\Users\\YourName\\`\n\n     其中必备行是 set encoding=utf-8，其他可选，用于提升Vim使用体验\n\n2. 关于mdict-utils的使用：除了打包，还有很多其他解包、读取等功能，大家可以尽情挖掘改造。\n\n## 社区讨论与反馈\n\n* Github: https://github.com/VimWei/MdxSourceBuilder\n* 讨论社区1: https://forum.freemdict.com/t/topic/2882\n* 讨论社区2: https://www.pdawiki.com/forum/thread-41287-1-1.html\n\n## LICENSE\n\n[GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvimwei%2Fmdxsourcebuilder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvimwei%2Fmdxsourcebuilder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvimwei%2Fmdxsourcebuilder/lists"}