简单排版的 VBA

<

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 一起打包)可以很方便的实现上述功能,并且功能更强大,但是已经很久没有更新了,所以在自力更生一下。

Free Tags: 
Blog分类: