这两天舍得在转换词库,词库分别来源于《新东方背单词5》和《轻轻松松背单词》,前者是RTF文件转成文本格式,后者是通过MultiConvert这个软件,将新东方的GDS词库转换成TAB文本。舍得为了制作方便,重新编写了两个Emeditor的宏。现在把它分享出来,并加上一些注释。

先看看新东方背单词的导出的文本格式:

prodigy

[‘pr3did9i]
n.奇才,天才

bookworm

[‘bukw4:m]
n.极爱读书者;书呆子

devotee

[devou’ti:]
n.热爱…者;献身于…的人

adolescence

[‘1d4u’lesns]
n.青春期

compulsory

[k4m’p8ls4ri]
n.强制的,义务的

很简单的两行式,这种有规律的词库是最好处理的了,相对应的宏如下:

//寻找空行,并在空行的下一行行首插入Q:,注意“\n”前有个“^”。

document.selection.Replace(“^\\n”,”\\nQ:
“,eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
//查“回车符+非Q开头的行”,插入A:

document.selection.Replace(“\\n([^Q])”,”\\nA:
\\1″,eeFindNext | eeFindReplaceCase | eeReplaceAll |
eeFindReplaceRegExp);
//插入音标字体

document.selection.Replace(“(^Q:.*?)\\[(.*?)\\]”,”\\1[<font
face=\x22TOPhonetic\x22>\\2</font>]”,eeFindNext
| eeReplaceAll | eeFindReplaceRegExp);
//插入语音文件

document.selection.Replace(“(^Q:
)(.)(.*?)(

.*?$)”,”
\\1\\2\\3\\4<bgsound
src=\x22file:///d:/speech/\\2/\\2\\3.mp3\x22
LOOP=TRUE>”,eeFindNext | eeReplaceAll |
eeFindReplaceRegExp);
//分别给Q、A两行定义字体

document.selection.Replace(“(^Q:
)(.*?$)”,”
\\1<FONT
face=\x22Tohoma\x22;
size=4>\\2</font>”,eeFindNext
| eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace(“(^A: )(.*?$)”,”
\\1<FONT
face=&#24494;&#36719;&#38597;&#40657;
size=4>\\2</font>”,eeFindNext
| eeReplaceAll | eeFindReplaceRegExp);
//把开头两行删掉

document.selection.StartOfDocument(false);

document.selection.LineDown(true,1);
document.selection.Delete(1);
document.selection.Delete(1);

//另存,注意此时可将文件另存为中欧ISO编码
editor.ExecuteCommandByID(4100);

文件用法:将这段宏文本复制到emeditor中,另存为.jsee(javascript for
emeditor)格式文件,即可以在宏中调用它。

还有一种简单的方法就是随便录制一个宏,取个名字,然后编辑这个宏,将这段文本复制进去就行。

再来看看用MultiConvert这个软件转换的词库,通常将它转成TAB文本格式,比较容易处理,相关的宏如下:

//因为MultiConvert转换过来的词库都是单行式的,所以先给行首加入Q:,注意这里用了“()”和“\1”来将行首的原内容放回到Q:后面。

document.selection.Replace(“(^.)”,”\\nQ:
\\1″,eeFindNext | eeFindReplaceCase | eeReplaceAll |
eeFindReplaceRegExp);

//用“\t.*?)\t”来找到第二个“\t”的位置,并在这里插入回车符和A:。
document.selection.Replace(“(
\\t.*?)\\t”,”\\1\\nA:
“,eeFindNext | eeFindReplaceCase | eeReplaceAll |
eeFindReplaceRegExp);

//加音标,找的是这对“[]”
document.selection.Replace(“[]”,””,eeFindNext | eeFindReplaceCase |
eeReplaceAll);
document.selection.Replace(“
\\t\\[(.*?)\\]”,”\\t[<font
face=\x22Kingsoft Phonetic
Plain\x22>\\1</font>]”,eeFindNext
| eeFindReplaceCase | eeReplaceAll | eeFindReplaceRegExp);
//插入语音文件

document.selection.Replace(“(^Q:
)(.)(.*?)(
\\t.*?$)”,”\\1\\2\\3\\4<bgsound
src=\x22file:///d:/speech/\\2/\\2\\3.mp3\x22
LOPP=TRUE>”,eeFindNext | eeReplaceAll |
eeFindReplaceRegExp);

//分别给Q、A两行定义字体
document.selection.Replace(“(^Q: )(.*?$)”,”
\\1<FONT
face=\x22Tohoma\x22;
size=4>\\2</font>”,eeFindNext
| eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace(“(^A: )(.*?$)”,”
\\1<FONT
face=&#24494;&#36719;&#38597;&#40657;
size=4>\\2</font>”,eeFindNext
| eeReplaceAll | eeFindReplaceRegExp);
//把开头两行删掉

document.selection.StartOfDocument(false);

document.selection.LineDown(true,1);
document.selection.Delete(1);

//另存,注意此时可将文件另存为中欧ISO编码
editor.ExecuteCommandByID(4100);

这里暂且就讲这两个例子,舍得讲例子主要是为了启发大家的思路,并不鼓励大家去生搬硬套。不过对于新东方和MultiConvert转换的词库,基本上可以直接这样子应用了。大家若能学会运用好宏这个工具,相必工作效率会提高很多。