本帖最后由 独行者 于 2020-8-3 09:34 编辑
- ?5 ]2 r9 s- q7 |. F! f3 o# o1 }* b# A
储备知识MDX 规范词条由三部分组成: 词条关键字:作为词条索引。 词典 HMTL:词条内容。 分隔符 </>:分割每个词条。
3 d$ W! S0 S4 @ V
注意: </> 后面不允许有任何空行。 HMTL 允许换行,也可以不换行。 , N3 [, X0 H+ _" b/ w- }5 V @
例子: - Antarctica$ y: g) x& ?% Z, H: Y
- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
4 b2 v. W) E5 Y! B - </>
复制代码
d/ s4 ~3 U- p* ~$ O' h2 e% g
|; D5 t/ F% c' |$ z词典 HMTL格式
( A' i; k* L% Q3 r! c2 _和标准的 HTML 几乎一样,不过这里去掉了 <html>、<head> 和 <body> 标签的包裹,另外增加了一些 mdict 自有的标记和格式。 下面介绍资源的引入,关于路径问题,请阅读下面的资源部分。
u0 s& o( w5 y8 E2 B% n; ~引入 css 和 js 文件; {3 N0 ^! i- D# @0 Y8 ?8 p) d
5 E6 f; a: Y& W( D
- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
复制代码 7 K% f' l4 J( W$ O3 T7 [
引入音频1 U6 P4 A$ Z" ~" E: [. ?$ @% D. k
6 A* d$ q. j+ p' `- c6 r- <a href="sound://sound_file.mp3">keyword</a>
复制代码
3 G: b) T0 V7 @1 m6 v) y8 @引入图片
5 s- z% N3 J4 C# d# E- T" w格式一: - <img src="file://abc.gif">
复制代码 , X* C6 n' N/ |" y
格式二: file:// 可以省略 " i5 q" g* v% J4 ?$ a
跳转. o X! R& d. X9 [8 ]
两种形式: 资源
% u/ [2 r" ~& d6 }# \HTML 中引入资源文件时根目录为 mdx 所在目录。
) R# f ~; y6 A% a 存放 @2 Z; a L7 T9 _; B6 {
优先级裸露的资源文件 > mdd 中的资源文件。
' E" r u' M3 U1 \/ u* u5 T ; i3 I2 e4 E& K3 o1 B+ p) |" T
词典软件
. P3 o v: e6 D: w% l; \
% r7 W* v) w) b: B- N! m, M, |MDict作为官方词典软件,却是体验最差的。基本的功能都有,这里只谈缺点: 使用的 IE 浏览器,不支持许多新的 Web 规范,导致某些人制作的词典排版错乱,甚至某些引入了 JS 文件的词典直接弹窗报错。 音频只支持 SPX 格式,这是当年为了节省空间的产物,因为当年 MDict 的主要活跃在 Windows Mobile 上,那时的存储卡不便宜。但是如今已经不建议使用,因为音质太差,推荐使用 MP3 或 AAC 格式。即便是该作者开发的 iOS 版本 Mdict,同样也只支持 SPX 格式,这个很让人不解。 功能太弱,交互设计很差。 9 b0 D: X, u7 @7 R. G& ~) W
GoldenDict毛子开发的词典软件,起初不支持 MDict,好在在开源社区的努力下后来支持了。 优点: 因为是 Qt 编写,使用的 Webkit 浏览器,支持的 Web 标准虽然不是最新,但是大部分的词典都能正常显示。 支持 MP3 音频,就这一点就值得推荐。 方便地导出 HMTL。 漂亮的界面,可以自定义软件界面样式,还有很棒的交互设计。 支持全文检索、支持词典排序、支持自定义在线词典、支持复制取词,还有大量优点,请自行探索。
0 ~9 q/ N$ E) T6 ] D
存在的问题: 欧路词典集合了上述 GoldenDict 的部分优点还有以下优点: 界面更加现代化,更友好。 支持单词同步和收藏。 支持单词复习。 PC 端取词功能很强。 iOS 上最强词典。
" m+ W0 V( e# N, x
缺点: 只能从网页或手机版导入单词表,但网页版导入经常出现导入失败或者导入数量不一致的问题,手机上又不支持词组或带有符号的单词导入。 同步功能存在 BUG,偶尔出现同步数量不一致,需要注销重新登录才正常。 最严重的 BUG,同时存在于 PC 端和手机端。 因为不同的词典可能会使用相同的标签和样式,如果直接载入,会干扰其他的词典样式。因此欧路和 GoldenDict 的做法是重写 CSS,给不同的词典的 HTML 加上一个独立 id,在每个样式名前面加上 id 编号,但问题在于有的作者的 CSS 中存在中文,为避免浏览器以 ANSI 编码读取,因此在 CSS 头部加上了 @charset "utf-8";, GoldenDict 能正确处理它,但脑残的欧路词典就不能正确处理,它会忽略第一个 CSS 样式,没有加上 id 名,如果第一个样式名是 body,则会影响到所有词典的排版,这是我们不希望看到的。
- _: r4 g9 u4 g0 ]. N* T. L: p" r1 x' c. b* j. X P) A+ ^- C& ^
如原始 CSS - @charset "utf-8";5 ]5 q0 H/ n) W3 e* M
-
0 q# y% t( a: n# y5 P - body {
: `" f/ `( O2 s3 ^1 P" J$ T - margin: 2em;
: N1 z3 B9 F1 T# |6 H - }; q! n: l6 U5 W8 F5 x9 _' W' A% S9 ]
- % w5 K$ V9 p8 R. H
- a:hover {' h, y1 a5 W. x- |+ ~0 i, Z3 O; Z( f
- color: #4372b6;
$ y1 o ^! n5 _! I: k5 ]! D) J - text-decoration: underline
! n% X4 }/ s0 d8 A7 \! ^ - }
复制代码 $ O# s) p! u% M/ F6 m8 ~* X! A
GoldenDict 会解析为 - @charset "utf-8";
. L% q% i: s( f3 `9 ~
; r, M/ X+ {' ~2 Q- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict body {: }$ }2 k6 y/ Z5 L; K2 S
- margin: 2em;2 j- h. p7 x. v
- }) ?. S" g0 x! M' r; K' Y
& M* ~ Y6 `" w% E; S# v/ v( u- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict a:hover {
/ z" m S1 T$ M, Z4 N - color: #4372b6;
+ w' b( K) S, ^0 m - text-decoration: underline& K" ~4 [" H3 d
- }
复制代码
8 c+ F8 j" M/ e' \- W而欧路词典解析如下,body 前面没有加上 #ID224342347child,进而影响到全局的 body 标签。 - @charset "utf-8"; 5 l. `' ~% E k+ m
- 2 q O! O. _- D; S7 {6 s
- body{) P5 f! ]( L* T
- margin: 2em;
, ~. C9 e0 x' V# j" R1 Y" {6 H - } / X* G9 O; l# m J/ C, g
- p E' S k3 X& Y- #ID224342347child a:hover {7 R) k, x7 X n" ?) W, y. Y" R
- color: #4372b6;
) i0 b& @; |! n. K - text-decoration: underline, _3 n2 ]: B- R; R, s% J3 M$ ^! ~
- }
复制代码
r, h( c1 S3 B2 V这就是为什么许多人用欧路词典排版混乱的原因,这个 BUG 我已经反馈了,不知道会不会改,反正我之前提过好多建议,该公司都没采纳,这个 BUG 我看也未必会修复。 因此我的建议是删掉 @charset "utf-8";,因为欧路词典和 GoldenDict 本身就是以 UTF-8 打开的,无需再多此一举。增加了反而会导致欧路词典解析出错。 ! a+ z7 n6 k+ ]" b9 n% [
制作工具制作步骤获取数据源:可以是自己编纂的,也可以是其他格式的词典,还可以从网站抓取。 按照 mdx 的规则清洗数据:上面提到的 mdx 规范。 用 MDXBuilder 3.0 Beta2 转成 mdx。 : S; e h+ R' c) @
配置 Source:即词典原始数据文本路径,扩展名随意。 Target:目标词典文件路径,扩展名必须为 mdx。 Sytle:留空,这个用不到。 Data:资源数据路径,有就填,没有就不填。注意了,资源数据一定要存放到一个单独的文件夹 xx 中,不要直接全部分散在 mdx 目录下,而且这个 xx 文件夹并不会打包到 mdd 中,它会作为 mdd 资源数据的根目录。 Options: % D( N2 u1 G- n
Original:一定要选 Mdict(Compact HTML),这种格式就是我们上面提到的规范。 Encoding:为避免乱码,必须选 UTF-8(Unicode)。 Title:词典标题,可以被欧路词典读取到。 Description:词典描述,支持 HTML 标签,不过支持十分有限,词典软件可以读取到。 未提到的其他选项不管。
3 y1 |* g" P+ b( @* n 1 c% ?( ^' Y! O/ Y) m0 L
制作技巧& o+ \0 d; i& d& e* D# {: b0 C- j
( \% @* [+ R1 K- e( M8 t
6 q8 s7 x4 L4 p2 O ^4 B2 E \) u- z( I- v
|