Word中怎么设置代码高亮 word中关键字高亮的设置方法

word

2个回答

写回答

Linkie

2025-02-04 21:00

+ 关注

Word
Word

有时写文档时需要将代码粘贴到word中,但直接粘贴到word中的代码虽能保持换行与缩进等格式,但在一般代码编辑工具中的关键字高亮功能却无法实现。该方法无需任何插件,只需要制作一个宏即可实现类似sublime的显示效果

1、首先完成当前所有内容,建议把代码放入单独的文本框中,方便处理,也有较好的视觉效果。记得一定要拷贝一份副本!因为很可能因为代码量比较多,处理宏的时候卡死,只能强制退出word了。

2、当前文档新定义一个样式,命名为 code ,专门用来对代码进行格式化。由于是代码,所以推荐中文使用黑体(注释等),而英文使用等宽字体(courier new)。步骤如图。

3、选中代码, 单击样式库 ccode ,将代码应用该样式

4、新建宏,步骤如图

5、将VBA代码(在下一步中)拷贝进去,保存后关闭 (有VBA或相关程序经验者可根据自己需要进行相关修改,如关键词和高亮颜色等)

复制内容到剪贴板

'script to high light code In document

Private Function isKeyword(w) As Boolean

Dim keys As New Collection

With keys

.Add if: .Add else: .Add elseif: .Add case: .Add switch: .Add break

.Add for: .Add continue: .Add do: .Add while: .Add foreach: .Add echo

.Add define: .Add array: .Add NULL: .Add function: .Add include: .Add return

.Add global: .Add as: .Add die: .Add header: .Add this: .Add empty

.Add isset: .Add MySQL_fetch_assoc: .Add class: .Add style

.Add name: .Add value: .Add type: .Add width: .Add _POST: .Add _GET

End With

isKeyword = isSpecial(w, keys)

End Function

Private Function isSpecial(ByVal w As String, ByRef col As Collection) As Boolean

For Each i In col

If w = i Then

isSpecial = True

Exit Function

End If

Next

isspeical = False

End Function

Private Function isOperator(w) As Boolean

Dim ops As New Collection

With ops

.Add +: .Add -: .Add *: .Add /: .Add : .Add ^: .Add ;

.Add %: .Add #: .Add !: .Add :: .Add ,: .Add .

.Add ||: .Add : .Add |: .Add =: .Add ++: .Add --

.Add ' : .Add

End With

isOperator = isSpecial(w, ops)

End Function

Private Function isType(ByVal w As String) As Boolean

Dim types As New Collection

With types

.Add SELECT : .Add FROM : .Add WHERE : .Add INSERT : .Add INTO : .Add VALUES : .Add ORDER

.Add BY : .Add LIMIT : .Add ASC : .Add DESC : .Add UPDATE : .Add DELETE : .Add COUNT

.Add html : .Add head : .Add title : .Add body : .Add p : .Add h1 : .Addh2

.Add h3 : .Add center : .Add ul : .Add ol : .Add li : .Add a

.Add input : .Add form : .Add b

End With

isType = isSpecial(w, types)

End Function

Sub SyntaxHighlight()

Dim wordCount As Integer

Dim d As Integer

' set the style of selection

Selection.Style = ccode

d = 0

wordCount = Selection.words.Count

Selection.StartOf wdword

While dwordCount

d = d + Selection.MoveRight(wdword, 1, wdExtend)

w = Selection.Text

If isKeyword(Trim(w)) = True Then

Selection.Font.Color = wdColorBlue

ElseIf isType(Trim(w)) = True Then

Selection.Font.Color = wdColorDarkRed

Selection.Font.Bold = True

ElseIf isOperator(Trim(w)) = True Then

Selection.Font.Color = wdColorBrown

ElseIf Trim(w) = // Then

' lIne comment

Selection.MoveEnd wdLine, 1

commentwords = Selection.words.Count

d = d + commentwords

Selection.Font.Color = wdColorGreen

Selection.MoveStart wdword, commentwords

ElseIf Trim(w) = /* Then

'block comment

While Selection.Characters.Last/

Selection.MoveLeft wdCharacter, 1, wdExtend

Selection.MoveEndUntil (*)

Selection.MoveRight wdCharacter, 2, wdExtend

Wend

commentwords = Selection.words.Count

d = d + commentwords

Selection.Font.Color = wdColorGreen

Selection.MoveStart wdword, commentwords

End If

' move the start of selection to next word

Selection.MoveStart wdword

Wend

' prepare For set lIne number

Selection.MoveLeft wdwordwordCount, wdExtend

SetLIneNumber

End Sub

Private Sub SetLIneNumber()

Dim lines As Integer

lines = Selection.Paragraphs.Count

Selection.StartOf wdParagraph

For l = 1 To lines

lIneNum = l

If l10 Then

lIneNum = lIneNum

End If

Selection.Text = lIneNum

Selection.Font.Bold = False

Selection.Font.Color = wdColorAutomatic

p = Selection.MoveDown(wdLine, 1, wdMove)

Selection.StartOf wdLine

Next

End Sub

6、 选定代码文本 ,然后执行highlight脚本: 视图-宏- 选中SyntaxHighlight-运行, 然后执行就可以了。处理较长代码时需要一定时间,请耐心等待。

注意事项: 处理前一定要对原文章进行备份,以免前功尽弃。处理较长代码时需要一定时间,请耐心等待。

举报有用(10分享收藏

lhssbsk

2025-02-04 20:00

+ 关注

word中设置代码高亮可以通过使用“字体”选项中的不同颜色和样式来手动实现,或者利用插件如“CodeHighlighter”等。

举报有用(10分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号