Skip to content

VimWei/MdxSourceBuilder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MdxSourceBuilder

一键制作图片词典:原始词条==> 标准化词条==> mdx源文件 ==> mdx词典文件

打开Vim,输入命令 :bro so,找到MdxSourceBuilder.vim,打开,结束。

或者使用如下自动寻址方式 :so MdxSourceBuilder.vim

MdxSourceBuilder GIF Demo

更多视频演示: https://www.bilibili.com/video/BV1Ki4y1g74X/

背景

需求背景

时常遇到一些好资料,怎奈只有纸质版或扫描版之类,希望将这些资料转换为可以检索的mdx词典,既方便使用,也提高利用率。

但是,常常在辛苦整理好词条(这是纯苦力活)之后,使用过往技术方案实现的成品却不够理想,不理想之处有两大方面:

  • 导航不理想,极大降低了用户的使用体验
  • 制作修订过程复杂,极大干扰了制作者的热情

这完全可以通过工具来解决。

程序设计背景

本来我只是提出痛点,希望有高人能出手解决,怎奈高人大都不屑于处理。

本非码农,可鉴于实在痛的厉害,只好自己用三脚猫功夫倒腾了人生第一个具有完整功能的程序。在此之前,从来没用过list、dict之类的,连这个github发布,都是现学现卖,还望高人不要耻笑,多提点才是。若有高人能够弄个更好的程序或是python版的或是GUI版的,那大家就有福了,我这纯粹抛砖引玉。

非码农的好处,或许是可以有更好的用户视角:既考虑词典终端用户的使用体验,也考虑普通的词典制作者的使用体验。虽不能解决所有问题,但至少已能解决我自己的大部分诉求,希望也能解决众多mdx词典用户的些许痛点。

解决方案

基本思路: 1.原始词条==> 2.标准化词条==> 3.mdx源文件 ==> 4.mdx词典文件

  1. 原始词条:鉴于资料的多样性,原始词条的获取方式也是多种多样,有OCR来的,有手工输入的,也有从其他人的资料转编译来的,也有是因为制作人的喜好或用的工具不同,导致原始词条的格式完全不同。这个特点造就了解决方案必须:(1)兼容多样性,将最常见的词条样式纳入进来;(2)开放性,用户可以根据需要自定义更多个性化的原始词条样式。

    目前,本程序已经实现了对三种原始词条样式的兼容,用户也可以根据需要自定义添加。

  2. 标准化词条:若能将多样化的原始词条转化为标准化的词条,那么后续就可以标准化处理了。因此如何定义标准化词条就变得很重要,它是实现后续程序的基础。

    目前,本程序已经提出了一个1.0版的最基本词条标准:一行页码,之后跟随多行关键词,每行一个关键词,如此往复。之所以说1.0版仅仅是最基本的标准,是因为这个标准还未能兼容如分栏、多层级词条等更复杂的情形,这些都有待后续有高人继续升级完善。

  3. mdx源文件:这个txt文件与其他技术方案的最大区别是——包含了足够优良的页面导航、关键词导航以及用户自由定义的导航信息,极大提升用户对图片词典的使用体验。图片导航如何设计仁者见仁智者见智,因此,解决方案必须:(1)足够优良,不能太简陋,能用机器实现的定位,就不要浪费肉眼定位、繁琐操作定位等人类的精力;(2)兼容多样性,将最常见的导航样式纳入进来,比如封面附录等无需关键词导航、正文等需要关键词导航、拼音等则无需导航直接转链接到现有页面即可;(3)开放性,用户可以根据需要自定义CSS样式,或者添加更多个性化的导航样式。

    目前,本程序已经实现了三种导航样式,满足一本常见词典的基本需求,同时本程序会输出配套的精细CSS,方便用户个性化定制,此外用户也可以自由添加、改造导航样式。

  4. mdx词典文件:这个步骤是可选项,但一步到位可以极大提升用户的体验,更重要的是使用这个工具可以实现跨平台制作mdx词典了,不必局限于Windows,Linux、Mac统统不在话下。当然要说明的是,这一环节用到了另一个开源工具, https://github.com/liuyug/mdict-utils ,功劳统统属于他!

程序文件及安装

根本谈不上安装,因为整个程序就是3个Vim脚本文件而已,下载后,直接将这些脚本文件放在与词条文件同一个目录即可。

  • MdxSourceBuilder.vim 这是入口文件:上半部分是配置文件,需要用户定义词典参数;下半部分是主程序,通常无需理会
  • MdxSourceBuilderCore.vim 这是主程序调用的程序,仅当需要高级定制时修改,通常无需理会
  • MdxSourceBuilderCSS.vim 这是CSS文件,样式文件可以在这里定义,通常无需理会

其他文件,都是附带的Readme、动图演示、参考资料、案例词典之类,可以忽略。

体验案例“火星词典”

为展示程序的特点,特制作了“火星词典”,供观摩使用。

  • 案例词条文件:以"火星词典"开头的所有.txt和.html文件,其中body.part1、body.part2、Pinyin三个文件展示了不同的词条格式
  • 程序及词典配置文件:以"MdxSourceBuilder"开头的所有.vim文件,其中MdxSourceBuilder.vim已经包含了案例词典的配置信息

案例使用:打开Vim,输入命令 :bro so,找到MdxSourceBuilder.vim,打开,结束。

  • 你会看到,仅仅使用上述一个命令,就会输出3个成品文件:MarsDict.css,火星词典.txt,火星词典.mdx
  • 你若没有复现上述效果,也别着急,可能是vim、python和mdict-utils没有安装配置好,继续往下看说明文件即可解决
  • 之后你只要照猫画虎,即可制作自己的图片词典了

使用说明

极简使用说明

打开Vim,输入命令 :bro so,找到MdxSourceBuilder.vim,打开,结束。

概要使用说明

  1. 按格式要求准备好词条文件
  2. 使用任意文本编辑器配置好 MdxSourceBuilder.vim 中的词典参数
  3. 打开Vim,输入命令 :bro so,找到MdxSourceBuilder.vim,打开,结束。

详细使用说明

  • 直接打开查阅 MdxSourceBuilder.vim,其中“使用方法”及“词典参数配置”两个部分自带详细使用说明。
  • 若想深度定制,把所有以"MdxSourceBuilder"开头的.vim文件看一遍就知道怎么处理了,即使不懂VimL语言,看注释也能猜个差不离。

Tips: 使用更便捷快速的命令

  • 若觉得如下步骤还要寻找MdxSourceBuilder.vim,有些麻烦

打开Vim,输入命令 :bro so,找到MdxSourceBuilder.vim,打开,结束。

  • 那么建议使用如下更快的方法(自动寻址):

用 Vim 打开 MdxSourceBuilder.vim,新建文档:new,输入命令:so MdxSourceBuilder.vim

甚至输入:so mdx 之后,按Tab键即可自动补全命令 :so MdxSourceBuilder.vim

这个新方法的逻辑,其实是利用Vim首次打开一个文件时,会将该文件所在目录设置为Vim当前工作目录。

也可以使用系统命令 :cd 来更换Vim的工作目录,如 :cd d:\火星词典

若您使用附带的_vimrc,还可以直接使用自定义的命令 :CD 将Vim的工作目录切换为当前文件所在目录。

相关FAQ

  1. 关于Vim的使用:号称编辑器之神,要想完全掌握确实有难度,但本程序要用到的Vim知识则少的可怜,不必顾虑。
  • Q: vim出现乱码

  • A: 请将_vimrc文件复制到$HOME目录下,Windows下即是c:\Users\YourName\

    其中必备行是 set encoding=utf-8,其他可选,用于提升Vim使用体验

  1. 关于mdict-utils的使用:除了打包,还有很多其他解包、读取等功能,大家可以尽情挖掘改造。

社区讨论与反馈

LICENSE

GPLv3

Releases

No releases published

Packages

No packages published