加载中…
正文 字体大小:

制作SuperMemo词库的两个宏

(2009-08-03 22:26:56)
标签:

supermemo

词库

教育

分类: SuperMemo学习

    这两天舍得在转换词库,词库分别来源于《新东方背单词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转换的词库,基本上可以直接这样子应用了。大家若能学会运用好宏这个工具,相必工作效率会提高很多。 

 

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有