mtxt 源文件格式 — 纯文本也能做出漂亮的 mdx 词典
为什么选 mtxt
mtxt(MDict Text 的缩写)是 MDXBuilder 4.0 官方推荐的新手入门格式。相比 HTML+CSS 的自由格式,mtxt 牺牲了一些排版自由度,但换来了零学习成本、易于批量处理、跨工具兼容三大优势:
- 零学习成本:只要会写纯文本、知道几条分隔符规则就能开始;
- 易于批量处理:Python、Bash、PowerShell 等任何脚本语言都能轻松读写 mtxt;
- 跨工具兼容:MDXBuilder、mdtt、Slob、pyglossary 等多个工具都能读取 mtxt。
基本格式
一条 mtxt 词条的结构:
<词条标题>\t<词条正文>
只有两个字段:
- 词条标题:就是用户在搜索框里输入的关键词,MDict 用它来索引词典。同一本词典里标题不能重复;
- 词条正文:就是打开词条后显示的内容。正文支持有限的 Markdown 风格标记(
*加粗*、_斜体_、[链接文字](目标)等),MDXBuilder 编译时会自动转换成 HTML。
两个字段之间用一个制表符(\t,不是多个空格)分隔。正文里可以用 \n 表示换行。
多义项标题
一个单词有多个词性或义项时,用换行或竖线分隔:
run\t*v.* [R] 跑步;[C] 经营
run\tn. [C] 一段时间;[C] 路线
上面两条标题会在搜索结果里同时出现,MDict 默认按第一条作为主词条、其他作为副词条。也可以用 | 符号在同一条里列出多个标题:
run|running|ran\t*v.* 跑步的各个时态形式
带资源的条目
如果词条需要引用图片或音频资源(放在 mdd 里),在正文里用 @ 前缀加资源文件名:
apple\t*n.* 苹果\n\n@apple.png\n\n一种常见的水果。
MDXBuilder 编译时会把 @apple.png 替换成实际的 <img> 标签,并把 apple.png 自动打包进 mdd 文件。注意:
- 资源文件要放在与 mtxt 文件同一目录下或指定的资源目录下;
- 音频文件用同样的
@前缀引用,MDict 会自动识别扩展名决定渲染方式; - 如果资源文件不存在,编译时会报错——先确保所有
@引用的文件都在。
复杂排版
mtxt 虽然是纯文本,但通过特殊标记也能实现基础排版:
*文字*→ 加粗;_文字_→ 斜体;**文字**→ 一级标题;***文字***→ 二级标题;- 项目内容→ 无序列表项;1. 项目内容→ 有序列表项;[链接文字](目标)→ 链接占位(但 MDict 词典里不建议用外部链接,跨平台词典环境里外部链接不可靠)。
与 HTML 格式的对比
| 对比维度 | mtxt | HTML + CSS |
|---|---|---|
| 学习门槛 | 极低 | 需要懂 HTML/CSS |
| 批量处理 | 轻松(Python 几行搞定) | 困难(需要解析 HTML 结构) |
| 排版能力 | 基础(粗体、斜体、列表、图片) | 完整(表格、嵌入、自定义样式) |
| mdd 资源打包 | 自动识别 | 需手动写 <img> / <audio> 标签 |
| 推荐人群 | 新手、批量制作 | 精品词典制作者 |
一个完整的 mtxt 示例
apple\t*n.* [C] 苹果(水果)\n\nA common red or green fruit.\n\n@apple.png
apple company\t*n.* 苹果公司\n\n美国科技公司,总部位于加利福尼亚州。
banana\t*n.* [C] 香蕉\n\n@banana.png\n\n一种黄色的热带水果。
run\t*v.* [T/I] 跑;运行;经营\n\n*n.* [C] 一段时间;路线
保存成 UTF-8 编码的 .mtxt 文件(注意是 UTF-8、不要带 BOM),然后在 MDXBuilder 里编译就能得到可用的 mdx+mdd。