词典制作:从一个简单的图片词典开始

图片词典相对文字词典还是比较简单的,更适合新手入门。当然图片词典也有复杂难做的,如:切词版、精确定位及粗略定位版等。本帖只介绍一种简单的图片词典的制作。

前置知识:

  • 简单的 html 知识
  • 简单的 css 知识
  • 知晓 mdx 源文件格式
  • 会使用 MdxBuilder 打包词典
  • 最好会一点简单的正则

都不会也没关系,先跟着做。

用到的软件

  • EmEditor
  • Excel
  • MdxBuilder3.0

〇、原材料

新手制作时常有个障碍就是没有原材料。自己动手吧,难度似乎又加大了,然后耐心余额可能就不足了 :grin:

阿弥陀佛大师留了一个很好的原材料,非常适合新手练习,请允许我在此引用。
【阿彌陀佛】《古代汉语名言词典》文字版/图片版 - 汉汉 - FreeMdict Forum
大师提供了 pdf 和 Excel 索引表,我又将词典的正文图片导出来了,进一步降低难度。(正文前后的音序表、笔画索引什么的,这次就不管它了。)

正文纯黑白图片本坛下载。所有原材料又在百度盘存了一份。

一、初步制作

以下步骤使用了简单的正则表达式,不想用/不会用正则,可参考二楼。

  1. 打开Excel索引表,选中B列→设置单元格格式→自定义:000

  2. 全选复制到Em中,查找:

^(.+)\t(.+)\n

替换为:

\1\n<img src="GHMY\2.png" width="100%">\n</>\n

保存。

  1. 打包
  2. 完成。

步骤说明

  1. 这是为了使页码的位数相同,便于后期使用。一般会用4位数(0000),但这本词典只有300~400页,3位数足够了。

  2. “.”匹配任一字符,“.+”匹配任意多个字符。“()” ( 和 ) 之间的表达式被定义为“组”,它们可以用 \1 到 \9 的符号来引用。
    GHMY(古汉名言)用的是拼音首字母,此是习惯使然。事实上你可以使用你喜欢的字符命名。如果用其它名称,须同步修改图片文件名。

  3. 使用MdxBuilder打包。“Source”选择保存后的文本,“Data”选择图片目录。其它参数如图所示。

注意:Excel索引表中漏了一个页码。

二、加入上下页导航

上面的词典太简陋了,上下页都没有。下面就把它加上。
按行规来说 图像词头和文字词头通常是分开的。

1.图像词头

  1. Em中插入序列001~368,复制 1 列到 2 列和 3 列。删除 2 列最后一个单元格的值和 3 列第一个单元格的值,并将 2 列整体向下移动一格,3 列整体向上移动一格,最后补上空单元格的值。调整后如图所示。

  2. 查找:

^(\d{3})\t(\d{3})\t(\d{3})\n

替换为:

GHMY\1\n<img src="GHMY\1.png" width="100%"><br><a href="entry://GHMY\2">上一页</a> <a href="entry://GHMY\3">下一页</a>\n</>\n

2.文字词头

  1. 打开Excel索引表,选中B列→设置单元格格式→自定义:000
  2. 全选复制到Em中,查找:
^(.+)\t(.+)\n

替换为:

\1\n@@@LINK=GHMY\2\n</>\n

合并两个文本文件,打包,完成。

3.步骤说明

1.1插入序列:“编辑”→“高级”→“编号”,注意:“首行”填“001”。进入表格模式:“编辑”→“CSV”→“制表符分隔”。
image

这一步也可以在Excel中操作。
1.2上下页导航也可以放在图像上方,看个人习惯。
<a>标签用于加链接;entry://用于词典内跳转;<br>插入换行。
2.1同前。
2.2使文字词头跳转到图像词头。

三、不使用正则

四、加入样式表(CSS)

五、制作“伪图文版”

六、制作成模拟单栏

七、制作图文综合版

17 个赞

三、不使用正则

  1. 第一步还是一样。打开Excel索引表,选中B列→设置单元格格式→自定义:000

  2. 在页码左侧插入一列,填入:
    ♂<img src="GHMY
    页码右侧两列分别填入
    .png" width="100%">
    ♂</>

  3. 全选复制到Em中:
    \t 替换为空
    替换为 \n
    替换时需选中“转义字符”或“正则表达式”。
    工具栏:


    “替换”对话框:
    image

  4. 替换后的格式:
    哀莫大于心死,而人死亦次之
    <img src="GHMY001.png" width="100%">
    </>
    爱赤子者不慢于保,绝险历远者不慢于御
    <img src="GHMY001.png" width="100%">
    </>

如不想安装Em,可使用其它支持转义字符替换的文本编辑软件。若都没有,可试试在Word中替换。不过真心不建议这么做,下方步骤供参考:

全部复制到word中。
注意:不能直接复制过去,先复制到记事本中,再复制后粘贴到word中。
使用两个替换,使其符合mdx源文本格式。
1.查找 ^t 替换为空。
2.查找 替换为 ^p
复制到文本文件中并保存。

