/WordListGenerator

WordListGenerator 单词表生成工具

Primary LanguageTeX

WordListGenerator 单词表生成工具

在学习英语的过程中,可能最有效的方法就是大量的背诵和练习。

但是网上目前又没有一个比较理想的方法,实现一种方式:

  • 通过文本记录要背诵的单词(词组)和句子(短语)
  • 根据单词和语句生成背诵默写文档
  • 生成的文档要简洁美观可以使用打印机印出来
  • 还需要简单方便

为此,我肝了2.5天,使用Python3开发了WordListGenerator 单词表生成工具,PDF渲染使用XeLatex实现,交互方式为命令行终端。

(以下是工具演示)

后续更新计划:

  • 生成的PDF文档通过配置文件设置打印机名称后,可以一键打印
  • 生成单词默写表对应的答案表,表示出需要默写的字母和单词的位置
  • 更灵活的PDF页面渲染配置
  • 支持只生成任意部分的PDF而不是全部的

工具已打包为exe执行程序:

  • 建议在Windows11使用(体验最好)
  • 也支持Windows10使用
  • 其他Windows版本未测试,能否使用未知
  • 其余操作系统(比如Linux)不支持使用

本工具的运行需要依赖Latex环境:

  • 建议使用texlive2023
  • 2022版本也可以
  • 其余版本未测试,能否使用未知

许可与说明

本工具的使用是完全免费的!

Latex源码部分遵顼MIT许可,如果你熟悉Latex,可以自定义修改渲染的页面布局。

但本工具的开发代码恕不公开。

任何人都可以使用本工具生成PDF文档,且生成的PDF文档个人之间可以随意打印、分享、印刷等使用。

但不得对通过本工具生成的PDF进行任何形式的售卖或有偿转让,且通过本工具生成的PDF文档禁止任何商业目的的用途。

V1.0.3

  • 修复对照表-词组输入词组(包含空格的多个单词)时解析错误问题
  • 修复删除编译产生文件无效问题
  • 更改单词表生成路径为桌面路径
  • 修改编译方法,解除错误输出循环卡死问题(latex编译失败卡死问题依旧无解)

V1.0.2

  • 修复了短单词默写不显示问题
  • 修复了端句子默写不显示问题
  • 优化了页面排版的间距
  • 词组默写排版去掉了划线
  • 短语默写添加了译文
  • 优化了工具已知其他问题

V1.0.1

单词表输入

输入的单词表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对照表:

生成的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

在使用过程中如果由任何问题,欢迎与我联系交流

赞助

工具开发不易,如果对你有帮助,可以请我喝一杯咖啡吗?

最后,恭祝大家学习顺利!!