本帖最后由 独行者 于 2020-8-3 09:34 编辑
' f8 h& `$ I4 v1 p- M. g' e- |' F: |4 f) S/ |( x
储备知识MDX 规范词条由三部分组成: 词条关键字:作为词条索引。 词典 HMTL:词条内容。 分隔符 </>:分割每个词条。
6 w' z* G X' U
注意: </> 后面不允许有任何空行。 HMTL 允许换行,也可以不换行。
' P, t) v. b' k
例子: - Antarctica+ V+ |' ?+ V' V( l# h/ a% ^, ?; l6 m
- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
1 a0 F' {5 S8 i" T% o, q - </>
复制代码 ! Z: |. a' \* _$ P; b
* Z- O& B9 _9 f( Q9 P词典 HMTL格式+ t9 y2 W& X9 ` O. H
和标准的 HTML 几乎一样,不过这里去掉了 <html>、<head> 和 <body> 标签的包裹,另外增加了一些 mdict 自有的标记和格式。 下面介绍资源的引入,关于路径问题,请阅读下面的资源部分。
& x1 R( f* J* a引入 css 和 js 文件( M0 v4 z' @3 U+ [" ^
& B0 L+ x% s6 _# p4 S* p
- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
复制代码
/ z& x8 Y" h+ y* o1 w% g+ Y& [8 M引入音频. N8 G, l5 Q1 a$ j2 } m# \- n, d
8 \' N, ]; ^, s2 Q8 ~
- <a href="sound://sound_file.mp3">keyword</a>
复制代码 * }$ e% N/ N x6 v; D
引入图片: B" R! N8 h5 O% u
格式一: - <img src="file://abc.gif">
复制代码
9 H; v) U5 `+ ] S1 p格式二: file:// 可以省略 3 a2 U: F; j' e8 Y
跳转
; R7 H: L5 `" l! ^6 V两种形式: 资源
: T9 n9 v+ N* S; ]8 VHTML 中引入资源文件时根目录为 mdx 所在目录。 % b8 x: _8 W. r* Q
存放3 B: M1 p v6 a2 c6 y) R
优先级裸露的资源文件 > mdd 中的资源文件。
1 H: P7 `; v- K5 d$ B ' \ H3 U9 {4 A& Y4 Q8 S6 @) a
词典软件
. o; z8 F' E T. r! |, s/ C) ^! c$ A2 t
MDict作为官方词典软件,却是体验最差的。基本的功能都有,这里只谈缺点: 使用的 IE 浏览器,不支持许多新的 Web 规范,导致某些人制作的词典排版错乱,甚至某些引入了 JS 文件的词典直接弹窗报错。 音频只支持 SPX 格式,这是当年为了节省空间的产物,因为当年 MDict 的主要活跃在 Windows Mobile 上,那时的存储卡不便宜。但是如今已经不建议使用,因为音质太差,推荐使用 MP3 或 AAC 格式。即便是该作者开发的 iOS 版本 Mdict,同样也只支持 SPX 格式,这个很让人不解。 功能太弱,交互设计很差。
' D. f" l( r$ r) O7 k( z+ G8 J" N GoldenDict毛子开发的词典软件,起初不支持 MDict,好在在开源社区的努力下后来支持了。 优点: 因为是 Qt 编写,使用的 Webkit 浏览器,支持的 Web 标准虽然不是最新,但是大部分的词典都能正常显示。 支持 MP3 音频,就这一点就值得推荐。 方便地导出 HMTL。 漂亮的界面,可以自定义软件界面样式,还有很棒的交互设计。 支持全文检索、支持词典排序、支持自定义在线词典、支持复制取词,还有大量优点,请自行探索。
6 l1 c& o# z3 A+ t
存在的问题: 欧路词典集合了上述 GoldenDict 的部分优点还有以下优点: 界面更加现代化,更友好。 支持单词同步和收藏。 支持单词复习。 PC 端取词功能很强。 iOS 上最强词典。
! Q3 O$ I7 U6 {" x
缺点: 只能从网页或手机版导入单词表,但网页版导入经常出现导入失败或者导入数量不一致的问题,手机上又不支持词组或带有符号的单词导入。 同步功能存在 BUG,偶尔出现同步数量不一致,需要注销重新登录才正常。 最严重的 BUG,同时存在于 PC 端和手机端。 因为不同的词典可能会使用相同的标签和样式,如果直接载入,会干扰其他的词典样式。因此欧路和 GoldenDict 的做法是重写 CSS,给不同的词典的 HTML 加上一个独立 id,在每个样式名前面加上 id 编号,但问题在于有的作者的 CSS 中存在中文,为避免浏览器以 ANSI 编码读取,因此在 CSS 头部加上了 @charset "utf-8";, GoldenDict 能正确处理它,但脑残的欧路词典就不能正确处理,它会忽略第一个 CSS 样式,没有加上 id 名,如果第一个样式名是 body,则会影响到所有词典的排版,这是我们不希望看到的。
% [6 f5 w2 R( }' T! p
# p* R1 [2 ^, B% U2 v# T& I 如原始 CSS - @charset "utf-8";9 ]4 K* R9 ]# y: _
-
0 U' e* J& E$ q% L - body {7 v( J9 r5 @/ Z
- margin: 2em;
! l# D+ ^- a% _! ~. u. n8 u - }
. _' j+ {7 _: G -
4 M$ H, M+ g7 o* K) l! i - a:hover {
3 g( a1 g$ J/ u% E. r - color: #4372b6;( C1 c2 S8 Y1 \/ `5 z) R
- text-decoration: underline
# z! L6 G! n! X9 b* R& j - }
复制代码 5 [6 x5 C5 O% I/ a
GoldenDict 会解析为 - @charset "utf-8";
$ K5 W& P. y7 Y% l" E% ?
0 U1 L }# G' J# e* e# I) f- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict body {+ Y) f' a; e) @1 w- @
- margin: 2em;
# h/ {0 j/ j* H - }) Y4 |6 F, W$ K+ [# P7 F
" o' N" n$ M: I; d5 P/ b- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict a:hover {
5 O* \5 G+ Q9 \2 S% x2 K5 o7 U - color: #4372b6;+ u/ ~: I: E+ |$ `5 P: F1 M' D
- text-decoration: underline. b( i4 ]& t+ I/ k- ]
- }
复制代码 4 L1 N2 Q+ S2 d8 n9 ^- Q, _
而欧路词典解析如下,body 前面没有加上 #ID224342347child,进而影响到全局的 body 标签。 - @charset "utf-8"; ! H: ]* X! S3 i& v/ ~" _5 Y" j
( L/ V8 d3 q# i, p" B% l+ t7 u; k- body{9 R1 w/ @) O" T! B; o, Z
- margin: 2em;5 R9 O' m+ h1 ^5 j
- } * o" Q' o' Y# w$ z
+ l2 n- E# g; J$ ^0 @2 g- #ID224342347child a:hover {
, J2 r5 J7 E! S$ x; E/ e( h# f j% S - color: #4372b6;1 X0 H. [: ]* O2 w' O5 {' A
- text-decoration: underline$ G& ~; H$ _, T+ [* d* ^, N; i
- }
复制代码 ) n, C- R5 z0 n
这就是为什么许多人用欧路词典排版混乱的原因,这个 BUG 我已经反馈了,不知道会不会改,反正我之前提过好多建议,该公司都没采纳,这个 BUG 我看也未必会修复。 因此我的建议是删掉 @charset "utf-8";,因为欧路词典和 GoldenDict 本身就是以 UTF-8 打开的,无需再多此一举。增加了反而会导致欧路词典解析出错。 0 p6 Q5 D9 v: G; _
制作工具制作步骤获取数据源:可以是自己编纂的,也可以是其他格式的词典,还可以从网站抓取。 按照 mdx 的规则清洗数据:上面提到的 mdx 规范。 用 MDXBuilder 3.0 Beta2 转成 mdx。 3 c {" y+ F ?+ V+ d) `1 ?9 w
配置 Source:即词典原始数据文本路径,扩展名随意。 Target:目标词典文件路径,扩展名必须为 mdx。 Sytle:留空,这个用不到。 Data:资源数据路径,有就填,没有就不填。注意了,资源数据一定要存放到一个单独的文件夹 xx 中,不要直接全部分散在 mdx 目录下,而且这个 xx 文件夹并不会打包到 mdd 中,它会作为 mdd 资源数据的根目录。 Options: # {$ L2 ?8 t8 N2 T$ m
Original:一定要选 Mdict(Compact HTML),这种格式就是我们上面提到的规范。 Encoding:为避免乱码,必须选 UTF-8(Unicode)。 Title:词典标题,可以被欧路词典读取到。 Description:词典描述,支持 HTML 标签,不过支持十分有限,词典软件可以读取到。 未提到的其他选项不管。 4 L. _8 N/ }$ a0 e# K
/ b$ C( L. u' T; ^: e5 d% G
制作技巧# F: k" {( S6 M }, e3 N4 T
# x5 {! `) G' {% u5 B7 H
, a5 O8 @: g! b! ]5 P
2 x) i/ ]5 }8 o+ ?: _ |