本帖最后由 独行者 于 2020-8-3 09:34 编辑
* V" G) ~+ v, G" Y5 g6 j1 E! P" Q$ h7 @. V; U, R
储备知识MDX 规范词条由三部分组成: 词条关键字:作为词条索引。 词典 HMTL:词条内容。 分隔符 </>:分割每个词条。 , ` \2 q1 W: ?' A# y9 Q
注意: </> 后面不允许有任何空行。 HMTL 允许换行,也可以不换行。
. W- \: n( |$ h
例子: - Antarctica
/ I1 t( Q; y, |9 e6 F8 B3 G. E9 G' n - <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
! ]3 Y: }3 {7 K0 `# b - </>
复制代码
9 o& @1 Z& w. {7 j/ z: z1 F- X" T5 e" i, ^$ y% B4 i
词典 HMTL格式
0 q7 }7 ?: b+ M7 _, D$ i和标准的 HTML 几乎一样,不过这里去掉了 <html>、<head> 和 <body> 标签的包裹,另外增加了一些 mdict 自有的标记和格式。 下面介绍资源的引入,关于路径问题,请阅读下面的资源部分。 ; l% z- Q2 y; D+ C3 O1 J! r- n
引入 css 和 js 文件5 N0 k. B% b% M. h$ z- d
% r1 l( v0 V. ]/ _8 m* @3 E- <link href="styles_cb.css" rel="stylesheet"/><script src="scripts_cb.js"></script><div>南极洲</div>
复制代码 + k" k8 z* {0 `" F1 @7 m/ v
引入音频
( a1 w3 L. `$ b- k0 X. V
( I: O" B' g, Q- ^) c$ G! f- <a href="sound://sound_file.mp3">keyword</a>
复制代码
1 S( e4 r, h5 b8 x1 M: U& i& H引入图片9 H% v& C) S7 x$ ?* U/ {$ `
格式一: - <img src="file://abc.gif">
复制代码
+ }& H. n B1 I( v+ v格式二: file:// 可以省略 ) o% x; p6 T* x4 l& Z/ s
跳转4 N" E! O0 S4 j' Z$ c" I
两种形式: 资源
$ O. q# |8 C. D! t$ C- i! lHTML 中引入资源文件时根目录为 mdx 所在目录。
- J2 B8 h5 M. O 存放
: K2 K- h4 K( a$ d优先级裸露的资源文件 > mdd 中的资源文件。
! R3 ^/ H* S+ q" H4 ]. \ 4 d4 y1 [; l6 T1 `! Z
词典软件
3 ]9 f$ t; T1 j" S7 s5 w1 k! C9 I9 }
4 o" q# o7 m% T7 o4 h9 NMDict作为官方词典软件,却是体验最差的。基本的功能都有,这里只谈缺点: 使用的 IE 浏览器,不支持许多新的 Web 规范,导致某些人制作的词典排版错乱,甚至某些引入了 JS 文件的词典直接弹窗报错。 音频只支持 SPX 格式,这是当年为了节省空间的产物,因为当年 MDict 的主要活跃在 Windows Mobile 上,那时的存储卡不便宜。但是如今已经不建议使用,因为音质太差,推荐使用 MP3 或 AAC 格式。即便是该作者开发的 iOS 版本 Mdict,同样也只支持 SPX 格式,这个很让人不解。 功能太弱,交互设计很差。 $ f8 \" t! {! ~! p
GoldenDict毛子开发的词典软件,起初不支持 MDict,好在在开源社区的努力下后来支持了。 优点: 因为是 Qt 编写,使用的 Webkit 浏览器,支持的 Web 标准虽然不是最新,但是大部分的词典都能正常显示。 支持 MP3 音频,就这一点就值得推荐。 方便地导出 HMTL。 漂亮的界面,可以自定义软件界面样式,还有很棒的交互设计。 支持全文检索、支持词典排序、支持自定义在线词典、支持复制取词,还有大量优点,请自行探索。 5 u$ ?, L2 w3 ?/ E* y
存在的问题: 欧路词典集合了上述 GoldenDict 的部分优点还有以下优点: 界面更加现代化,更友好。 支持单词同步和收藏。 支持单词复习。 PC 端取词功能很强。 iOS 上最强词典。 6 \9 G9 P: d2 V5 W0 N- o
缺点: 只能从网页或手机版导入单词表,但网页版导入经常出现导入失败或者导入数量不一致的问题,手机上又不支持词组或带有符号的单词导入。 同步功能存在 BUG,偶尔出现同步数量不一致,需要注销重新登录才正常。 最严重的 BUG,同时存在于 PC 端和手机端。 因为不同的词典可能会使用相同的标签和样式,如果直接载入,会干扰其他的词典样式。因此欧路和 GoldenDict 的做法是重写 CSS,给不同的词典的 HTML 加上一个独立 id,在每个样式名前面加上 id 编号,但问题在于有的作者的 CSS 中存在中文,为避免浏览器以 ANSI 编码读取,因此在 CSS 头部加上了 @charset "utf-8";, GoldenDict 能正确处理它,但脑残的欧路词典就不能正确处理,它会忽略第一个 CSS 样式,没有加上 id 名,如果第一个样式名是 body,则会影响到所有词典的排版,这是我们不希望看到的。# q; D- z- p2 ?% h
+ E) A8 Q" f: w* k
如原始 CSS - @charset "utf-8";
* P' l! G3 J5 ?) } - 5 O5 ]/ x6 Y4 ]& w3 r
- body {- ?: d; r1 U4 o) e0 V& k w
- margin: 2em;
. s: h% ~# d9 N$ h- C+ K3 U - }4 Y! j7 U6 J: q1 K& Y8 u; B" ^6 v
-
6 \4 T& l7 G& e - a:hover {: H! C5 Z1 r" t* H' z0 v t( T4 }
- color: #4372b6;
" [: \* v+ p6 r. ^* ?- P6 G4 B/ ]; u - text-decoration: underline& `( a% z1 S, K7 p" Q
- }
复制代码
' n4 `& |/ b+ p& m! }0 J. CGoldenDict 会解析为 - @charset "utf-8";
" V7 V0 Z% y( G4 p7 \+ h
) u6 t, C6 R+ n2 {6 a! p1 {- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict body {
# \' w9 _" q' y, k) ]$ m. j - margin: 2em;
2 D5 F, W" ^; E/ t. _1 S7 i - }" X( d" D+ }2 }; r1 t8 d8 B
" T8 ?; Y( q+ Y( k! D$ a- #gdfrom-2af74dded57c0b4bf1a2e7c76ade8787 .mdict a:hover {0 @( D9 r% L& J3 D/ t+ O. D
- color: #4372b6;: U7 J( l8 B/ A- Y% B! Z4 d
- text-decoration: underline( h+ Y9 \# j1 [2 G
- }
复制代码
) P" P/ E7 b" s. p而欧路词典解析如下,body 前面没有加上 #ID224342347child,进而影响到全局的 body 标签。 - @charset "utf-8"; ' y, D3 Q- ]1 S- V _
- * I) ^" l( ]: Z; d- l' r
- body{
; w b) f9 L: Q" N6 i! e" R' ? - margin: 2em;! q' b! I! o9 g
- }
( }2 K9 t" T/ J" y3 G - " h9 s! n P1 B4 Q' |' l4 u# A. {
- #ID224342347child a:hover {
: V4 p) M& p* s* Z: @ ] - color: #4372b6;
" L4 n5 g( t1 ~# g8 q& m8 w) O - text-decoration: underline) R* p4 {# t+ s) Z$ u3 i: s! E# q' Q
- }
复制代码
8 \( A% e* v; {8 P这就是为什么许多人用欧路词典排版混乱的原因,这个 BUG 我已经反馈了,不知道会不会改,反正我之前提过好多建议,该公司都没采纳,这个 BUG 我看也未必会修复。 因此我的建议是删掉 @charset "utf-8";,因为欧路词典和 GoldenDict 本身就是以 UTF-8 打开的,无需再多此一举。增加了反而会导致欧路词典解析出错。
* x- H8 p' y' H( W3 w X 制作工具制作步骤获取数据源:可以是自己编纂的,也可以是其他格式的词典,还可以从网站抓取。 按照 mdx 的规则清洗数据:上面提到的 mdx 规范。 用 MDXBuilder 3.0 Beta2 转成 mdx。 $ e. b/ N; ^% U) q( Z& G, X( l) h) U
配置 Source:即词典原始数据文本路径,扩展名随意。 Target:目标词典文件路径,扩展名必须为 mdx。 Sytle:留空,这个用不到。 Data:资源数据路径,有就填,没有就不填。注意了,资源数据一定要存放到一个单独的文件夹 xx 中,不要直接全部分散在 mdx 目录下,而且这个 xx 文件夹并不会打包到 mdd 中,它会作为 mdd 资源数据的根目录。 Options: - B+ {% V+ C; I$ ]* h; x3 ]
Original:一定要选 Mdict(Compact HTML),这种格式就是我们上面提到的规范。 Encoding:为避免乱码,必须选 UTF-8(Unicode)。 Title:词典标题,可以被欧路词典读取到。 Description:词典描述,支持 HTML 标签,不过支持十分有限,词典软件可以读取到。 未提到的其他选项不管。 , v0 x$ T9 n& r) V
2 \9 D& k4 P5 j& r
制作技巧
& |1 V- ?. T& G; ?$ q. W; u- {9 y- Q( Z
9 |/ r6 u* X4 e6 Z6 {; O$ B
2 f6 l4 v, m8 @ |