简单排版的 VBA
Submitted by kzeng on Sun, 2009-10-04 19:07<
p>
因为需要从一篇旧的PDF格式的 proposal 中拷贝一些文字出来,又找不到生成 PDF 的 LaTex 源文件,所以不得不 ctrl+c & ctr+v,但是 PDF 的文字直接拷贝到 word 里格式就乱掉了,一行一行的清除 paragraph break 实在麻烦,用查找替换还要运行多次,所以就写了一小段 Word 中的 VBA,测试了一下,效果还不错,贴出来分享一下:
<
p>
Sub Format()
ActiveDocument.Content.Select
With Selection.Find
.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Execute FindText:=".^p", _
Replace:=wdReplaceAll, ReplaceWith:=".^l"
.Execute FindText:="^p", _
Replace:=wdReplaceAll, ReplaceWith:="^s"
.Execute FindText:=".^l", _
Replace:=wdReplaceAll, ReplaceWith:=".^p"
End With
Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify
End Sub
因为句号加段落换行是段落结尾的必要条件,所以先将.^p
替换成 .^l
保护起来,然后把多余的换行全部转换成空格,然后再把.^l
恢复成.^p
,最后把段落的对齐设置成两端对齐(这是读惯了汉语的喜欢,喜欢方方正正的文字块)。
这个办法还可以扩展为可以识别问号或者感叹号结尾的段落,但是因为用的不多就没有加入,同时也可以修改用于汉语。以前有一个叫做 DreamEditor 的小软件(经常和 Cterm 一起打包)可以很方便的实现上述功能,并且功能更强大,但是已经很久没有更新了,所以在自力更生一下。