如何在MS Word中显示代码片段并保留格式和语法高亮?

2689

有没有一种方法可以在Microsoft Word文档中显示代码并保留着色和格式? 最好,该方法也应该不显眼且易于更新。

我尝试将代码作为普通文本包含在内,但效果很差,编辑常规文本时会妨碍。 我还尝试将对象插入文档中,如WordPad文档和文本框,然后将代码放入这些对象中。 代码看起来更好,并且在编辑其余文本时更容易避免。 但是,这些对象只能跨越一页,当需要添加多页代码时,编辑变成了恶梦。

最后,我知道还有更好的编辑器/格式可以轻松处理此问题,但我被困在使用MS Word。


我采用了混合解决方案。将带有RTF格式的内容复制到OpenOffice Writer中,删除背景(如果有的话),然后将代码粘贴到MS Word中。不知何故,我无法在Word中删除背景 :-(无论如何,在PhpStorm、WebStorm和PyCharm中使用“Copy on steroids”插件来完成此操作非常棒! - chjortlund
10
从Office 365开始,我不知道是不是甚至适用于Word 2013或2016。它有一个名为“代码格式”的在线插件。安装该Office插件,然后在您的Word文档中,您只需选择所有代码(甚至多个页面),并从“代码格式”插件中单击转换按��,即可将其转换为带有行号的格式化彩色代码。但我找不到无行号格式化的选项!但还是不错的! - Rahul Saini
除了特定的插件能够专门用于格式化代码之外,最好的解决方案是使用样式或者图片。 样式适用于格式化。我过去常常使用从 Star Office 到 Libre Office 的许多分支,但今天我开始使用 Word,发现只需探索样式配置就可以完成格式化。 只需使用 Notepad++ 导出 RTF,然后使用样式即可。 我所做的一些事情包括添加边框、我喜欢的背景颜色、勾选“同一样式之间不要添加间距”或类似选项(我使用的是法语界面,所以我不知道确切的英文标题),以及其他任何你喜欢的内容。 - 猫IT
另外,Easy Code Formatter不再起作用了。 - westr
https://syntax-highlighter.k26.ch/ 这个网站非常好用! - Nicicalu
显示剩余2条评论
45个回答

2698

以下是我认为最佳的将代码添加到Word中的方法:

  1. 打开“插入”选项卡,选择“文字”部分,点击“对象”按钮(在右侧)
  2. 选择“OpenDocument文本”,这将打开一个嵌入的新Word文档
  3. 将您从Visual Studio / Eclipse复制并粘贴的代码放入此嵌入式Word页面中
  4. 保存并关闭

优点

结果看起来非常漂亮。以下是此方法的优点:

  • 代码保留其原始布局和颜色
  • 代码与文档的其他部分分离,就像是图片或图表一样
  • 拼写错误不会在代码中突出显示(很酷!)

而且只需要几秒钟。


32
太棒了!我已经试过多年来使用样式、表格和其他变通方法,但这一次解决了所有问题。请注意,您还可以添加代码说明的奖励。我为了额外加分添加了一个新的标签类型“Listing” :-) - Nebula
19
不,它并没有。我刚在一台没有安装OpenOffice的机器上使用了它。OpenDocument是指一种文件格式,得到了包括微软办公套件在内的其他软件的支持:http://en.wikipedia.org/wiki/OpenDocument - Jamie F
65
在Mac OS X上的Word 2011中,我找不到那个选项 :( - Matt Gibson
59
针对OSX上的Word 2011,请使用以下步骤进行插入:插入->对象...Microsoft Word文档。 - s_t_e_v_e
15
当代码长度超过一页时,我们该如何显示整个代码?在这种情况下,整个对象会移到新页面,并且只显示该页面中的内容。是否有可能使对象不移动到新页面,同时显示完整的代码? - user3379410
显示剩余31条评论

1220

下载并安装Notepad++,然后执行以下步骤:

  1. 将你的代码粘贴到窗口中;

  2. 从语言菜单中选择编程语言;

  3. 选择要复制的文本;

  4. 右键单击,选择插件命令 -> 带语法高亮复制文本

  5. 将其粘贴到MS Word中,就可以了!

更新于29/06/2013:

Notepad++有一个名为"NppExport"的插件(预装)可让您复制到RTF、HTML和ALL。它支持数十种语言,而前面提到的IDE每种语言只支持一小部分(没有其他插件的情况下)。我使用“复制所有格式到剪贴板”和“以HTML格式粘贴”在MS Word中。

notepad++截图


10
这很成功。我已经有了Notepad++用于其他代码项目,但是从未考虑过使用它。与添加了淡蓝色背景、边框和禁用拼写检查的Word样式相结合,看起来非常好,并且对于许多文件而言相当快速,与涉及文件导出和导入的方法不同。尽管我希望有一种方法可以将其作为字段添加,自动检查原始.java文件的更新,并在Word文件中保留最新的源代码。 - Neil
98
谢谢您提供这个提示。Plugins -> NppExport -> Copy RTF to Clipboard也可以使用。 - Andrew Huey
37
这个方法非常有效。在Word 2007+中添加边框并禁用拼写检查的步骤如下:1)选择您的代码;2)'首页->样式->保存所选内容为新的快速样式'(它是一个下拉按钮);3)将其命名为“Code”或类似名称;4)修改;5)格式->边框(左下角)以添加边框;6)格式->语言[X]不检查拼写或语法。现在,您可以将“Code”格式应用于从NppExport粘贴的文本。 - Blazes
3
这个很好用,无法让Word文档内的Word文档友好地播放。大家这就是正确的方法! - Urda
6
Line Number可以通过配置“格式”->“编号选项”,定义新的编号格式,删除第一个样式中的点来添加。您可以通过按照@Blazes的步骤 OR在样式中选择新样式->管理样式->修改来进入“格式”选项。 - Mzq
显示剩余21条评论

