Update: 自认为这篇写的不错,改了一下,加上了标点符号,感觉棒棒哒。—2016-01-07

需求

这里说的「复选框」(Checkbox)是计算机里面的术语,往大了说属于一种人机交互模型,主要用于「是否」判断,在各种档案文件中有很多的应用。如何在Word文档中实现复选框的效果是困惑了我将近十年的问题。最近想出了一个新的解决方案,连同之前的方法一块总结出来。这里只限于Word中编辑文档,不讨论其他情况。

解决方案

图片法

这是我之前几年里使用的方法。思想是将「对号」(关于这个符号后面还会有讨论)转化为图片,采用图片浮于文字上方或置于文字下方的形式,将对号和格子放在一块。

这个的优点是不改变原有的内容,只是添加了一个图片。缺点很明显:因为对号和格子压根没关系,所以一做位置的调整就乱套了。而且,要是选择了对号置于文字下方,想选中对号都困难。

内容控件法

这个方法的优点是可以在Word里做一个易于使用的复选框。对于Word 2013插入方法是在开发工具选项卡里点控件。

优点就是上面说的,非常方便。点一下就选中,再点就不选中,而且可以配置。可惜这个方法我很少用,因为有下面的缺点:

  • 一般情况下不需要这么强大的功能,点一下就改变状态反而容易出错。
  • 肯定要改原始的文档,别人可能不高兴。
  • 有兼容性问题。
  • 默认情况下,选中的格子用(BALLOT BOX WITH X)表示,和一般常规的对号不一样。
  • 虽然可以配置但配置界面不大好用。(这还是高版本的情况,低版本的相应功能更不好用,好像是用宏实现的,而高版本是类似新公式编辑器的实现,保存为低版本就失去效果了)。
  • 可选的符号也很少,还受限于字体,容易导致选中的和未选中的框看起来不一样的问题。

直接插入符号法

这个我用的也不多,实现方法就是插入(BALLOT BOX WITH CHECK)。但这个同样存在要改原始文档和兼容性问题,而且受限于字体,只不过能避免了兼容性问题罢了。

域代码合并符号法

这是我现在用的也是我感觉比较好的方法。我首先说实现方法。

我接触的表格里面一般用中文的(WHITE SQUARE)来表示复选框。我认为适合作为复选框的(BALLOT BOX)因为中文字体支持的问题用的不多。不论用哪种,都肯定包括了一个框框。我们借用图片法的思路,再添加一个对号并且将两者用域代码合并成一个,具体操作方法是:按Ctrl+F9,输入{EQ \o(□,√)}或者{EQ \o(☐,✔)}(这两个用哪个看你喜好了),按Alt+F9,完成。

优点:

  • 感官上是一个字符,不会像图片法一样乱动。
  • 域代码的支持比较底层,兼容性还可以,不大容易出错。
  • 可以保证和原来的格子一样,能让最严苛的人没话说。

字体的不同

上面几种方法中,图片法兼容性最好,其他几种方法都要和字符和字体打交道,所以肯定有各种问题,因为不可能所有人都安装同样的字体。下面我们简单讨论一下这个问题。

适合表示复选框的符号

根据上面的各种方法,如果用符号表示复选框,可以用下面几种符号:

  1. 独立符号表示复选框——可以用(BALLOT BOX WITH CHECK)或🗹(BALLOT BOX WITH BOLD CHECK)。
  2. 对于组合法——选择框可以用(BALLOT BOX)或(WHITE SQUARE)。
  3. 对号——可以用🗸(LIGHT CHECK MARK)、(CHECK MARK)、(HEAVY CHECK MARK)、(SQUARE ROOT)。

显示这些符号的字体我主要用了Win8.1自带的字体以及:

  • Symbola
  • 思源黑体

独立符号

  • (BALLOT BOX WITH CHECK)
  • 🗹(BALLOT BOX WITH BOLD CHECK)

前者用的比较多,后者貌似只有Symbola字体支持(如果以支持的符号数量作为评价符号字体好坏的标准,Symbola字体可能是最好的符号字体了)。

但在Symbola里显得有点大,这是个问题。

  • (BALLOT BOX)
  • (WHITE SQUARE)

根据我的感觉,一般是符号字体支持的不错,中文字体一般是支持的,但具体的大小情况就不大好说了。具体的效果可以看下面我做的效果图。

对号

  • 🗸(LIGHT CHECK MARK)
  • (CHECK MARK)
  • (HEAVY CHECK MARK)
  • (SQUARE ROOT)

这个就复杂了。首先说简单的情况,,Unicode名是SQUARE ROOT,也就是数学里的根号。但很多时候被用做「对号」,因为大多数的字体里面这个符号不带上面的横,就是个对号的样子,而且这个字符一般的字体都支持,所以很多人就习惯性的用了。但也有个例外,比如思源黑体里面这个符号是带上面的横的。我的理解是,既然人家不是对号,就不要用做对号了,专门的对号应该是前面三个。

Windows新的界面字体Segoe UI不支持light版的对号,其他两个支持,我比较喜欢这个符号字体的字形,可惜只有Windows才有这个字体。

最终结果

用Segoe UI Symbol字体里面的加上原来的框(一般是中文字体里面的WHITE SQUARE)就得到了最终的效果。最终的效果里面对号的字号相应放大了一点。

各种图

结语

这是到目前为止我的折腾经历,如果你有什么想法欢迎留言讨论。