TA的每日心情 | 开心 2020-11-30 19:14 |
|---|
签到天数: 249 天 [LV.8]以坛为家I
|
本帖最后由 DIC4Khmer 于 2016-3-11 09:11 编辑
, A& \: _! I5 H6 Y! P/ j3 c$ Y5 ]* _" o2 a
从接触MDICT,到立志做一个自己的词典,历时半个月,虽然很多问题不懂,但是到今天为止让我收获良多。8 O- C3 T3 t% n3 B
做图片词典的初衷是看见chigre3大大制作的精美的图片词典而心生痒痒,自己也确实需要一本衬手的电子词典,于是我开始了自己的制作之路。
( J3 p" h9 t- A% _# M% M' x9 C 感谢chigre3大大的支持,连非常珍贵的源代码都给我借鉴,感谢网站的知识分享,让我从搜索帖子中发现知识。但是作为一个小蜥蜴,自己心里的困惑是很多前辈想不到的。我们可能很简单的问题都想不明白,比如我最初一直弄不明白为什么我按格式做的词典加载到MDICT却无法搜索。但论坛里却没有相应的教程,可能是因为太简单了,前辈们没时间或者觉得没必要做,但是这可能会让我们这些小蜥蜴们卡在那里。- u' D; c7 f7 W( ^4 U/ X# O: M
所以我希望能够把我做电子词典的过程分享出来,一是感谢论坛的帮助,二是希望能对其他人有所借鉴。5 N4 B( A# m( E- T
我的词典的外观是模仿chigre3大大的排版的,因为我觉得他做的很美观、很舒服,不一样的是:我因为不懂Python编程,完全没用上大大好心赠于我的源码,而是在自己使尽浑身解数之下,终于找到的一个只用word、excel和emeditor三个软件,不停的查找替换而成功做成词典的方法。这也是我的曲线救国之法,实属无奈。如果大家有兴趣,我会慢慢地把这个过程在这个帖子中梳理出来,逻辑其实很简单,只是过程很繁琐。
5 s2 ^! l* N" K2 J% w n 我的方法其实总结起来就是:1、获取原始文件;2、添加链接;3、去重,合并词条;4、加内部跳转命令;5、添加完整标记。2 p& f* J4 f9 }% M: M4 l
+ ?. e+ e( ]1 ?4 G) }9 Z
################################################################################################################################################
8 _0 I+ r" |* \- W& t- N9 m& s第一步:获取原始文件
, p( Q) r! ~. x; v 我的原始文件的录入格式是:
" Q {, `5 |* ? { 词1|词2|词3|词4/词5|词6|词7|词8
7 x6 R1 L4 l/ w# y$ d 其中,同列的词与词以“|”分隔,左右列单词间以“/”分隔。这里为方便输入,可以输入分号“;”代替“|”,后期将其替换为“|”即可。每行为一页,录入时确保数据准确,如果遇到左列或右列没有词,甚至于整页都是上一页某个词的解释时要尤其注意,(可以使用特殊标记表示,后期可以替换掉)避免后期出现错误。1 u' _% ]& W2 S' e
词典录入完成后,利用word中的域进行自动排序,形成“页码 词1|词2|词3|词4/词5|词6|词7|词8”格式,如果前期录入时没有错误,自动生成的数字就是该数据行所在的页码,为避免出错,可以每录入100行就生成页码一次,然后将域文本转换为普通文本。重复此过程,直至完全获取原始文件。
5 u8 h Y ?% T& ~ 注意:为了方便手机上使用,同时也方便后续联合查找,我制作词典计划将每个词条都添加链接。如果碰到同一个词在字典里出现多个词条,建议采取统一的处理方法,比如统一加编号“词1(1)|词1(2)|词1(3)”等,后期使用替换将(1)(2)(3)等编号去除即可;为方便操作,同一词的多个词条,我选择只计算一次。5 J) I$ C! F' Z2 m. U0 y8 |
第二步:获取每个词所在页码及对应左右列位置信息,即要最终实现【左1|4】或【右6|20】这样的效果,我们必须有单个词的页码及位置信息。& T( N j7 Z8 h) N
通过查找替换将word中“|”和“/”替换为所需数据。将word中全部数据复制到excel表A列中待用。5 a$ A5 {, t3 b; ^
继续,再次对原始数据时行处理,这次更简单,删掉全部的数字,“|”和“/”全部替换为段落标记,让每个单词成一行。
( o/ A4 T! Q; g" T9 B; [0 v3 R将本次全部数据放到excel表B列中。
, @6 W. [, _+ g% N e至此,得到excel中的数据文件。2 I2 @) _8 x: U& Z! s
下面,使用IF函数判断A列与B列同行数据是否相同,筛选出不同的成C列。
: X+ `6 |4 b8 D4 [$ ?" V用left函数筛选出位置数据+ l0 P. p5 u$ h( [
然后,填充即可。
# _/ p& D/ F) R5 ^& h6 \( X r再使用countif函数就能得到全部位置信息。0 z$ K1 D# b1 k
第三步,去掉每个词对应的“页码+左或右”中的非页码信息,只保留每个词对应的页码) x" Q. G9 n% h# L+ `1 r* Y8 }& Y% ^
然后所有准备工作完成,开始格式编辑。! _# l+ ^ o5 f- i1 }" I
将词与页码两列数据,调换序列,页码在左,单词在右,然后拷贝进emeditor进行数据处理。添加链接。查找"^(.+?)\t(.+?)$",替换为“\1\t<a href="entry://\2">\2</a>”,为每个单词添加链接。链接添加完毕后,再对某页的数据进行整合。查找“^(.+?)\t(.+?)\n\1\t”,替换为“\1\t\2|”,选择全部替换,反复多次,直到查找不到为止。这样我们得到了某页码下词的集合。如图:
; P! P. I5 w+ U, [3 Q( E3 ?将刚才的词与页码两列数据复制新的工作表中,保持词在左,页码在右的格式,然后在D列复制上刚才emeditor中处理的数据。在C列中使用VLOOKUP进行匹配,使每个页码都匹配上该页上所有的词的信息。剩下的就比较简单了,将ABC三列数据全部复制,选择性数值粘贴至新的工作表中,然后全部复制到emeditor中进行编辑。
3 Q) i4 Z' v, l7 t" x' m& e# v查找“^(.+?)\t(.+?)\t(.+?)$”,替换为“\1\t<a name=\1></a>\1<Br>\3<Br><img src="/\2.png">”。
$ R5 b7 S3 @: G" s3 z如果要添加上下页,可以参照tsiank的方法制作,https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13451。
# Q* @' j3 v) p8 ~! P( a- @继续,将数据调整为MDX需要的三行式。查找“^(.+?)\t(.+?)$”,替换为“\1\n\2\n</>”,全部替换。0 f3 g0 D7 I6 s' T% H+ K( Y3 [
将数据保存为utf-8,无签名格式,然后用MDXBuilder进行生成即可。( o& x' `5 ]7 J% }! q5 @
当然,以上只是将大致的所需步骤进行陈述,对于字体、格式等排版方面的设置,大家可以按要求进行修改。, x1 c( w1 B! p0 I
感谢支持!如有疑问,可用站内信进行交流。 o& W1 W: G* \6 w' L u
感谢版主将贴子高亮!
* n: | q2 B3 H1 I, J |
|