怎樣在Word 中插入 C

從心裡說,我不喜歡 Word;我喜歡 Latex。然而現實就是這樣,明明有感情卻不能在一起,沒感情的綁得牢牢的 ……

由於寫文章的需要,需要在文檔裡插入C/C++代碼。我並不需要關鍵字高亮,因為印刷是灰度的,彩色的字效果反而不好。所以高亮對我沒有意義。如果有朋友需要高亮,可以使用Notepad++,把代碼複製進去,然後再用“帶語法高亮複製”的辦法,貼到word裡去。

怎樣在Word 中插入 C/C++ 代碼

這條路對我來說行不通,我只需要排出來的代碼能對齊就好了。選擇字符等寬的字體(Courier New),得到如下的結果:

怎樣在Word 中插入 C/C++ 代碼

看到了嗎? Word 裡怎麼調整都是對不齊的……去掉Word字符間距調整,還是這個樣子,實在是無語。怎麼個鬱悶了得!

痛定思痛,怎麼把這個問題解決呢?仔細觀察文檔,Word無法調整Courier New 字符間距,它調整的是空格的間距,我就想了,能不能在Courier New 字符裡找個佔位符,替代Word裡的空格呢?呵呵,還真就找到了……

怎樣在Word 中插入 C/C++ 代碼

用這個替代空格以後,真的就對齊了。

怎樣在Word 中插入 C/C++ 代碼

怎樣在Word 中插入 C/C++ 代碼

這裡有來了個問題,代碼裡要用這個看不見的小圓圈替代空格,工作量可不小!怎麼辦?我想到了用查找替換,試驗了一下不行。後來一想,用宏寫個小代碼不就解決問題了嗎?

 Sub replace_space()
'
' replace_space Macro

'
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文件,把代碼複製進去,執行該宏,所有空格都會被替代成小圓圈,然後再拷貝出來,貼到自己想要的地方……恩,算是解決了這個頭疼的問題了……


分享到:


相關文章: