【教程】自定义排版规则文件的使用

经验创意 · 657 次浏览
臭冬瓜 创建于 2023-04-07 11:57

此功能是"公文排版"动作的一个特色功能,它可以实现用户设置"公文排版参数选项"以外的参数,在一定条件下用户可以自由定义公文排版参数和规则,更加便捷灵活。

它的好处除了更加自由以外,就是不会影响动作升级。一般的动作如果自己修改了一些设置,当作者更新动作后,你自己修改的设置都会被删除,需要重新设置,比较麻烦。

同时,要用好这项功能具有一定门槛,一是需要了解动作中相关的VBA代码,二是需要了解正则表达式和转义符。当然,如果有些小伙伴不会可以直接联系我,我协助你定制一些规则。

 

一、文件要求

所有的规则都整合在一个文本文件中,文件名:公文排版自定义规则.rule,它保存在D盘根目录下,文件大小要求在20KB以内

 

二、编辑文件

如果是第一次创建自定义规则文件,文件内容如下,并展示一个示例:

 

三、内容说明

规则文件采用类似INI文件分段描述自定义规则(了解计算机的小伙伴肯定会很熟悉),如:

/// 注释

【子段名1】
查找规则1|||替换规则1
查找规则2|||替换规则2
【子段名2】
查找规则1|||替换规则1
查找规则2|||替换规则2
...

(1)以///开头的行是注释行,不会被执行

(2)每行自定义一个查找和替换规则。需要注意的是:包含"|||"才是有效规则,否则会等同于每行开头的///,认为是注释,不会被执行

(3)子段名称为"公文排版"菜单选项中【】内的文字,如:

目前包括:

全文|页面|段落|文本|要素|标题|表格|图片|全文页码|样式|红头|文号|编号|压缩|记录|单节页码|全文1|要素1|标题1

【说明】全文|要素|标题:指的是遍历方式的"一键全文排版";全文1|要素1|标题1:指的是搜索方式的"一键全文排版"

(4)子段不分先后顺序

(5)子段同名时,仅第一个有效,其后同名子段都会被忽略

(6)替换规则可参考:https://getquicker.net/KC/Help/Doc/strReplace 关于【查找和替换内容】部分

 

四、几个示例

【全文】
忽略识别公文三级和四级标题规则
^(\s*sTitle3Reg\s*=).*$|||$1 ""
^(\s*sTitle4Reg\s*=).*$|||$1 ""
修改1-4级标题字号:下面规则中最后"12"就是自己想要的字号(12 = 五号字)
^(\s*sTitle1FontSize\s*=).*$|||$1 12
^(\s*sTitle2FontSize\s*=).*$|||$1 12
^(\s*sTitle3FontSize\s*=).*$|||$1 12
^(\s*sTitle4FontSize\s*=).*$|||$1 12
修改1-4级标题段落缩进:后面的0, 0, 2分别代表左缩进=0、右缩进=0、首行缩进=2,注意要用半角","分开
^(\s*Array\(sTitle1.*?)0[\d\,\s]+2(.*)$|||$1 0, 0, 2 $2
^(\s*Array\(sTitle2.*?)0[\d\,\s]+2(.*)$|||$1 0, 0, 2 $2
^(\s*Array\(sTitle3.*?)0[\d\,\s]+2(.*)$|||$1 0, 0, 2 $2
^(\s*Array\(sTitle4.*?)0[\d\,\s]+2(.*)$|||$1 0, 0, 2 $2
修改落款段落格式:下面分别对应左缩进=0,右缩进=0,首行缩进=0,居右对齐(居左=wdAlignParagraphLeft)
^(\s*IssLeftIndent\s*=).*$|||$1 0
^(\s*IssRightIndent\s*=).*$|||$1 0
^(\s*IssFirstIndent\s*=).*$|||$1 0
^(\s*IssAlignment\s*=).*$|||$1 wdAlignParagraphRight

【要素】
修改落款段落格式:下面分别对应左缩进=0,右缩进=0,首行缩进=0,居右对齐(居左=wdAlignParagraphLeft)
^(\s*IssLeftIndent\s*=).*$|||$1 0
^(\s*IssRightIndent\s*=).*$|||$1 0
^(\s*IssFirstIndent\s*=).*$|||$1 0
^(\s*IssAlignment\s*=).*$|||$1 wdAlignParagraphRight

【标题】
忽略识别公文三级和四级标题规则
^(\s*sTitle3Reg\s*=).*$|||$1 ""
^(\s*sTitle4Reg\s*=).*$|||$1 ""
修改1-4标题字号:下面规则中最后"12"就是自己想要的字号(12 = 五号字)
^(\s*sTitle1FontSize\s*=).*$|||$1 12
^(\s*sTitle2FontSize\s*=).*$|||$1 12
^(\s*sTitle3FontSize\s*=).*$|||$1 12
^(\s*sTitle4FontSize\s*=).*$|||$1 12
修改1-4级标题段落缩进:后面的0, 0, 2分别代表左缩进=0、右缩进=0、首行缩进=2,注意要用半角","分开
^(\s*Array\(sTitle1.*?)0[\d\,\s]+2(.*)$|||$1 0, 0, 2 $2
^(\s*Array\(sTitle2.*?)0[\d\,\s]+2(.*)$|||$1 0, 0, 2 $2
^(\s*Array\(sTitle3.*?)0[\d\,\s]+2(.*)$|||$1 0, 0, 2 $2
^(\s*Array\(sTitle4.*?)0[\d\,\s]+2(.*)$|||$1 0, 0, 2 $2


【红头】
突破发文机关标识最大字号限制规则:字体高扩大到72磅,字体宽扩大到50磅
^(\s*defOrganFontMaxHeight\s*=).*$|||$1 72
^(\s*defOrganFontMaxWidth\s*=).*$|||$1 50

【编号】 自定义论文多级编号规则:1 /1.1 /1.1.1 /1.1.1.1 ^(\s*sTitle1OLNumberFormat\s*=).*$|||$1 "%1 " ^(\s*sTitle2OLNumberFormat\s*=).*$|||$1 "%1.%2 " ^(\s*sTitle3OLNumberFormat\s*=).*$|||$1 "%1.%2.%3 " ^(\s*sTitle4OLNumberFormat\s*=).*$|||$1 "%1.%2.%3.%4 " ^(\s*sTitle1OLNumberStyle\s*=).*$|||$1 wdListNumberStyleArabic ^(\s*sTitle2OLNumberStyle\s*=).*$|||$1 wdListNumberStyleArabic ^(\s*sTitle3OLNumberStyle\s*=).*$|||$1 wdListNumberStyleArabic ^(\s*sTitle4OLNumberStyle\s*=).*$|||$1 wdListNumberStyleArabic

 

四、注意事项

别忘了在动作右键菜单设置"启用替换规则文件"。如果不再使用规则文件,也不要忘记选择"禁用替换规则文件"关闭。

臭冬瓜 最后更新于 2023/8/6

回复内容
德阳老龙 2023-05-11 18:20
#1

有没有办法使用—1—这种类型的页码,而不是使用office默认-1-页码,还有建议在全文排版处添加一个全文加粗(包括页码)

臭冬瓜 回复 德阳老龙 2023-05-11 19:30 :

全文加粗?没有必要吧,CTRL+A全选,CTRL+B不就全部加粗了吗。页码同理。主要我这个公文排版,没有全文加粗的情况啊。—1—我考虑考虑,现在用的是系统自带的,—1—需要自己做出来。

臭冬瓜 回复 德阳老龙 2023-05-11 21:20 :

使用域代码的页码两侧已经可以使用"—",但是图文框的还没有解决

德阳老龙 回复 臭冬瓜 2023-05-11 21:24 :

额。。还有那种手册的文件,第一页封面第二页空白,第三页正文,如何正常识别让他从第三页开始页码1

臭冬瓜 回复 德阳老龙 2023-05-12 00:02 :

图文框的页码也OK了。但是你说的太灵活了,如果你熟悉WORD并了解"节"是很容易修改的。我最多只能添加一个参数,来控制每节是不是从1开始重新计算页码,如果每个节都单独控制不会做的,那样还不如手动,因为手动不用调用VBA。

你可以加我Q,我把新调整页码功能提供给你先测试。

臭冬瓜 最后更新于 2023-05-12 00:09
德阳老龙 回复 臭冬瓜 2023-05-12 00:08 :

感谢付出

臭冬瓜 回复 德阳老龙 2023-05-12 00:10 :

加我Q吧,你也没睡?!

臭冬瓜 回复 德阳老龙 2023-05-12 13:41 :

页码样式的问题已经完全解决,而且我还增加了两个参数:一是每节可以设置成从1重新开始计数;二是页码左右两侧的修饰符可以自己定义。

另外,根据你的建议,我综合考虑了一下:增加一个"设置单节页码"的功能,你可以加我Q进行测试,看看是否符合你部分的需求。(我猜想你是想用在论文方面)

臭冬瓜 最后更新于 2023-05-12 13:42
德阳老龙 回复 臭冬瓜 2023-05-12 14:02 :

好的,下午上班加你,感谢

德阳老龙 回复 臭冬瓜 2023-05-18 12:43 :

你Q多少呢。。。我怎么加你,前两天阳了进医院了 ,不好意思

臭冬瓜 回复 德阳老龙 2023-05-18 13:02 :

动作介绍、讨论置顶帖子里面都有啊,QQ:84299244:)

最近家里人也有阳的:(

Holiday* 2023-04-17 17:10
#2

发现2个小问题:1. 我在文件公文排版自定义规则.rule中写下以下内容后,运行动作后仍然会识别形如"1."这样的标题

```

【全文】
忽略识别公文三级和四级标题规则
^(\s*sTitle3Reg\s*=).*$|||$1 ""
^(\s*sTitle4Reg\s*=).*$|||$1 ""

【标题】
忽略识别公文三级和四级标题规则
^(\s*sTitle3Reg\s*=).*$|||$1 ""
^(\s*sTitle4Reg\s*=).*$|||$1 ""

```

2.如果标题的样子是“1.(我)”,也就是“1.”后面有“(”,那么该文字不会被识别为三级标题。

Holiday* 最后更新于 2023-04-17 17:11
臭冬瓜 回复 Holiday* 2023-04-17 22:19 :

是否打开"启动自定义规则文件"

Holiday* 回复 Holiday* 2023-04-17 22:20 :

启用了

臭冬瓜 回复 Holiday* 2023-04-17 22:33 :

刚刚测试了一下,我启用规则文件后,我这里没有问题,方便的话加我QQ,我看看

第二个问题的确存在,应该是正则判断的问题,有空我会修正一下,谢谢反馈!

臭冬瓜 回复 Holiday* 2023-04-18 00:46 :

第一个问题我这里不存在,第二个问题还真就不是我的代码造成的,而是WORD识别句子的问题。我已经修复,今天有空加我QQ,我给你修正后的动作,麻烦你再测试一下。

Holiday* 回复 臭冬瓜 2023-04-18 08:33 :

谢谢您的付出!

回复主贴