DevC++实现代码高亮复制进word

时间: 2019.10.28
缘起: 课程报告大多为word版,日常写代码还是习惯使用 DevC++ ,然而直接在word复制代码,格式实在陋。
教程现状: 网上不少教程,大部分介绍的都是使用Notepad++来完成。不想换编辑器,因而探索了下,最终找到了使用DevC++实现代码高亮复制入word的方法。
本质: 保存为 .rtf.html 等带格式的文件,然后复制,在Word中粘贴。



0. 前言

不少实践课程都要求写word版的报告,有无代码高亮,美观程度还是有很大差别的。下图以示对比:

有无高亮对比

图上为直接复制c++代码;图下为带高亮复制代码。可以明显看到在美观度上,两者有着不小的差距,尤其是阅读代码时。相信作为报告上交,后者会更容易加分。

1. 高亮复制原理

绝大多数代码编辑器,从中直接复制代码只包含文本,不包含格式信息。因而需要将其剪切为 富文本.rtf 或是 网页.html ,再复制入word,则可以保留高亮。

2. 网上现有方法

在撰写我的报告时,搜寻了不少 c++代码高亮复制入word 等关键词。得到的绝大部分解决方案如下:

  1. 使用 notepad++ 直接 Copy RTF/HTML to clipboard (最多推荐)
  2. 使用 Eclipse 去掉勾选 启用折叠 (较少推荐,未验证)
  3. 部分版本 VS 直接复制可以(有说VS2013可以,未验证)

然而。。用习惯了DevC++,不想为了这再换IDE。更重要的是,总觉得这一点DevC++应该也可以实现,因而仔细找了找,终于发现了解决方案!

3.使用DevC++保留代码高亮

步骤:

  1. 在DevC++中,点选 文件 -> 导出 -> 到RTF / 到HTML
  2. 打开导出的文件,复制文字
  3. 打开word,粘贴。即可看到带高亮的代码被粘贴于word。

其实就是围绕着高亮本质,找到保留成 .rtf 或是 .html 的方法即可。

注意: DevC++默认的字体是 Console,直接保留为富文本或网页文件时,其中的中文注释可能出现乱码。此时可以修改DevC++编辑器字体为中文字体,再重复上述步骤,即可解决问题。(工具 -> 编辑器选项 -> 显示 ->字体)

在这里插入图片描述

4.进一步美化

粘贴完之后,可能发觉略显单调。此时可以采取一些进阶操作,来进一步的美化。

4.1 增加底纹

选中代码,对段落增加底纹,推荐 灰色,背景1,深色5%

4.2 增加边框

4.3 增加行号

关于行号,为了使其不影响之后代码的复制。因而可以使用 1行2列 的一个表格,将代码行与代码分开存放。

5. 利用 实现操作自动化

在Word中粘贴代码,绝不会只有1次。这时我们可以使用VBA宏,来自动化一些重复性操作。比如,设置底纹和表格格式、敲打行号等。

Alt + F11可以进入VBA,然后在“Normal -> 模块”,右键选择“插入模块”,然后把我下面的代码复制到“模块1”并保存。(Normal是Word打开时会自动载入的一个模板文件,把宏放在这里,可以保证在任意一个Word文档中都能调用。)

Sub 设置代码表格()
' author: code4101
' 设置代码表格 宏

    ' 背景色为morning的配色方案,RGB为(229,229,229)
    With Selection.Tables(1)
        With .Shading
            .Texture = wdTextureNone
            .ForegroundPatternColor = wdColorAutomatic
            .BackgroundPatternColor = 15066597
        End With

        .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
        .Borders(wdBorderRight).LineStyle = wdLineStyleNone
        .Borders(wdBorderTop).LineStyle = wdLineStyleNone
        .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
        .Borders(wdBorderVertical).LineStyle = wdLineStyleNone
        .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
        .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
        .Borders.Shadow = False
        .AutoFitBehavior (wdAutoFitContent)  '自动调整大小
    End With
    With Options
        .DefaultBorderLineStyle = wdLineStyleSingle
        .DefaultBorderLineWidth = wdLineWidth050pt
        .DefaultBorderColor = wdColorAutomatic
    End With

    ' 段落无首行缩进,行间距为固定值12磅
    With Selection.ParagraphFormat
        .LeftIndent = CentimetersToPoints(0)
        .RightIndent = CentimetersToPoints(0)
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpaceExactly
        .LineSpacing = 12
        .KeepWithNext = False
        .KeepTogether = False
        .PageBreakBefore = False
        .NoLineNumber = False
        .Hyphenation = True
        .FirstLineIndent = CentimetersToPoints(0)
        .OutlineLevel = wdOutlineLevelBodyText
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
        .MirrorIndents = False
        .TextboxTightWrap = wdTightNone
        .AutoAdjustRightIndent = True
        .DisableLineHeightGrid = False
        .FarEastLineBreakControl = True
        .WordWrap = True
        .HangingPunctuation = True
        .HalfWidthPunctuationOnTopOfLine = False
        .AddSpaceBetweenFarEastAndAlpha = True
        .AddSpaceBetweenFarEastAndDigit = True
        .BaseLineAlignment = wdBaselineAlignAuto
    End With

    ' 清除原有的段落底纹
    Selection.ParagraphFormat.Shading.BackgroundPatternColor=wdColorAutomatic

End Sub

Sub 输入连续数字()
' author: code4101
    行数 = InputBox("请输入代码终止行数", "输入行数", "50")
    For i = 1 To 行数 - 1
        Selection.TypeText Text:=i
        Selection.TypeParagraph
    Next
    Selection.TypeText Text:=行数
End Sub

这里找了两个宏,一个是输入连续数字的宏。另一个是对代码表格进行一些处理的宏(可以解决底纹等问题),选中那个一行两列的表格,读者跑跑我的宏就知道效果了。(这两个宏的配置会比较个性化,读者可以根据自己的喜好来开发。)

此处宏代码转自:如何在Word中排出漂亮的代码

6. 最终效果

最终效果图
这是刚完成的一份实验报告,可以看到,相较于无高亮代码,整篇Word的格式还是美观了不少。

*尾声

1. 小感

虽然网上的很多资源不是直接针对DevC++的,但还是从notepad++中借鉴了保留为含格式文本的思想。可见,多查资料,尤其是多查有效的资料,对于学习是一定有帮助的。然而,现在互联网上的博客,质量还是少了点,或者说真正去探索一个源问题的少了点。大多数都是先搜现成答案,搜到则复制到自己博客下做个备忘,搜不到就放那儿,也不去探索了。。个人想法。

2. 致谢

本文写作中,参看了不少博文与资料,以下对主要参看的做一些罗列,排序不分先后:

  1. 如何在Word中排出漂亮的代码
  2. 代码复制到Word格式不变
  3. https://zhidao.baidu.com/question/131849075.html

3. 本文不足

  1. 源代码为Console等字体导出为富文本或网页文本,出现中文乱码的原因还是没想明白。。先暂时将编辑器字体更换为中文字体来解决,还不是很懂里面原因。
  2. 步骤略繁琐了些,对比notepad++可以直接将带格式文本复制进入剪贴板。

4. 声明

本文为原创文章,转载务必注明出处。

  • 19
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值