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


文章目录

  • 0. 前言
  • 1. 高亮复制原理
  • 2. 网上现有方法
  • 3.使用DevC++保留代码高亮
  • 4.进一步美化
    • 4.1 增加底纹
    • 4.2 增加边框
    • 4.3 增加行号
  • 5. 利用 `宏` 实现操作自动化
  • 6. 最终效果
  • *尾声
    • 1. 小感
    • 2. 致谢
    • 3. 本文不足
    • 4. 声明

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 = 15066597End 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 WithWith Options.DefaultBorderLineStyle = wdLineStyleSingle.DefaultBorderLineWidth = wdLineWidth050pt.DefaultBorderColor = wdColorAutomaticEnd 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 = wdBaselineAlignAutoEnd With' 清除原有的段落底纹Selection.ParagraphFormat.Shading.BackgroundPatternColor=wdColorAutomaticEnd SubSub 输入连续数字()
' author: code4101行数 = InputBox("请输入代码终止行数", "输入行数", "50")For i = 1 To 行数 - 1Selection.TypeText Text:=iSelection.TypeParagraphNextSelection.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. 声明

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

DevC++实现代码高亮复制进word相关推荐

  1. excel转word后表格超出页面_excel数据复制后表格变大-从excel中复制进word的表格,自动调整后表格太大,......

    excel的数据复制粘贴后中间空格非常大,好像是因为... 第二张图再复制,到一张新表时右键选择选择性粘贴,转置,横排变成竖排,然后再用筛选,把空白行一次筛选出来删除掉,还原,再转置回去就OK了 EX ...

  2. Eclipse的代码原封不动复制到word,WPS等文档中去

    个人推荐:

  3. 自用在线word代码高亮工具

    自用在线word代码高亮工具 http://word.wd1x.com/

  4. 代码高亮---在线网站

    1. Wd1x|ÔÚwordÖÐÓÅÑÅÕ¹ÏֵĴúÂë|´úÂë¸ßÁÁ|wordÖвåÈë´úÂë|´úÂë¸ñʽ»¯ 代码在线高亮工具 | 将高亮美化的代码一键粘贴到 Word 或 On ...

  5. 将代码保留原格式(高亮)复制到word

    有时需要保持美观将代码保持语法突出或高亮复制粘贴到word上,一些方法如下: 法一:借助网站http://www.planetb.ca/syntax-highlight-word/(代码有编号,整体排 ...

  6. 【代码高亮】解决代码高亮工具复制在word中左边留有空白

    代码高亮网站有: http://word.wd1x.com/ https://highlightcode.com/ 下面那个网站对于python的高亮效果不是很好,上面那个网站可选择编程语言. 以第一 ...

  7. word中代码高亮加行号

    word中代码高亮加行号 在IDE,网页中代码都是精心排版的,美观漂亮.但是我们在自己的文档中记录笔记写书籍的时候,word文档中的代码却不尽人意,所以通过查找资料,发现有大神已经早就解决好了word ...

  8. Unity 之 实现读取代码写进Word文档功能实现 -- 软著脚本生成工具

    Unity 之 实现读取代码写进Word文档功能 前言 一,实现步骤 1.1 逻辑梳理 1.2 用到工具 二,实现读写文件 2.1 读取目录相关 2.2 读写文件 三,编辑器拓展 3.1 编辑器拓展介 ...

  9. Word中使用代码高亮插件

    Word中使用代码高亮插件 1.下载并安装:SyntaxHighlighter4Word.zip 解压,然后双击bin\word2010\Kong.SyntaxHighlighter.Word2010 ...

最新文章

  1. 多迪将企业的Python工程师定位成哪几类?
  2. python使用TSNE为影像组学(radiomics)数据进行降维可视化分析
  3. nodejs之思维导图(浅理解)
  4. 按键中断异步通知实现
  5. asp.net MVC 应用程序的生命周期
  6. php裁剪图片并上传源码,改写jcrop插件+php的图片上传实现与裁剪一体化
  7. 调研了10家公司的技术架构,我总结出了一套大数据平台的套路
  8. html5视频播放事件相关
  9. python redis分布式锁_Python 使用 Redis 实现分布式锁
  10. SpringBoot 手动配置 @Enable 的秘密
  11. .NET领域驱动设计—初尝(原则、工具、过程、框架)
  12. Oracle11G数据库的双机热备份配置--基础篇
  13. [篇二章六]_关于 Windows 11 处于通知状态
  14. Ubuntu系统下的实用软件推荐
  15. 渗透测试之信息收集总结
  16. 【第一章:技术面试通用必备技能】第2节:业务逻辑面试和HR面试
  17. iFixit是被破拆解Galaxy Fold?Galaxy Fold的问题点
  18. 03 - 滤波器组典型相关分析(Filter bank canonical correlation analysis,fbcca)
  19. 【小技巧】解决你的Mac电脑报名教师资格证,为什么一直进不去?
  20. js判断身份证号码是否正确

热门文章

  1. PCL实现点云选取并计算选取点法向量及可视化
  2. WPA3 vs WPA2
  3. 电脑桌面没有wifi图标了导致连接不上网络,解决方法
  4. 数据库原理与技术(专升本)-含答案
  5. 数组旋转(上下对称,主对角线对称)
  6. 机器学习中的K-means算法原理与R语言实例
  7. JavaFX - 制作登录窗口及界面跳转
  8. adb关闭系统自动更新
  9. 推荐一个网站地图生成工具
  10. LintCode 173:链表插入排序