本帖最后由 独行者 于 2020-8-3 09:34 编辑
0 @) W9 E5 j, Z$ h
5 W' z3 y# [: b# d# D6 C储备知识MDX 规范词条由三部分组成: 词条关键字:作为词条索引。 词典 HMTL:词条内容。 分隔符 </>:分割每个词条。 4 D. y% R4 X d2 g+ s+ y
注意: </> 后面不允许有任何空行。 HMTL 允许换行,也可以不换行。 - ]/ i$ f1 i% T% z6 O
例子: - Antarctica& V% Q# ^0 ~7 c
- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div># P: G3 [* G2 G: W- @
- </>
复制代码
% c" J) c( b9 m$ K6 h: q
^( A: T9 B" }/ B词典 HMTL格式
. i0 l3 _' Y! k* `; E/ C$ j和标准的 HTML 几乎一样,不过这里去掉了 <html>、<head> 和 <body> 标签的包裹,另外增加了一些 mdict 自有的标记和格式。 下面介绍资源的引入,关于路径问题,请阅读下面的资源部分。
1 }2 K3 N0 M; K5 \9 m) S, ?8 [( d; H引入 css 和 js 文件
# W6 `, j' E( S+ ~( k+ u- |8 @4 V
8 N$ \) W9 B' T7 V- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
复制代码 ) l1 r4 `! v5 @
引入音频2 B4 b: y+ H4 L6 {
7 F& M' x8 Z2 j m
- <a href="sound://sound_file.mp3">keyword</a>
复制代码 0 f3 G. |9 r8 d2 u
引入图片5 @. S" ?1 Q! s+ q2 V5 T0 u
格式一: - <img src="file://abc.gif">
复制代码 " U* W3 G$ u, j" i& G, j b$ U9 S
格式二: file:// 可以省略 : ]2 j# ?+ x' ]$ P n
跳转
9 X( z4 _/ T8 ^两种形式: 资源& s" B6 y8 }' M2 m$ s5 J) s
HTML 中引入资源文件时根目录为 mdx 所在目录。
' b" ^* e$ [- C2 x, G) F 存放( O$ Y* h) X2 {4 Z/ v4 W
优先级裸露的资源文件 > mdd 中的资源文件。 + Y7 F' C& y: R8 J
8 U" B# ^8 b9 w3 c$ P. E! j
词典软件8 M6 F7 r. `2 Y ~. f' a$ E7 @1 y
) {: M: d9 J4 n/ {, b' N
MDict作为官方词典软件,却是体验最差的。基本的功能都有,这里只谈缺点: 使用的 IE 浏览器,不支持许多新的 Web 规范,导致某些人制作的词典排版错乱,甚至某些引入了 JS 文件的词典直接弹窗报错。 音频只支持 SPX 格式,这是当年为了节省空间的产物,因为当年 MDict 的主要活跃在 Windows Mobile 上,那时的存储卡不便宜。但是如今已经不建议使用,因为音质太差,推荐使用 MP3 或 AAC 格式。即便是该作者开发的 iOS 版本 Mdict,同样也只支持 SPX 格式,这个很让人不解。 功能太弱,交互设计很差。
* }' w. V' B, S4 P GoldenDict毛子开发的词典软件,起初不支持 MDict,好在在开源社区的努力下后来支持了。 优点: 因为是 Qt 编写,使用的 Webkit 浏览器,支持的 Web 标准虽然不是最新,但是大部分的词典都能正常显示。 支持 MP3 音频,就这一点就值得推荐。 方便地导出 HMTL。 漂亮的界面,可以自定义软件界面样式,还有很棒的交互设计。 支持全文检索、支持词典排序、支持自定义在线词典、支持复制取词,还有大量优点,请自行探索。
" ~( G2 K4 u, `. ]2 _6 ?
存在的问题: 欧路词典集合了上述 GoldenDict 的部分优点还有以下优点: 界面更加现代化,更友好。 支持单词同步和收藏。 支持单词复习。 PC 端取词功能很强。 iOS 上最强词典。 , R# F: g1 Z9 O; [% T# }
缺点: 只能从网页或手机版导入单词表,但网页版导入经常出现导入失败或者导入数量不一致的问题,手机上又不支持词组或带有符号的单词导入。 同步功能存在 BUG,偶尔出现同步数量不一致,需要注销重新登录才正常。 最严重的 BUG,同时存在于 PC 端和手机端。 因为不同的词典可能会使用相同的标签和样式,如果直接载入,会干扰其他的词典样式。因此欧路和 GoldenDict 的做法是重写 CSS,给不同的词典的 HTML 加上一个独立 id,在每个样式名前面加上 id 编号,但问题在于有的作者的 CSS 中存在中文,为避免浏览器以 ANSI 编码读取,因此在 CSS 头部加上了 @charset "utf-8";, GoldenDict 能正确处理它,但脑残的欧路词典就不能正确处理,它会忽略第一个 CSS 样式,没有加上 id 名,如果第一个样式名是 body,则会影响到所有词典的排版,这是我们不希望看到的。) D& A! o2 G# \8 a* N/ o
- L: Q: q9 B6 d4 [# b9 ? 如原始 CSS - @charset "utf-8";1 |! x, i: y; V
- 5 C4 g2 `. j! i B2 s' ]: u
- body {) o5 N- g. u5 q
- margin: 2em;
* M9 e% f% a9 E) g6 r5 z( A - }
. s6 h$ p3 S, W& D0 I* X - ) M2 g: W! |' u3 a: t
- a:hover {
, R5 x' d* f4 h - color: #4372b6;
* o& Y3 N* |& r. b6 m. _ - text-decoration: underline4 t( T) t- S. s" I7 y& j
- }
复制代码 $ a* a. M: p" G# Q& d( F9 y5 x
GoldenDict 会解析为 - @charset "utf-8"; ; U. F6 K; h( x/ q+ c
- 6 Z/ W2 l, W: r1 I" H( \
- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict body {0 z% E/ R! w1 D7 E# C
- margin: 2em;; d+ k* e9 m# J5 w; A
- }/ G5 A' z; w0 }; @# D
- & i! o* j& o% m* J& i
- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict a:hover { ~2 c ]7 `; X/ b7 H' u/ o0 ^" Y; G
- color: #4372b6;/ M( \* \; Q" P1 `
- text-decoration: underline
+ ]8 O) a1 t/ T$ C - }
复制代码
" P( q! l# Q& m5 b3 t6 M. `. N而欧路词典解析如下,body 前面没有加上 #ID224342347child,进而影响到全局的 body 标签。 - @charset "utf-8"; 3 o6 k! P# G5 s& R0 L& w
- Y* H% J; h' O
- body{; x, u( k8 j7 p" m+ \& b
- margin: 2em;
( |+ V' P: D/ K& S8 q, X2 s - }
2 w' x g6 E% ~
# o/ E3 t8 E! O' f; b U( ~- #ID224342347child a:hover {
/ j: G* B" o: S6 O- O - color: #4372b6;' C; s/ h* p% h' Y! L4 j# e
- text-decoration: underline
* n2 F4 M1 N9 _. f% f - }
复制代码 5 t# V; P8 r2 I5 o: V
这就是为什么许多人用欧路词典排版混乱的原因,这个 BUG 我已经反馈了,不知道会不会改,反正我之前提过好多建议,该公司都没采纳,这个 BUG 我看也未必会修复。 因此我的建议是删掉 @charset "utf-8";,因为欧路词典和 GoldenDict 本身就是以 UTF-8 打开的,无需再多此一举。增加了反而会导致欧路词典解析出错。 ' ?- o! I: `( Y' G! m' G5 h, ^8 X
制作工具制作步骤获取数据源:可以是自己编纂的,也可以是其他格式的词典,还可以从网站抓取。 按照 mdx 的规则清洗数据:上面提到的 mdx 规范。 用 MDXBuilder 3.0 Beta2 转成 mdx。 . c7 j3 W* H4 L1 _+ W7 S6 g: i8 ]
配置 Source:即词典原始数据文本路径,扩展名随意。 Target:目标词典文件路径,扩展名必须为 mdx。 Sytle:留空,这个用不到。 Data:资源数据路径,有就填,没有就不填。注意了,资源数据一定要存放到一个单独的文件夹 xx 中,不要直接全部分散在 mdx 目录下,而且这个 xx 文件夹并不会打包到 mdd 中,它会作为 mdd 资源数据的根目录。 Options:
8 t+ k. S* l. ^+ e* X9 W6 m0 p5 qOriginal:一定要选 Mdict(Compact HTML),这种格式就是我们上面提到的规范。 Encoding:为避免乱码,必须选 UTF-8(Unicode)。 Title:词典标题,可以被欧路词典读取到。 Description:词典描述,支持 HTML 标签,不过支持十分有限,词典软件可以读取到。 未提到的其他选项不管。 - c. S6 y0 t% z6 q
# A3 R% W9 P; R% Z& E% u7 k 制作技巧' f1 X0 E, n+ G) Q$ K; _( s
- F4 n4 F* [- w2 o% G( t# A5 V+ E+ s8 p i6 I& v
* A! e9 e, j8 f! M2 }. g/ H |