171

在阅读了很多相关答案之后,我找到了自己的解决方案,对我来说这是最适合我的。

结果看起来像这样: the final result

正如您所看到的那样,它与 Stack Overflow 上的语法高亮相同,这非常棒。

复制步骤:

在 Stack Overflow 上:

  1. 转到 提问 页面(最好使用 Chrome
  2. 粘贴代码并添加语言标签(例如 Java)以获取语法高亮显示
  3. 从预览中复制代码

在 Word 中:

  1. 插入 > 表格 > 1x1
  2. 粘贴代码(您可能需要使用编辑菜单中的“特殊粘贴...>格式化文本(RTF)”以不丢失语法高亮)
  3. 表格设计 > 边框 > 无边框
  4. 选择代码 > 编辑 > 查找 > 替换
    搜索文档 ^p (段落标记) 替换为 ^l (手动换行)
    (这是为了消除某些行之间的空隙)
  5. 再次选择代码 > 评论 > 语言 > 选中“不检查拼写或语法”
  6. 最后使用引用 > 插入标题 > 新标签 > 命名为“列表”或其他名称添加标题

感谢这位用户提供的样例代码。


2
要添加行号,您可以在左侧插入一列,并将所有行号包含在一个单元格中。 - Matthias A. Eckhart
2
这是我最喜欢的答案,因为它允许阅读文档的人复制/粘贴代码。 - Adam Johns
1
在这种方法下,当进行自动字幕处理时,代码会被标记为表格。 - Nuclear03020704
2
在我的macOS big sur Word 16.50上,失去了漂亮的语法高亮。 - spartygw
2
@spartygw请确保您使用“粘贴特殊->格式化文本(RTF)” - Dexter Legaspi
显示剩余2条评论

155

有一个很好用的在线工具:https://www.troye.io/planetb/

只需复制生成的代码并粘贴到您的文字编辑软件中。我已经在 MS WordWPS Writer 上尝试过,效果非常好。 不适用于 Firefox,但在 Chrome 上运行得很好(IE 也可以,但谁想用它)。

其中一个主要优点是,与 Word 的代码格式添加功能不同,它不会破坏您的代码,并且尊重各种语言的语法。 我尝试了其他许多其他答案中提供的选项,但我发现这个是最有效的(快速而真正有效)。

还有另一个在线工具,另一个答案中引用的是 markup.su,但我发现 planetB 的输出更加优美(虽然不太灵活)。

输入:

输入图像描述

输出:

输出图像描述


3
只是为了让其他人知道,上面的输出内容也会以行号、绿色边框和语法高亮的形式出现在Word文档中。 - mc805
2
唯一的缺点是如果你想复制和粘贴代码,你必须手动删除行号。 - Steven Spyrka
2
行号只是普通的 Word 编号列表,因此您可以通过取消编号列表选项(主页>段落>编号=无)在复制/粘贴到 Word 中后轻松删除它们。 - Violet
这个程序按预期工作,但是不能直接在Word文档中复制和重用代码。 - sancelot
6
网站已经无法使用。 - Vicer
显示剩余8条评论

92

我在Visual Studio中编写代码,然后将其复制粘贴到Word中。这样可以保留代码的颜色。


9
远非百分之百忠实。由于某种原因,复制过程似乎会删除大量格式。 - Frank Krueger
3
顺便提一下,这在 Eclipse 和 OpenOffice Writer 中运行得非常好(我不知道有没有 Eclipse/Word 或者 VisualStudio/Writer)。 - Joachim Sauer
1
我想知道这是否取决于您使用制表符还是让Visual Studio将制表符转换为空格。我没有注意到使用空格会有任何问题。 - devuxer
1
使用空格似乎可以修复任何格式错误。有点麻烦,但确实有效。 - shmeeps
3
可以工作,但由于我使用黑色主题...结果不清晰。http://blog.wekeroad.com/wp-content/uploads/2007/10/codefile.gif - EdgarT
显示剩余5条评论

33

我在做这个的时候,广泛使用样式。这对帮助很大。

我所做的是创建一个段落样式(可能叫做"代码示例"或类似的名称),其中使用等宽字体、精心选择的制表符、非常浅的灰色背景、上下各有一条细黑边框(这有助于可见性),并关闭拼写检查。我还确保行距和段落间距设置正确。然后,在其上创建其他字符样式(例如"注释"、"字符串"、"关键字"、"函数名声明"、"变量名声明"),用于覆盖该段落样式;这些样式设置颜色以及文本是否加粗/斜体。接着,只需简单地标记已粘贴的示例作为代码,就能使其看起来非常好,而且这适用于短代码片段。长代码块通常不应该出现在将要打印的纸质文档中。 :-)

这种方式的优点是易于适应任何您正在进行的代码;您不必依赖某个集成开发环境来为您解决问题。(主要问题?打印出来的页面通常不如编辑器窗口宽,因此换行会很糟糕...)


感谢Donal提供这些信息。不过我想问一下,如何使用意图来表示嵌套的代码行呢?如果我为段落使用背景颜色和边框,当我使用缩进时整个块都会移动。 - m.spyratos
8
能分享你的风格/模板就好了。 - Eric Ouellet
做了很久的同样的事情 - 有一个大问题:每当我应用样式时,Word仍然会在单词拼写上划红线。如果我修改样式并选择格式->语言,“不检查拼写和语法”被选中,如果我现在用“确定”关闭格式对话框,那么这些行就会消失 - 但它们总是出现直到我这样做。 - Rhubarb
@Rhubarb,请在您的样式中添加“no check”属性。这个方法可以解决问题,但如果您想要保持颜色,需要付出相当大的努力。 - Charles Kenyon
从Visual Studio/SSMS/Notepad++中复制以获取颜色。然后在Word中创建并保存此样式:字体:(默认)Consolas,9.5磅,不检查拼写或语法,缩进: 左侧:2.54厘米 右侧:2.54厘米 行间距:单倍行距,间隔 前面:16磅 后面:16磅,不要在同一样式的段落之间添加空格,级别9 模式:清除(自定义颜色(RGB(242,242,242))),不调整拉丁文和亚洲文本之间的空格,不调整亚洲文本和数字之间的空格,样式:链接,自动更新,在样式库中显示 基于:正常 - pholcroft

32
我正在使用Easy Code Formatter。这也是一款Office插件,它允许您选择编码风格并拥有一个快速格式化按钮。非常棒。

输入图像描述


这看起来很酷,但是没有办法在我的Word 2016中安装它... Word一直报错。 - Jebik
@Jebik - 如果您正在使用公司帐户,也许您的管理员可能已经阻止了安装?我在2016年上使用它...您的构建号是多少? - Mavi Domates
我安装了版本为16.0.4849.1000的软件。 但是,正如我所说,我安装了另外两个补充程序。因此,我的公司似乎没有阻止安装。只是这个扩展程序我无法安装。说实话,我甚至在商店里找不到它。当我从Word打开商店并寻找应用程序时,这个应用程序不在列表中。 - Jebik
这意味着您的 Word 版本不支持此插件。 - Mavi Domates
如果可以的话,请尝试更新 Word,您的版本似乎有点旧了。 - Mavi Domates
如果有人想禁用拼写检查,则可以参考以下链接:https://superuser.com/a/256258/681618 - Number945

28

也许这听起来过于简单,但你是否尝试将你的代码粘贴进去,并将字体设置为 Courier New?


9
仍无法保留语法高亮。 - Sk8erPeter
@Sk8erPeter:这并不一定是这样的。复制和粘贴完全能够传输颜色信息——当我不想要它时,它总是这样做。这取决于源应用程序和目标应用程序是否都支持相同的指定模式。 - chaos
重要提示:对于使用VS的用户,请注意:很多答案都是可行的。但是,如果您在Visual Studio中没有正确设置选项,则大多数答案将无法正常工作。为了从Visual Studio复制颜色编码,您需要转到工具 > 选项 > 文本编辑器 > 高级 > 确保选择“在复制/剪切时复制富文本”复选框。一旦您这样做了,几乎任何此问题的答案都可以使用。 - Fractal

27

尝试定义一个名为“code”的样式,并使用小的固定宽度字体,这样会看起来更好。

使用CTRL+SPACEBAR重置样式。


21
您将失去语法高亮功能。 - Uri
1
如果我们在谈论 Word 文档,那么语法高亮是被高估了。但它也可以很容易地在一个 VB 脚本中实现,以将所有样式为“Code”的文本着色。 - Frank Krueger
这也是我使用的方法,效果相当不错。虽然我也会关闭拼写/语法检查来适应我的“代码”风格。 - Clayton
2
当然可以保留语法高亮:创建一个没有字体颜色的样式 - user2819245

27
如果您正在使用Sublime Text,您可以将代码从Sublime复制到MS Word并保留语法高亮。安装名为SublimeHighlight的软件包。在Sublime中,使用光标选择要复制的代码,右键单击它,选择“复制为rtf”,然后粘贴到MS Word中。

4
这对我非常有效。Word扩展完全搞乱了我的代码和注释,使其难以阅读。这个方法实际上非常有效。我还要补充一点,你可以简单地打开sublime,按下cmd+shift+P,进入“安装包”并在其中输入“highlight”。它会立即安装。 - vladli
高亮显示正常,但格式混乱了。 - AndroidDev
在编辑菜单中,只需说“复制为HTML”。 - geneorama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接