在学习英语的过程中,可能最有效的方法就是大量的背诵和练习。
但是网上目前又没有一个比较理想的方法,实现一种方式:
- 通过文本记录要背诵的单词(词组)和句子(短语)
- 根据单词和语句生成背诵默写文档
- 生成的文档要简洁美观可以使用打印机印出来
- 还需要简单方便
为此,我肝了2.5天,使用Python3开发了WordListGenerator 单词表生成工具,PDF渲染使用XeLatex实现,交互方式为命令行终端。
(以下是工具演示)
后续更新计划:
- 生成的PDF文档通过配置文件设置打印机名称后,可以一键打印
- 生成单词默写表对应的答案表,表示出需要默写的字母和单词的位置
- 更灵活的PDF页面渲染配置
- 支持只生成任意部分的PDF而不是全部的
工具已打包为exe执行程序:
- 建议在Windows11使用(体验最好)
- 也支持Windows10使用
- 其他Windows版本未测试,能否使用未知
- 其余操作系统(比如Linux)不支持使用
本工具的运行需要依赖Latex环境:
- 建议使用texlive2023
- 2022版本也可以
- 其余版本未测试,能否使用未知
本工具的使用是完全免费的!
Latex源码部分遵顼MIT许可,如果你熟悉Latex,可以自定义修改渲染的页面布局。
但本工具的开发代码恕不公开。
任何人都可以使用本工具生成PDF文档,且生成的PDF文档个人之间可以随意打印、分享、印刷等使用。
但不得对通过本工具生成的PDF进行任何形式的售卖或有偿转让,且通过本工具生成的PDF文档禁止任何商业目的的用途。
- 修复对照表-词组输入词组(包含空格的多个单词)时解析错误问题
- 修复删除编译产生文件无效问题
- 更改单词表生成路径为桌面路径
- 修改编译方法,解除错误输出循环卡死问题(latex编译失败卡死问题依旧无解)
- 修复了短单词默写不显示问题
- 修复了端句子默写不显示问题
- 优化了页面排版的间距
- 词组默写排版去掉了划线
- 短语默写添加了译文
- 优化了工具已知其他问题
输入的单词表txt文档:
# 使用#符号开头的内容将会被程序忽略
# 以下是单词表的示例,单词表不允许空空行
# 短语
stance;位置;n.姿态
composition;n.成分;作品;合成物
contract;n.合同;感染(疾病);招致
individual;adj.单独的;个体
narrative;n.记叙文;adj.讲述的
constitution;组织;体质;组成
distinguish;vt & vi.辨别;区别
consistent;adj.始终如一的;一致的
practitioner;n.从业者;实践者
architecture;n.建筑学;体系结构
appropriate;adj.适当的;vt.挪用
exaggerate;(使)增加;夸张
relationship;n.关系;联系
anticipate;vt.先于...行动;期望
ambitious;追求;抱负、志向
indispensable;adj.必不可少的;必须的
# 句子
~~This is also the spiritual successor to the 3DS which means that we're finally getting games such as Pokemon,moving over to a full, proper Nintendo console.;这也算是3DS的精神续作,也就是说,宝可梦终于要上主机平台了。
~~There's always a constant fear of falling behind everyone else on the socially perpetuated race to the finish line, whether that be toward graduate school, medical school or lucrative career.;社会上永久延续着一场“向终点冲刺的比赛”,无论终点是研究生院、医学院还是赚钱的职业,人们总有一种落后于别人的担忧
~~It's worth clarifying that these findings relate to relatively brief periods of solitude. This is distinct from prolonged loneliness.;值得说明的一点是,上述研究结果只能表明相对短暂的独处时间对情绪的影响,与长期孤独对情绪的影响截然不同
~~As the number of business schools increases-the AACSB, a body which accredits 633 business schools in 41 countries, estimates there are now 13,670 institutions worldwide offering a business degree-being able to distinguish yourself from the masses matters more and more.;国际商学院联合会(AACSB)估计现在全世界有13670所机构提供商业学位的教育,国际商学院联合会(AACSB)在41个国家认证了633所商学院。当商学院数量不断增加,如何让自己在大众中脱颖而出显得越来越重要
~~Scientists believe that New Zealand has no native land mammals, that only birds and a couple of species of bats existed there when humans arrived.;科学家表示,新西兰本土没有哺乳动物,当人们进入这方土地的时候,这里只有鸟类和一些蝙蝠
~~As a student, he worked odd jobs to help his family get through the tail end of the Great Depression, including delivering sandwiches in Manhattan, a far cry from his dreams of writing sci-fi novels.;在学生时期,他就做些零工帮衬家里度过经济大萧条的尾声时期。他在曼哈顿送过三明治,这与他写科幻小说的梦想相去甚远只要尊重下方的输入标识符规则,可以处理任意个数的内容。
标识符规则:
xxxx;yyyy;zzzz;
其中:
xxx:为自定义英文单词数字和标点符号
;:为标识符,英文分号,注意:不要输成中文分号
yyyy:释意,可以是任意字符
;:为标识符,中文分号,注意:不要输成英文分号
zzzz:释意,可以是任意字符。释意使用中文分号做标识符区分,工具将自动读取一个单词的多个中文。
标识符规则:
~~xxxx xxxx xxxxx xxxx;yyyyy yyy yyy yyy
其中:
~~:为句子标识符,任何标记该标识符的内容都将被当作英语句子进行处理
xxxx xxxx xxxxx xxxx:由多个单词组成的英文句子,可以包含数字和英文标点符号
;:为标识符,英文分号,注意:不要输成中文分号
yyyyy yyy yyy yyy:句子的翻译
生成的PDF对照表:
生成的PDF默写表:
实际打印效果:
工具目录下存在配置文件:config_WordListGenerator.json
{
"页面": {
"标题": "2023考研单词 第一单元",
"日期": "",
"目标": "考研",
"计时": "2023-12-24",
"难度": "3",
"激励": "一个人逃离痛苦的力量,大于他追求快乐的力量",
"二维码": "https://space.bilibili.com/50502376?spm_id_from=333.337.0.0",
"水印": "",
"渲染路径":"D:\\DeskTop\\DevGit_WordListGenerator\\Latex_Temp"
},
"设置": {
"页宽度": "210mm",
"页高度": "297mm",
"左间距": "2.5cm",
"右间距": "2.5cm",
"上间距": "2.8cm",
"下间距": "2.0cm",
"列间距": "2.6cm",
"列数量": "2",
"隐藏输出": "是"
},
"对照表": {
"标题": "对照表 ",
"短语": {
"标题": "短语 ",
"列数量": "2",
"排序": "随机",
"不独立页":"是"
},
"句子": {
"标题": "句子 ",
"列数量": "1",
"排序": "随机",
"不独立页":"否"
}
},
"默写表": {
"标题": "默写表 ",
"词组默写": {
"标题": "词组默写 ",
"列数量": "2",
"排序": "按序",
"默写比例":"0.75",
"默写内容比例":"0.30",
"不独立页":"是"
},
"英译中": {
"标题": "英译中 ",
"列数量": "2",
"排序": "升序",
"默写比例":"0.65",
"不独立页":"是"
},
"中译英": {
"标题": "中译英 ",
"列数量": "2",
"排序": "按序",
"默写比例":"0.95",
"不独立页":"是"
},
"短语默写": {
"标题": "短语默写 ",
"列数量": "1",
"排序": "随机",
"默写比例":"0.68",
"默写内容比例":"0.32",
"不独立页":"是"
},
"短语翻译": {
"标题": "短语翻译 ",
"列数量": "1",
"排序": "升序",
"默写比例":"0.85",
"不独立页":"是"
}
}
}设置一些基本的页面渲染输出
"页面": {
"标题": "2023考研单词 第一单元",
"日期": "",
"目标": "考研",
"计时": "2023-12-24",
"难度": "3",
"激励": "一个人逃离痛苦的力量,大于他追求快乐的力量",
"二维码": "https://space.bilibili.com/50502376?spm_id_from=333.337.0.0",
"水印": "",
"渲染路径": "D:\\DeskTop\\DevGit_WordListGenerator\\Latex_Temp"
}- 标题:渲染PF的页眉左侧标题
- 日期:格式
yyyy-mm-dd为空自动设置为当前日期,可指定其他任意日期,渲染在PDF页眉右侧。 - 目标:渲染PDF的顶部目标,为空不显示,否则自动在定义目标字符前加“距离”二字,如目标设置为“考研”,则在PDF页眉右侧渲染“距离考研”。
- 计时:设置目标的时间,格式
yyyy-mm-dd,为空不设置。否则自动计算目标时间和日期之间的天数,渲染在PDF页眉右侧。 - 难度:输入数字,将根据输入的数字自动渲染默写表后方的☆。用以表示默写的难度。
- 激励:自定义字符,比如一段励志文字,自动渲染在页眉右下角,为空不显示。
- 二维码:自定义任意英文字符或链接,为空不显示。可以是考试休息娱乐内容,也可以是英语听力在线课文等。
- 水印:为空不显示,否则将全文添加自定义水印。
- 渲染路径:工具结构目录下的
Latex_Temp文件夹的绝对路径地址,用于工具读取渲染模板,输入json时注意路径字符转义。
设置渲染PDF页面的尺寸和内容的间距以及终端的信息输出
"设置": {
"页宽度": "210mm",
"页高度": "297mm",
"左间距": "2.5cm",
"右间距": "2.5cm",
"上间距": "2.8cm",
"下间距": "2.0cm",
"列间距": "2.6cm",
"列数量": "2",
"隐藏输出": "是"
}- 页宽度:渲染页面的宽度,输入格式为:数字mm,即只支持mm为单位的宽度
- 页高度:渲染页面的高度,输入格式为:数字mm,即只支持mm为单位的高度
- 左间距:正文与页面的左侧间距,输入格式为:数字cm,即只支持cm为单位的间距
- 右间距:正文与页面的右侧间距,输入格式为:数字cm,即只支持cm为单位的间距
- 上间距:正文与页面的上侧间距,输入格式为:数字cm,即只支持cm为单位的间距
- 下间距:正文与页面的下侧间距,输入格式为:数字cm,即只支持cm为单位的间距
- 列间距:列与列之间的间距,输入格式为:数字cm,即只支持cm为单位的间距
- 列数量:默认的列数量,该参数已经无意义,因为后续还需要重新定义列数量
- 隐藏输出:是否隐藏latex编译时的信息输出,为“是”隐藏,为其他任意字符时不隐藏
设置PDF页面的单词对照表参数
"对照表": {
"标题": "对照表 ",
"短语": {
"标题": "短语 ",
"列数量": "2",
"排序": "随机",
"不独立页":"是"
},
"句子": {
"标题": "句子 ",
"列数量": "1",
"排序": "随机",
"不独立页":"否"
}- 标题:单词对照表参数的标题
- 短语-标题:短语即单词,定义对照表单词标题
- 短语-列数量:定义显示的列数
- 短语-排序:定义排序方式,支持以下四种排序:
- 按序:按照输入顺序进行排序
- 升序:按字母升序(Z-A)进行排序
- 降序:按字母降序(A-Z)进行排序
- 随机:随机排序
- 短语-不独立页:是否独立显示为一页,为“是”不独立显示,否则任意字符独立显示
- 句子-标题:定义对照表句子标题
- 句子-列数量:定义显示的列数
- 句子-排序:定义排序方式,支持以下四种排序:
- 按序:按照输入顺序进行排序
- 升序:按字母升序(Z-A)进行排序
- 降序:按字母降序(A-Z)进行排序
- 随机:随机排序
- 句子-不独立页:是否独立显示为一页,为“是”不独立显示,否则任意字符独立显示
设置PDF页面的单词默写表参数
"默写表": {
"标题": "默写表 ",
"词组默写": {
"标题": "词组默写 ",
"列数量": "2",
"排序": "按序",
"默写比例":"0.75",
"默写内容比例":"0.30",
"不独立页":"是"
},
"英译中": {
"标题": "英译中 ",
"列数量": "2",
"排序": "升序",
"默写比例":"0.65",
"不独立页":"是"
},
"中译英": {
"标题": "中译英 ",
"列数量": "2",
"排序": "按序",
"默写比例":"0.95",
"不独立页":"是"
},
"短语默写": {
"标题": "短语默写 ",
"列数量": "1",
"排序": "随机",
"默写比例":"0.68",
"默写内容比例":"0.32",
"不独立页":"是"
},
"短语翻译": {
"标题": "短语翻译 ",
"列数量": "1",
"排序": "升序",
"默写比例":"0.85",
"不独立页":"是"
}
}- 标题:单词默写表参数的标题
- 词组默写-标题:定义词组默写标题
- 词组默写-列数量:定义显示的列数
- 词组默写-排序:定义排序方式,支持以下四种排序:
- 按序:按照输入顺序进行排序
- 升序:按字母升序(Z-A)进行排序
- 降序:按字母降序(A-Z)进行排序
- 随机:随机排序
- 词组默写-默写比例:0.1-1.0之间的数值,假设存在10个词组,设置比例为0.75,则随机显示10*0.75=7个(整数截取)词组
- 词组默写-默写内容比例:0.1-1.0之间的数值,假设单词有10个字母,设置比例为0.30,则随机设置10*0.30=3个字母需要填写,填写位置随机
- 词组默写-不独立页:是否独立显示为一页,为“是”不独立显示,否则任意字符独立显示
- 英译中-标题:定义英译中标题
- 英译中-列数量:定义显示的列数
- 英译中-排序:定义排序方式,支持以下四种排序:
- 按序:按照输入顺序进行排序
- 升序:按字母升序(Z-A)进行排序
- 降序:按字母降序(A-Z)进行排序
- 随机:随机排序
- 英译中-默写比例:0.1-1.0之间的数值,假设存在10个词组,设置比例为0.75,则随机显示10*0.75=7个(整数截取)词组
- 英译中-不独立页:是否独立显示为一页,为“是”不独立显示,否则任意字符独立显示
- 中译英-标题:定义中译英标题
- 中译英-列数量:定义显示的列数
- 中译英-排序:定义排序方式,支持以下四种排序:
- 按序:按照输入顺序进行排序
- 升序:按字母升序(Z-A)进行排序
- 降序:按字母降序(A-Z)进行排序
- 随机:随机排序
- 中译英-默写比例:0.1-1.0之间的数值,假设存在10个词组,设置比例为0.75,则随机显示10*0.75=7个(整数截取)词组
- 中译英-不独立页:是否独立显示为一页,为“是”不独立显示,否则任意字符独立显示
- 短语默写-标题:定义短语默写标题
- 短语默写-列数量:定义显示的列数
- 短语默写-排序:定义排序方式,支持以下四种排序:
- 按序:按照输入顺序进行排序
- 升序:按字母升序(Z-A)进行排序
- 降序:按字母降序(A-Z)进行排序
- 随机:随机排序
- 短语默写-默写比例:0.1-1.0之间的数值,假设存在10个句子,设置比例为0.75,则随机显示10*0.75=7个(整数截取)句子
- 短语默写-默写内容比例:0.1-1.0之间的数值,假设句子有10个单词,设置比例为0.30,则随机设置10*0.30=3个单词需要填写,填写位置随机
- 短语默写-不独立页:是否独立显示为一页,为“是”不独立显示,否则任意字符独立显示
- 短语翻译-标题:定义短语翻译标题
- 短语翻译-列数量:定义显示的列数
- 短语翻译-排序:定义排序方式,支持以下四种排序:
- 按序:按照输入顺序进行排序
- 升序:按字母升序(Z-A)进行排序
- 降序:按字母降序(A-Z)进行排序
- 随机:随机排序
- 短语翻译-默写比例:0.1-1.0之间的数值,假设存在10个句子,设置比例为0.75,则随机显示10*0.75=7个(整数截取)句子
- 短语翻译-不独立页:是否独立显示为一页,为“是”不独立显示,否则任意字符独立显示
结构目录如下:
其中:
Input latex渲染的目录结构,如果你不了解latex,请勿进行任何修改
Latex_Temp 工具渲染latex文件的模板
Part latex渲染的目录结构,如果你不了解latex,请勿进行任何修改
config_WordListGenerator.json 工具运行配置文件
Main.tex latex主文件
README.md 使用说明文件
WordListGenerator.exe 工具主体,双击即可运行
单词表.txt 自定义单词表
注意:
- 运行工具时,请确保目录结构正确,否则工具无法运行
- 如果目录结构被误删,可以重新下载本工具压缩包,直接覆盖
- 单词表.txt文件可以自定义文件名称且不受路径限制,你可以放在任意位置
- WordListGenerator.exe运行时可能会被有些杀毒软件误报,信任运行即可。
本工具的具体使用说明,我将做成视频,发布在我的B站上:https://space.bilibili.com/50502376?spm_id_from=333.337.0.0
在使用过程中如果由任何问题,欢迎与我联系交流
工具开发不易,如果对你有帮助,可以请我喝一杯咖啡吗?
最后,恭祝大家学习顺利!!









