本帖最后由 独行者 于 2020-8-3 09:34 编辑
- r! ?6 O/ ]( z$ P* R0 Z5 Y7 B t+ \$ G
储备知识MDX 规范词条由三部分组成: 词条关键字:作为词条索引。 词典 HMTL:词条内容。 分隔符 </>:分割每个词条。 / `3 J% W7 I" L% o
注意: </> 后面不允许有任何空行。 HMTL 允许换行,也可以不换行。
: O! P/ v/ |6 `- Y0 d& G
例子: - Antarctica" t8 Z4 W' D% V
- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
5 J2 N- s0 u. _3 P, D/ V - </>
复制代码
1 A) z% I% h5 }7 E y
1 O6 J; H7 e; E Z; q; {+ a: R词典 HMTL格式0 i7 s) [0 N; N. O
和标准的 HTML 几乎一样,不过这里去掉了 <html>、<head> 和 <body> 标签的包裹,另外增加了一些 mdict 自有的标记和格式。 下面介绍资源的引入,关于路径问题,请阅读下面的资源部分。
! t$ V: p8 @& v( D, U引入 css 和 js 文件
9 V6 J" _: y/ a) ^1 `) S, w% z& E% \$ h
- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
复制代码 7 R+ Q9 x3 @8 p9 v" z5 m+ O- Y( f
引入音频
6 f- |, b _; U+ p. o; _2 P1 u3 D" @7 N# r) w
- <a href="sound://sound_file.mp3">keyword</a>
复制代码
. t4 k4 H& H# f: H! D% e C) x) s引入图片2 ]2 i3 Y+ P! V n2 f
格式一: - <img src="file://abc.gif">
复制代码 p: M O7 G" y3 C2 o6 ^
格式二: file:// 可以省略
+ e% x2 s. T" q6 l o5 b. @; ]# J3 n跳转. L' ?* S$ c" U+ K* ^) c. D
两种形式: 资源- E+ g6 m- T9 |
HTML 中引入资源文件时根目录为 mdx 所在目录。 4 g# V( s" L1 N& V+ G
存放7 v" Q9 c# V# d; J2 j3 i
优先级裸露的资源文件 > mdd 中的资源文件。
/ h! s. u' ~3 M+ [. I; E2 S$ G " Q+ g6 o" g) J9 A, z5 i+ V- c
词典软件
4 c* Y* p1 v, l, I0 G
' i1 N0 f" H* gMDict作为官方词典软件,却是体验最差的。基本的功能都有,这里只谈缺点: 使用的 IE 浏览器,不支持许多新的 Web 规范,导致某些人制作的词典排版错乱,甚至某些引入了 JS 文件的词典直接弹窗报错。 音频只支持 SPX 格式,这是当年为了节省空间的产物,因为当年 MDict 的主要活跃在 Windows Mobile 上,那时的存储卡不便宜。但是如今已经不建议使用,因为音质太差,推荐使用 MP3 或 AAC 格式。即便是该作者开发的 iOS 版本 Mdict,同样也只支持 SPX 格式,这个很让人不解。 功能太弱,交互设计很差。 + B" k+ ~! k* h( ]
GoldenDict毛子开发的词典软件,起初不支持 MDict,好在在开源社区的努力下后来支持了。 优点: 因为是 Qt 编写,使用的 Webkit 浏览器,支持的 Web 标准虽然不是最新,但是大部分的词典都能正常显示。 支持 MP3 音频,就这一点就值得推荐。 方便地导出 HMTL。 漂亮的界面,可以自定义软件界面样式,还有很棒的交互设计。 支持全文检索、支持词典排序、支持自定义在线词典、支持复制取词,还有大量优点,请自行探索。 3 u/ [- ~1 l/ [* @4 B! ]$ Q. |3 V$ z
存在的问题: 欧路词典集合了上述 GoldenDict 的部分优点还有以下优点: 界面更加现代化,更友好。 支持单词同步和收藏。 支持单词复习。 PC 端取词功能很强。 iOS 上最强词典。 , v& G& ~. v# q' F
缺点: 只能从网页或手机版导入单词表,但网页版导入经常出现导入失败或者导入数量不一致的问题,手机上又不支持词组或带有符号的单词导入。 同步功能存在 BUG,偶尔出现同步数量不一致,需要注销重新登录才正常。 最严重的 BUG,同时存在于 PC 端和手机端。 因为不同的词典可能会使用相同的标签和样式,如果直接载入,会干扰其他的词典样式。因此欧路和 GoldenDict 的做法是重写 CSS,给不同的词典的 HTML 加上一个独立 id,在每个样式名前面加上 id 编号,但问题在于有的作者的 CSS 中存在中文,为避免浏览器以 ANSI 编码读取,因此在 CSS 头部加上了 @charset "utf-8";, GoldenDict 能正确处理它,但脑残的欧路词典就不能正确处理,它会忽略第一个 CSS 样式,没有加上 id 名,如果第一个样式名是 body,则会影响到所有词典的排版,这是我们不希望看到的。4 w8 [" s$ t: l& q& ~ ^3 L! W
. Z" R" s) d. j n2 G Q
如原始 CSS - @charset "utf-8";' [0 u. v1 |' J
-
0 e! k! [, E" P - body {' h' r; {4 {" y+ `/ E5 S/ A* R; @- r
- margin: 2em;
; f p$ O1 Q: y- |/ d - }, \" ~9 @; m1 B, C
- 0 {. J% a4 `1 C, j" H$ ~+ c
- a:hover {
9 f* i; l3 B7 P - color: #4372b6;
$ l$ z' H3 C$ U$ W: u5 { - text-decoration: underline
3 Z9 G s& [) d. t. b8 Z L - }
复制代码 # a( f0 z! C9 @* ~4 [
GoldenDict 会解析为 - @charset "utf-8"; . v! \. t+ P2 q
# Q0 ?" W- X! D& ^- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict body {0 p9 X6 y9 q+ R9 |. n
- margin: 2em;
4 w+ g* P8 S% p. p: y1 O2 j; D9 N - }7 r+ |! ~& z7 t* b, D* L8 k
6 i& D, |% H) y2 E/ Q4 L- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict a:hover {
2 `! B+ ?5 y4 N# N1 i - color: #4372b6;
5 Q6 N" V0 J! j - text-decoration: underline
, [+ F8 ~) @# ] - }
复制代码 " v* X" Y5 J3 c0 v3 V
而欧路词典解析如下,body 前面没有加上 #ID224342347child,进而影响到全局的 body 标签。 - @charset "utf-8";
! j: |, i/ b9 N. S# G& v3 L - ; a! ], M0 G1 z" Z. {, u
- body{
* ^3 A1 a5 W' o8 _! S - margin: 2em;
+ X* P1 y3 u0 F8 q - } 9 H9 a7 N( _+ J `7 F
* m# L# e( l0 k& }' E- #ID224342347child a:hover {4 m. ?+ t& B: {1 O3 [9 X( E
- color: #4372b6;
K$ }1 C5 _0 @) s4 } - text-decoration: underline
: I7 }/ w6 r1 w" I9 _ - }
复制代码
7 f4 \# w6 k9 `# B这就是为什么许多人用欧路词典排版混乱的原因,这个 BUG 我已经反馈了,不知道会不会改,反正我之前提过好多建议,该公司都没采纳,这个 BUG 我看也未必会修复。 因此我的建议是删掉 @charset "utf-8";,因为欧路词典和 GoldenDict 本身就是以 UTF-8 打开的,无需再多此一举。增加了反而会导致欧路词典解析出错。
' { M; z! u# {2 y 制作工具制作步骤获取数据源:可以是自己编纂的,也可以是其他格式的词典,还可以从网站抓取。 按照 mdx 的规则清洗数据:上面提到的 mdx 规范。 用 MDXBuilder 3.0 Beta2 转成 mdx。
1 Q% v$ G9 f4 K& @6 r
配置 Source:即词典原始数据文本路径,扩展名随意。 Target:目标词典文件路径,扩展名必须为 mdx。 Sytle:留空,这个用不到。 Data:资源数据路径,有就填,没有就不填。注意了,资源数据一定要存放到一个单独的文件夹 xx 中,不要直接全部分散在 mdx 目录下,而且这个 xx 文件夹并不会打包到 mdd 中,它会作为 mdd 资源数据的根目录。 Options:
! ?& r; R5 O4 ZOriginal:一定要选 Mdict(Compact HTML),这种格式就是我们上面提到的规范。 Encoding:为避免乱码,必须选 UTF-8(Unicode)。 Title:词典标题,可以被欧路词典读取到。 Description:词典描述,支持 HTML 标签,不过支持十分有限,词典软件可以读取到。 未提到的其他选项不管。
1 L0 v' [7 X. Y. I . X: B# `/ }0 q3 T4 I8 l( g
制作技巧
) [' F5 ?$ h/ `+ `+ A
[( E- b- g7 g; u
5 Z q F& v5 g' w: Z( o" y. `1 A, T3 l- ~* D& u h# j5 K& V8 I
|