什么是“域”?所谓“域”其实是一种功能代码。文档中插入:页码、日期、超级链接、目录、拼音……,就是插入了对应的:Page域、Date、Hyperlink域、Toc域、Eq域……。“域”可谓是劳苦功高而鲜为人知。
以下通过实例,为你展示这个世界级“劳模”的风采。
1.关于域的快捷键和预备知识
● 插入空域
Ctrl + F9。以该组合键插入空域,看起来象一对花括号——{ }。在其中输入域名称“Time”,例 1:{ Time },作用是显示当前系统时间。
● 在域代码和域结果之间切换
例 1 中并未如预期显示貌似“2:51:47 PM”的域结果。且定位到该域前(或内部域代码,以下操作都要先定位),按组合键“Shit + F9”,以切换显示域结果和域代码,得偿所愿。
● 更新域
“2:51:47 PM”并不总是因时而动,除非你手动更新它(按F9键),或直到其它导致域更新的事件(打印打开)发生。若需要同时更新文档中所有域,先全选,后F9。
● 锁定与解除锁定
锁定:Ctrl + F11;解除锁定:Ctrl + Shift + F11 ;是一对互逆操作。
● 避免域被更新,使用锁定域操作;欲使锁定后的域能被更新,先解除锁定;
例 1的域被锁定后,更新无效,直到解除锁定。
● 取消域的链接
Ctrl + Shift + F9。该操作将转换域为常规文本,不可逆转。粘贴自网页的内容,要取消包含的大量超级链接,先全选后转换。
并不是所有的域都支持转换。
● 域开关及其指令
即域代码中,控制最终显示结果的代码。域开关是以反斜线“”打头的多个字符,空格分隔,开关指令紧随。有通用开关和专有开关两大类。
通用开关三种:格式开关(*)、数字图片开关(#)、日期时间开关(@);
专用开关繁多,因域名称不同而异,以反斜线加一个或多个字母为标志。
例 2 合同、票据中显示人民币大写格式:
域代码:{ = 123.45 * Chinesenum4 } 域结果:壹佰贰拾叁元肆角伍分
“CHINESENUM4”为中文货币大写格式指令。
例 3 外贸出口企业订单工单用英文数字
域代码:{ = 123.45 * CardText * Caps} 域结果:One Hundred Twenty-Three
“CardText”为数字英文序数指令,“Caps”指令每单词首字母大写,一域可有多指令。
例 4 会计统计千位分符数字:
域代码:{ = 123.45*10^8 # "#,###" } 域结果:12,345,000,000
“#,###”中“#”为数字占位符“,”为千位分隔符。
例 5 灵活的日期时间开关指令:
域代码:{ Time @ "H时mm分" } 域结果:14时51分
“H时mm分”中“H”为24小时制小时数(“h”为12小时制),“mm”为两位数字表示的分钟数。
例 6 简单数学表达式,用公式域优于用公式编辑器:
域代码:{ Eq f ( -b±r(b2-4ac) , 2a) } 域结果:
Eq 域专用开关及指令:“f(分子,分母)”表分式,“r(底)”表根式。
● 域的嵌套
域代码内可以包含域。
例 7 等式域内套Time域:{ = if( { Time @ "H" }>12,"下午好!","上午好!") },未过12时显示为:上午好!,否则显示为:下午好!
通过表格菜单-公式,对话框的“粘贴函数”所罗列函数,“if()”在其中,语法为:if(判定,真,假),当“判定”成立,取“真”代表的结果,否则“假”。
2.插入有特殊要求的页码
例 8 如上图,一纸横向分4栏,各栏页码依次是:
{ ={ Page * arabic }*4-3 } { ={ Page * arabic }*4-2 } { ={ Page * arabic }*4-1 } { ={ Page * arabic }*4-0 }
“* arabic”为通用格式阿拉伯数字指令。
3.简单计算
参与运算的皆为半角符号。
例 9 域代码:{ =(1+2-3)*4/5^6 } 域结果: 0
例 10 引用已经存在的数学表达式“3.14 * 3^2 ”并求值。
先选中引号内表达式,并添加名为“CircleS”的书签,后在等式域中引用该书签:
域代码:{ ={ ref CircleS } # "园面积=#.00 (平方米)"} 域结果:园面积=28.26 (平方米)
优点是,原表达式部分改变后,求解只需更新域。
4.表内统计
表内外数据相互引用,请参考例10。
同一个表,数据引用相对简单。其方式同ET电子表格,即先以字母表示列序,继之以数字指明行号。见下表末列。
表格 1 单元格引用
Sum()为求和,内部参数为一个或以逗号分隔的多个,参数类型为常量、可计算的表达式、引用
5.仿随机数发生器与口算题
例 11 仿随机数发生器(值域0-99):
域代码:{=mod({Time @ "s"}*{Seq kgs},100) # "#"}
Seq域插入自动序列号,用“c”开关控制插入前边最近一个值{Seq kgs c},mod()求余函数。
用该代码生成口算题的数字:43+86; 18-20; 40×54; 33÷68...
注意:1)为使这些操作数看起来更像随机生成的,切忌同时更新多个域;2)为确保相减不为负值、相除值为整数,加"c"开关控制,并同时更新两个域。示意如下:
{=mod(...)*mod(...{Seq kgs}...)...} ÷ {=mod(...{Seq kgs c}...)...}=
为作业提供参考答案用:{=a1+c1}(运算数和运算符分别置于表元中)
判定学生录入是否正确用:{=if({=a1+c1}=d1,"√","×")}
6.提取身份证号码中的生日
假定某表b1单元中接受填入18位身份证号码:12345619870123956x ,在目标单元输入以下代码,可提取生日:
域代码:{ =if(b1>10^17,int(b1/10^4),int(b1/10^3)) # "x000年00月00" }
域结果:1987年01月23
“x”指令放弃占位符左边数字,“0”为数字占位符,int()为取整函数。
7.“过期”判定
例 12 判定系统日期是否超过设定(此例中为2012/12/31)
域代码:{=if(20121231>{Date @ "YYYYMMDD"},"把生命中的每一天当作最后一天过。","过期")}
8.自创字符
例 13 “问题”“提问”符号。
域代码:{ Eq o (t,门) } 域结果:
“o”指令后续符号叠加到前一符号上。
例 14 用“█”做遮罩,用空格占位。
域代码:{eq o (辉, █, 月)} 域结果:
下划线位置为白色(背景色)“█”符号,小五号字;其余为五号字;“█”“月”前有空格调整占位。
例 15 武则天所造的“地”字
域代码:{eq o a(sup4(山),水,sdo4(土))} 域结果:
"s"上标下标开关,"up4"向上偏移4磅,"do4"向下偏移4磅。“山水土”7号字,缩放200%
例 16 配合字体提升缩放。
域代码:{ Eq o ( 辶,隹 ,寶, 招) }
域结果:
为避让,使用若干五号空格占位,计:“辶”前3个,“隹”后2个, “招”前2个;
字体设置参考:“辶”华文新魏,三号,缩放190%;“隹招”华文新魏,五号,加粗,缩放66%,提升1.06毫米;“寶”方正舒体,二号,缩放66%,提升1.06毫米;
段落文本基线对齐。
9.方程组
例 17 前导及域代码:{{Eq aal(2x2+y=5,3x-y=0)}结果:{
“a( , )”列二维矩阵开关,“al”左对齐修正开关。
10. 用Ref域克隆标签
一张纸,打印裁切多行多列的小标签,推荐使用“Ref”域来克隆出多个副本。
参考做法:用表格分割为多个标签区域,设计出第一个标签,选中所在单元格,并定义为书签“bk”,在其它单元格插入{ Ref bk}域。
若要求每个标签有不同的序号(电影票车票等),在打印序号位置插入文本框,并设置项目编号(表格 2)
表格 2 标签排版
11. 其它常用域
● 窗体域:通过试图菜单-工具栏-窗体,改工具栏包含多种窗体域,在设计用户填表,尤其有用;
● “Docvariable”域:引用文档命名变量,这些变量必须以编程方式赋值修改,代码如下:
● Thisdocument.Variables.Add "排版说明","本文档,未引用外部图形图像"
● 赋值后文档中该域的使用:{Docvariable 排版说明};
● “Toc”域用于创建文档目录;
●“Mergefield”域,在邮件合并中显示数据。