特殊字符 是替换的中介,可自由使用其它特殊字符。

2 个赞

四、加入样式表(CSS)

我想给图像加上底色,还想让上下页居中显示……

1.图像词头

  1. 同“二、加入上下页导航1.1”,在Em中制作成三列页码。

  2. 查找:

^(\d{3})\t(\d{3})\t(\d{3})\n

替换为:

GHMY\1\n<link href="古汉名言.css" rel="stylesheet" /><img src="GHMY\1.png"><zm><a href="entry://GHMY\2">上一页</a> <a href="entry://GHMY\3">下一页</a></zm>\n</>\n

2.文字词头

同“二、加入上下页导航2.”。

合并两个文本文件,打包,完成。

3.样式表

img {width:100%; background-color:#fcf6ee;}
zm {display:block; text-align:center;}

保存到文本文件中,并重命名为“古汉名言.css”。

4.操作说明

词条其实就是一个个简略的网页,所以要调用样式表,每个词条都要加上。
图像宽度在css中设置,更便于控制。

<zm> 是个自定义标签,其实并不是个好名字。这是个历史遗留问题。

要让“上下页”居中也可以使用标签
<center>要居中的文字</center>
虽然这个标签已不推荐使用,但各词典软件都能支持。

五、制作成“伪图文版”

1.图像词头

同“ 四、加入样式表1.”

2.文字词头

  1. 打开Excel索引表,选中B列→设置单元格格式→自定义:000
  2. 全选复制到Em中,查找:
^(.+)\t(.+)\n

替换为:

\1\n<link href="古汉名言.css" rel="stylesheet" /><hw>\1</hw><br><a href="entry://GHMY\2">第\2页</a>\n</>\n

合并两个文本文件,打包,完成。

3.样式表

hw {display:inline-block; font-size:24px; color:#000064; font-weight:400;}
hw:before {content:"【"; color:#800000; font-size:.9em; }
hw:after {content:"】"; color:#800000; font-size:.9em; }
a:link {color:currentColor; text-decoration:none;}
a:visited {color:currentColor}
a:link:hover {color:#b30015}

img {width:100%; background-color:#fcf6ee;}
zm {display:block; text-align:center;}

保存到文本文件中,并重命名为“古汉名言.css”。

9 个赞

晚上好,喜欢:doge:,哪些是emeditor高级版独享的功能哇,标注一下(?)
没买不知道

有所谓的高级版吗?注册一下应该就可以吧?在Help的菜单下有一个填注册号的地方。

Emeditor(2021),注册号在该帖中,标明“注册可用”旁边的就是注册号。

MdxExport、MdxBuilder下载,参看此帖:

1 个赞

没有高级版吧。这是官网的版本比较。
比较桌面安装版,桌面便携版和商店应用版 – EmEditor (文本编辑器)

3 个赞

你没有用shaoshi说的注册码吗?
前几天有网友告诉我付费版功能多一点,比如提取功能

2 个赞

用了。羞愧,一直用的PJ版 :joy:

2 个赞

我也要学,我也要用,好用了再考虑捐赠购买。
但是我先去跑几圈,减肥比较重要。

自从学会了制作mdx,我已经看完了民法典啦,正在看民法典学习读本。刷起来贼欢快

1 个赞

Niubility!

1 个赞

六、制作成模拟单栏

Mastameta 大佬的模拟单栏真好用,我想要,我想要……

1.图像词头

  1. 同“二、加入上下页导航1.1”,在Em中制作成三列页码。

  2. 查找:

^(\d{3})\t(\d{3})\t(\d{3})\n

替换为:

GHMY\1\n<link href="古汉名言.css" rel="stylesheet" /><div><book><c1><img src="GHMY\1.png"></c1><c2><img src="GHMY\1.png"></c2></book><zm><a href="entry://GHMY\2">上一页</a> <a href="entry://GHMY\3">下一页</a></zm>\n</>\n

2.文字词头

同“二、加入上下页导航2.”。
或,
同“五、制作成“伪图文版2.”。

合并两个文本文件,打包,完成。

3.样式表

hw {display:inline-block; font-size:24px; color:#000064; font-weight:400;}
hw:before {content:"【"; color:#800000; font-size:.9em; }
hw:after {content:"】"; color:#800000; font-size:.9em; }
a:link {color:currentColor; text-decoration:none;}
a:visited {color:currentColor}
a:link:hover {color:#b30015}

book {display:flex; flex-flow:column nowrap; align-items:center; position:relative;
	border-radius:.4em; border:1px solid #f5ece0; background-color:#fcf6ee;
	width:98%; max-width:100%; padding:.3em .3em .3em .3em; overflow:hidden}
book img {width:100%; height:auto; }
c1, c2 {display:block; width:100%; overflow:hidden}
c2 {display:none}

@media (max-width:51em) {
	book {max-width:25em; padding:.5em .2em; margin:.3em 0 0 0; clear:right}
	c1, c2 {width:99.5%; display:inline-block; padding:0 0 .5em}
	book img {width:200%}
	c1>img {margin:-12% 0 -3% .5%}
	c2>img {margin:-12% 0 0 -100.5%}
}

zm {display:block; text-align:center;}

保存到文本文件中,并重命名为“古汉名言.css”。

4.实现原理

在一个页面中插入两张同样的图片。
窗口足够宽时,按窗口宽度显示整页图像,并隐藏后一张图。窗口足够窄时,则将图片宽度设置成窗口宽度的两倍,前一张图让其显示左半侧,后一张图让其显示右半侧。
有的词典软件貌似因不支持图片放大的操作,而无法使用‘模拟单栏’。

6 个赞

谢谢制作教程。请问为何图像与文字的词头要分开呢?这能起什么作用呢?似乎不分开也可以?

习惯?便于控制?主次分明?其实我也是学习大佬的做法 :grin:
可以不分开吗?当然可以!你的词典你做主。

七、制作图文综合版

阿弥陀佛大师已经做好了文字版,不过原文字版没有使用css。
我已将其整理成css版,只要和前面制作的图像版合并起来就成了“图文综合版”啦。

古汉名言(css)_源文件本坛下载。所有原材料又在百度盘存了一份。

细细察看文字版,发现词条内未注明页码,这就需要先给文字版加上页码。我们先将页码部分做好,再来给文字版添加页码。
前面“伪图文版”中最后显示出来的页码,形如:“第001页”。“第1页”应该才是我们平常习惯用的,所以这里需调整一下。

1. 处理页码

  1. 打开Excel索引表,选中B列复制到C列。选中C列→设置单元格格式→自定义:000
  2. 全选复制到Em中,查找:
^(.+)\t(.+)\t(.+)\n

替换为:

\1\t<pg><a href="entry://GHMY\3">第\2页</a></pg>\n
  1. 复制回 Excel ,另存为页码表。

2. 插入页码

  1. 先将文字版词条处理成单行:第一行前添加一行 </> ,查找 </>\n(.*)\n 替换为 </>\1\t
    删除所有 </> 后复制到 Excel 中。全选后按字母排序。在A列左侧插入两列。

  2. 将 Excel 页码表也全选后按字母排序。复制A、B列,粘贴到前一个 Excel 表的前两列中。

  3. 在合并的 Excel 表的E1单元格中输入 =A1=C1
    复制E1单元格,滚动条拉到底,选中E1~E3529,粘贴。
    注意:不要直接选中E列后粘贴。

  4. 查找 FALSE ,参数如图。
    image
    会发现原文字版多了一条,以及几条符号有误,总体来说比较顺利。
    修改文字到查找不到为止。
    清除E列,填入 </> 。删除A列。

  5. 复制回 Em。
    查找:</hw> 替换为:</hw>\t
    将页码列移动到 </hw> 所在列之后。
    查找:\t<link 替换为:\n<link
    查找:\t</> 替换为:\n</>
    删除其余 \t

3. 合并源文本

将“模拟单栏”的图像词头复制到第2步的文本文件中。打包,完成。

4. 样式表

将以下代码添加到压缩包中的 css 尾部。

book {display:flex; flex-flow:column nowrap; align-items:center; position:relative;
	border-radius:.4em; border:1px solid #f5ece0; background-color:#fcf6ee;
	width:98%; max-width:100%; padding:.3em .3em .3em .3em; overflow:hidden}
book img {width:100%; height:auto; }
c1, c2 {display:block; width:100%; overflow:hidden}
c2 {display:none}

@media (max-width:51em) {
	book {max-width:25em; padding:.5em .2em; margin:.3em 0 0 0; clear:right}
	c1, c2 {width:99.5%; display:inline-block; padding:0 0 .5em}
	book img {width:200%}
	c1>img {margin:-12% 0 -3% .5%}
	c2>img {margin:-12% 0 0 -100.5%}
}
zm {display:block; text-align:center; margin-top:.5em}

5. 马后炮

阿弥陀佛大师的文字版和 Excel 索引表中都漏了4条。其主题帖的10楼发了已修补的mdx,可对照它将漏的词头插入索引表中。
:face_with_monocle:

5 个赞

@alexpeng 兄,整理的相當棒耶,CSS的使用,在下都是亂套,沒仔細的研究過,請教老兄,hw:before ,hw:after ,hw 是什麼標簽,另外此 before ,after 可否套用於 div 的標簽
剛搞懂,不好意思 :sweat_smile:

1 个赞

hw 是自定义标签,你可以改成其它的。
可以啊,css 的问题可以这样查找“css before”。

1 个赞

Thanks a lot
謝謝老兄,終於搞懂了!竟然連 class 也能套用,讚!… :sweat_smile:

1 个赞

高级!这是什么软件?

不是軟件,是w3school 網站