您的位置:首页 > 编程语言 > C语言/C++

Word 中插入 C/C++ 代码

2011-05-11 14:02 274 查看
从心里说,我不喜欢 Word;我喜欢 Latex。然而现实就是这样,明明有感情却不能在一起,没感情的绑得牢牢的 ……

由于写文章的需要,需要在文档里插入C/C++代码。我并不需要关键字高亮,因为印刷是灰度的,彩色的字效果反而不好。所以高亮对我没有意义。如果有朋友需要高亮,可以使用Notepad++,把代码复制进去,然后再用“带语法高亮复制”的办法,贴到word里去。



这条路对我来说行不通,我只需要排出来的代码能对齐就好了。选择字符等宽的字体(Courier New),得到如下的结果:





看到了吗? Word 里怎么调整都是对不齐的……去掉Word字符间距调整,还是这个样子,实在是无语。怎么个郁闷了得!

痛定思痛,怎么把这个问题解决呢?仔细观察文档,Word无法调整Courier New 字符间距,它调整的是空格的间距,我就想了,能不能在Courier New 字符里找个占位符,替代Word里的空格呢?呵呵,还真就找到了……



用这个替代空格以后,真的就对齐了。





这里有来了个问题,代码里要用这个看不见的小圆圈替代空格,工作量可不小!怎么办?我想到了用查找替换,试验了一下不行。后来一想,用宏写个小代码不就解决问题了吗?

Sub replace_space()  '  ' replace_space Macro  ' 宏在 2011/5/11 由 雪松 录制  '  Dim outLoop As Boolean  Dim i As Integer  Dim start As Integer  Dim curpos As Integer  start = 0  curpos = 0  i = 0  Selection.Find.ClearFormatting  Do      With Selection.Find          .Text = " "          .Replacement.Text = "F"          .Forward = True          .Wrap = wdFindContinue          .Format = False          .MatchCase = False          .MatchWholeWord = False          .MatchByte = True          .MatchWildcards = False          .MatchSoundsLike = False          .MatchAllWordForms = False      End With      outLoop = Selection.Find.Execute      If (outLoop = True) Then          curpos = Selection.start          If (i = 0) Then              start = curpos          End If          Selection.InsertSymbol Font:="Courier New", CharacterNumber:=160, Unicode _              :=True          i = i + 1      End If   Loop While ((outLoop = True) And (((start <> curpos) And (i <> 1)) Or ((i = 1) And (start = curpos))))     End Sub


新建一个Word文件,把代码复制进去,执行该宏,所有空格都会被替代成小圆圈,然后再拷贝出来,贴到自己想要的地方……恩,算是解决了这个头疼的问题了……

本文出自 “夜来听风雨” 博客,请务必保留此出处http://coolbacon.blog.51cto.com/7777407/1279976
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: