【问题标题】:How do you display code snippets in MS Word preserving format and syntax highlighting?如何以 MS Word 保留格式和语法高亮显示代码片段?
【发布时间】:2018-09-08 22:57:13
【问题描述】:

有人知道在 Microsoft Word 文档中显示代码并保留颜色和格式的方法吗?优选地,该方法也将不引人注目且易于更新。

我尝试将代码包含为常规文本,这看起来很糟糕,并且在编辑常规文本时会妨碍您。我还尝试在文档中插入对象、写字板文档和文本框,然后将代码放入这些对象中。代码看起来好多了,并且在编辑其余文本时更容易避免。但是,这些对象只能跨越一页,当需要添加几页代码时,编辑会变成一场噩梦。

最后,我知道有更好的编辑器/格式可以毫无问题地处理这个问题,但我一直在使用 MS word。

【问题讨论】:

  • 我采用了混合解决方案。使用 RTF 格式复制,粘贴到 OpenOffice Writer,删除背景(如果有的话),然后将代码粘贴到 MS Word 中。出于某种原因,我无法删除 Word 中的背景 :-( 无论如何,在 PhpStorm、WebStorm、PyCharm 中执行此操作的 "Copy on steroids" 插件非常棒!
  • 从 Office 365 开始,我什至不知道 Word 2013 或 2016。它具有称为“代码格式”的在线插件。安装该 Office 插件,在您的 word 文档中,您只需选择所有代码(甚至多页),然后单击代码格式插件中的转换按钮,它将其转换为带有行号的格式化颜色代码。我找不到没有行号的格式化选项!!!但是,还不错!!
  • 在任何专用于格式化代码的特定插件之外,最好的解决方案是使用样式或图像。样式用于格式化。我曾经使用过从 Star Office 到 Libre Office 的许多分支,但我刚刚进入 Word,我发现如何通过浏览样式配置来做到这一点。只需使用 Notepad++ 导出 RTF,然后使用样式。我做的一些事情是添加边框,我喜欢的背景颜色,检查“不要在相同样式之间添加间距”或类似的(我有法语 GUI,所以我不知道确切的英文标题)和任何你喜欢。
  • 代码格式不可用 - 但这里的 Easy Code Formatter 工作得很好:appsource.microsoft.com/en-us/product/office/…
  • 请小心使用在线代码高亮工具,一旦您提交代码,您永远不知道您的代码会发生什么。工具提供者可能会要求你的代码或任何东西。不过只是一个警告。

标签: ms-word code-formatting


【解决方案1】:

对我来说,这是在 word 中添加代码的最佳方式:

  1. 转到Insert 选项卡,Text 部分,单击Object 按钮(在右侧)
  2. 选择OpenDocument Text会打开一个新的嵌入word文档
  3. 从 Visual Studio / Eclipse 复制并粘贴您的代码到这个嵌入的 word 页面中
  4. 保存并关闭

优势

结果看起来非常好。以下是这种方法的优点:

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

而且只需要几秒钟。

【讨论】:

  • 太棒了!多年来,我一直在摆弄样式、表格和其他解决方法。这一口气解决了所有问题。请注意,您还可以获得为代码添加标题的好处。我为布朗尼点添加了一个新的标签类型“列表”:-)
  • 请注意,这需要在您的机器上安装 open/libre office。
  • @BetaRide 不,它没有。我只是在没有安装 OpenOffice 的机器上的文档上使用了它。 OpenDocument 指的是一种得到 MS Office 等支持的文件格式:en.wikipedia.org/wiki/OpenDocument
  • 在 OSX 上的 Word 2011 上看不到该选项 :(
  • 对于 OSX 上的 Word 2011 使用:插入 -> 对象...Microsoft Word 文档
【解决方案2】:

下载并安装Notepad++ 并执行以下操作:

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

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

  3. 选择要复制的文本;

  4. 右键单击并选择插件命令 -> 复制文本并突出显示语法; p>

  5. 将其粘贴到 MS Word 中,一切顺利!

2013 年 6 月 29 日更新:

Notepad++ 有一个名为“NppExport”的插件(预先安装),允许您复制到 RTF、HTML 和 ALL。它允许数十种语言,而上述 IDE 仅限于少数几种(没有其他插件)。

我使用将所有格式复制到剪贴板并在 MS Word 中“粘贴为 HTML”。

【讨论】:

  • 这很好用。我已经有 Notepad++ 用于其他代码项目,但从未想过使用它。结合添加了淡蓝色背景、边框和禁用拼写检查的 Word 样式,它看起来相当不错,并且对于许多文件来说相当快,这与涉及文件导出和导入的方法相反。虽然我希望有一种方法可以将其添加为一个字段,该字段会自动检查原始 .java 文件的更新,并在 Word 文件中保留最新的源代码。
  • 感谢您的提示。 Plugins -> NppExport -> Copy RTF to Clipboard 也可以。
  • 这很好用。在 Word 2007+ 中,添加边框并禁用拼写检查: 1) 选择您的代码; 2) 'Home->Styles->Save selection as new Quick Style'(它是一个下拉按钮); 3) 将其命名为“代码”或类似名称; 4) 修改; 5)Format->Border(左下)添加边框; 6) Format->Language [X] 不检查拼写或语法。现在,您可以对从 NppExport 粘贴的文本应用相同格式的“代码”。
  • 这个很好用,不能让Word文档里面的Word文档播放好。伙计们,这是要走的路!
  • @BennyNeugebauer : 可以通过配置格式->编号选项添加行号,定义新的数字格式,删除第一个样式中的点。您可以按照@ Blazes 的步骤或在样式中选择新样式->管理样式->修改来进入格式选项
【解决方案3】:

代码格式 现在可以在 Office 365 的 Office 插件中使用插件! 只需选择代码并单击转换,它将代码文本转换为带行号的格式化颜色代码!!!

小欢喜!

此处提供代码格式:https://appsource.microsoft.com/en-us/product/office/WA104379501?tab=Overview

【讨论】:

  • 唯一的帖子我看到答案是在单词中添加。最简单的解决方案,这应该是 2017 年公认的答案!
  • @schauhan 从来没有打算删除拼写错误/警告。这个插件的目的是用关键字高亮和缩进格式化代码。
  • 不再可用
  • 在插件列表中找到了Easy Code Formatter,效果很好。
  • 另外,一个名为 Easy Syntax Highlighter 的单词插件提供特定于语言的突出显示,每种语言有多个主题和自动语言检测。
【解决方案4】:

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

结果如下所示:

如您所见,它与 Stack Overflow 上的语法突出显示相同,非常棒。

重现步骤:

堆栈溢出

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

在 Word 中

  1. 插入 > 表格 > 1x1
  2. 粘贴代码
  3. 表格设计 > 边框 > 无边框
  4. 选择代码 > 编辑 > 查找 > 替换
    搜索文档 ^p(段落标记) 替换为 ^l(手动换行)
    (这是消除某些行之间的间隙所必需的)
  5. 再次选择代码 > 审核 > 语言 > 选中“不检查拼写或语法”
  6. 最后使用 References > Insert Caption > New Label > 将其命名为“Listing”或...添加标题

示例代码感谢this guy

【讨论】:

  • 要添加行号,您可以在左侧插入一列并将所有行号包含在一个单元格中。
  • 这是我最喜欢的答案,因为它允许阅读文档的人复制/粘贴代码。
  • 这种方式下,代码在做自动字幕的时候会被标注为表格。
  • 在 macOS big sur Word 16.50 上丢失了漂亮的语法突出显示
【解决方案5】:

有一个不错的在线工具:http://www.planetb.ca/syntax-highlight-word

↑此应用自 2020 年起不再可用,这是一个新的分叉工具:https://www.troye.io/planetb/

只需复制生成的代码并将其粘贴到您的文字编辑软件中即可。到目前为止,我已经在 MS WordWPS Writer 上尝试过,效果非常好。 不能在 Firefox 上运行良好,但在 Chrome 上运行良好(还有 IE,但谁想使用它)。

其中一个主要好处是,与 Word 的代码格式插件不同,它不会弄乱您的代码,并尊重各种语言的语法。 我尝试了其他答案中提供的许多其他选项,但我发现这个是最有效的(快速且真正有效)。

另一个答案 (markup.su) 中还引用了另一个 onlinz 工具,但我发现planetB 的输出更优雅(尽管通用性较差)。

输入:

输出:

【讨论】:

  • 只是为了让其他人知道,上面的输出也是它在 Word 文档中的显示方式,行号和绿色边框以及语法突出显示
  • 唯一的缺点是如果你想复制和粘贴代码,你必须手动删除行号。
  • 行号只是一个普通的 Word 编号列表,因此您可以通过取消选择编号列表选项(Home>Paragraph>Numbering = None)轻松地将它们复制/粘贴到 Word 中。
  • 这是唯一适合我的解决方案 - 它绝对是最干净的选项!
  • "此应用程序当前不可用" :(
【解决方案6】:

我在 Visual Studio 中键入我的代码,然后复制粘贴到 word 中。它保留了颜色。

【讨论】:

  • 但远非 100% 保真度。由于某种原因,复制过程似乎删除了很多格式。
  • 顺便说一句,这与 Eclipse 和 OpenOffice Writer 配合得很好(虽然我不知道 Eclipse/Word 或 VisualStudio/Writer)。
  • 我想知道这是否取决于您是使用制表符还是让 Visual Studio 将制表符转换为空格。我没有注意到空格有任何问题。
  • 使用空格似乎可以修复任何格式错误。有点痛苦,但确实有效。
  • 工作,但因为我有一个黑色的主题......结果难以辨认。 blog.wekeroad.com/wp-content/uploads/2007/10/codefile.gif
【解决方案7】:

完成此操作后,我已广泛使用样式。很有帮助。

我所做的是创建一个段落样式(可能称为“Code Example”或类似的东西),它使用等宽字体、精心挑选的标签、非常浅灰色的背景、上下细的黑色边框(这有助于能见度很多)并关闭拼写。我还确保行间和段落间的间距设置正确。然后我在顶部创建额外的字符样式(例如,“Comment”、“String”、“Keyword”、“Function Name Decl”、“Variable Name Decl”),我将它们叠加在上面;那些设置颜色以及文本是否为粗体/斜体。然后很容易通过并将粘贴的示例标记为代码并让它看起来非常好,这对于简短的 sn-ps 非常有效。很长的代码块通常不应该出现在死树上。 :-)

这样做的一个好处是很容易适应你正在做的任何代码;您不必依赖某些 IDE 来弄清楚发生了什么。 (主要问题?打印的页面通常没有编辑器窗口那么宽,所以换行会很糟糕......)

【讨论】:

  • 感谢 Donal 提供此信息。不过可能会问,我如何使用意图来表示嵌套的代码行?如果我为段落使用背景颜色和边框,当我使用缩进时,整个块都会移动。
  • 很高兴分享您的样式/模板吗?
  • 多年来一直在做同样的事情 - 一个大问题:每当我应用该样式时,Word 仍然会在拼写问题上加上红色下划线。如果我修改样式并选择“格式”->“语言”,则选中“不检查拼写和语法”,如果我现在用“确定”关闭格式对话框,这些行就会消失 - 但它们总是会出现,直到我这样做。跨度>
【解决方案8】:

也许这过于简单,但您是否尝试过粘贴代码并将其上的字体设置为 Courier New?

【讨论】:

  • 它仍然不会保持语法高亮。
  • @Sk8erPeter:不一定是这样。复制和粘贴不仅能够传输颜色信息——它一直都在这样做,而我宁愿不这样做。这取决于源应用程序和目标应用程序是否都支持相同的模式来指定它。
【解决方案9】:

尝试定义一种名为“代码”的样式,并使其使用固定宽度的小字体,这样看起来应该会更好。

使用 CTRL+空格键 重置样式。

【讨论】:

  • 你不会保持语法高亮。
  • 如果我们在这里讨论的是 Word 文档,那么语法突出显示就被高估了。但它也很容易在 VB 脚本中实现,该脚本为所有样式为“代码”的文本着色。
  • 我也是这样做的,结果也很好,不过我也关闭了“代码”样式的拼写/语法检查。
  • 当然你可以保持语法高亮:Create a Style without a font color
【解决方案10】:

如果您使用的是Sublime Text,您可以将代码从Sublime 复制到MS Word,保留语法高亮。

安装名为SublimeHighlight的包。

在 Sublime 中,使用光标选择要复制的代码,右键单击它,选择“复制为 rtf”,然后粘贴到 MS Word 中。

【讨论】:

  • 这对我来说非常有效。字扩展完全搞砸了我的代码和 cmets,使我无法阅读。这实际上工作得很好。我要补充一点,您可以简单地转到 sublime,按 cmd+shift+P,转到 Install package 并在此处键入 highlight。它会立即安装它
  • Higlight 工作正常,但格式变得混乱。
【解决方案11】:

如果你和我一样懒惰或赶时间不想下载额外的软件,你可以使用http://markup.su/highlighter/。它非常直截了当,并支持几个突出主题和许多编程语言。 在我的情况下,我使用的是Visual Studio Code,由于样式中涉及CSS,它不允许使用格式进行复制(据报道here)。

从预览框中复制文本,然后在 Word 中转到插入 -> 文本框,从网站粘贴预览,突出显示所有文本,然后 disable spell checking for that textbox

这就是代码最终的样子。

【讨论】:

  • 有没有办法改变字体大小?我的代码非常大,我想把它放在 word 的几页中。更改 word 中的字体大小无济于事
  • 可能是您在更改字体大小之前没有突出显示文本框内的文本?
  • @dark32 如果我正确理解您的问题,您需要更改行距:support.office.com/en-us/article/…
  • 这在一周前运行良好,但是,截至 2017 年 12 月 78 日,网站 markup.su/highlighter 不再运行。希望它会尽快恢复。
  • 链接又死了......请注意。
【解决方案12】:

我正在使用Easy Code Formatter。它也是一个 Office 加载项。它允许您选择编码风格 / 并有一个快速格式化按钮。很整洁。

【讨论】:

  • 这看起来很酷,但无法将其安装在我的 word 2016 中...一直以来的 word 错误
  • @Jebik - 如果您使用的是公司帐户,也许您的管理员可能阻止了安装?我在 2016 年使用它...你的内部版本号是多少?
  • 我的版本是 16.0.4849.1000。但正如我所说,我已经安装了 2 个其他补充。所以我的公司似乎没有阻止安装。这是我无法安装的扩展程序。老实说,我什至没有在商店里找到它。从我打开商店并寻找应用程序时的单词来看,这个不在列表中
  • 这意味着您的 Word 处于不支持此插件的构建版本。
  • 如果可以的话尝试更新word,你的版本好像有点老了。
【解决方案13】:

我发现最好的方法是使用表格。

创建一个 1x1 的表格。然后复制代码并粘贴。
如果您使用的是桌面应用程序,那么它将继承代码编辑器主题颜色并相应地粘贴它,否则您可以将表格样式更改为任何颜色。

【讨论】:

    【解决方案14】:

    这有点间接,但效果很好。获取 LiveWriter 并安装此插件:

    http://lvildosola.blogspot.com/2007/02/code-snippet-plugin-for-windows-live.html

    使用插件将您的代码插入博客文章中。全选并复制到 Word。

    它看起来很棒,并且可以包含行号。它还可以很好地跨越页面。

    HTH

    科尔比非洲

    【讨论】:

    • 需要 Windows Live 或 Wordpress 或其他 10 个博客平台中的某个帐户。
    【解决方案15】:

    Vim 有一个漂亮的功能,可以将代码转换为 HTML 格式,保留语法高亮、字体样式、背景颜色甚至行号。运行:TOhtml,vim 会创建一个包含 html 标记的新缓冲区。

    接下来,在网络浏览器中打开这个 html 文件,然后复制/粘贴它呈现给 Word 的任何内容。 Vim Tips wiki 有more information

    【讨论】:

      【解决方案16】:

      根据我的经验,从 eclipse 和 Notepad++ 复制粘贴直接使用 word。

      由于某种原因,我遇到了一个没有保留颜色的文件的问题。我创建了一个新的 .java 文件,将代码复制粘贴到该文件中,然后复制粘贴到 word 中,它就可以工作了……

      正如其他人所说,创建一个新的段落样式。我所做的是使用像 courier new 这样的单行距字体,字体接近 8px 的小尺寸,段落之间没有空格的单行距,使制表位变小(0.5cm,1cm,..,5cm),放置一个简单的线条边框围绕文本并禁用语法检查。这样我就实现了 eclipse 的线路制动,所以我不必再做任何事情了。

      希望我能帮上忙;)

      【讨论】:

        【解决方案17】:

        这是我遵循的最简单的方法。考虑我想粘贴 java 代码。

        1. 我在这里粘贴代码,以便空格、制表符和花括号的格式整齐http://www.tutorialspoint.com/online_java_formatter.htm

        2. 然后我将步骤 1 中得到的代码粘贴到此处,以便将颜色、字体添加到代码 http://markup.su/highlighter/

        3. 然后将步骤2中得到的预览代码粘贴到MS word中。最后会是这个样子

        【讨论】:

          【解决方案18】:

          您可以使用 VS 代码来保持代码格式和突出显示。直接从VS.复制粘贴代码

          【讨论】:

          • 我为这个问题找到了最聪明的答案。谢谢!
          【解决方案19】:

          为 2019 年试图解决此问题的人们提供的答案:

          这个问题的大多数答案现在已经过时了。我希望有一种方法可以不时地重新检查旧的问题和答案!

          我为这个问题找到的适用于 Office 365 及其相关程序的方法可以在 here 找到。

          【讨论】:

          【解决方案20】:

          我使用的是 Word 2010,我喜欢从 github gist 复制和粘贴。请记住保持源格式!

          然后我将字体更改为 DejaVu Sans Mono。

          您可以选择带或不带编号的复制。

          【讨论】:

            【解决方案21】:

            使用 Windows 自带的等宽字体,例如 Lucida Console,。如果您从 Visual Studio 或支持语法高亮的工具中剪切/粘贴,通常可以保留语法高亮的配色方案。

            【讨论】:

              【解决方案22】:

              复制到 Eclipse 并粘贴到 Word 中也是另一种选择。

              【讨论】:

                【解决方案23】:

                如果您使用的是 Intellij IDEA,只需从 IDE 中复制代码并将其粘贴到 word 文档中即可。

                【讨论】:

                  【解决方案24】:

                  您可以在任何办公程序上简单地使用此插件。

                  转到插入标签,然后获取插件,然后搜索Easy Syntax Highlighter

                  支持

                  • 185 种语言和 89 个主题。

                  • 自动语言检测。

                  • 多语言代码高亮。

                  【讨论】:

                  • 这也适用于在线 MS Word。非常感谢。
                  • 不客气。
                  【解决方案25】:

                  如果您不想安装繁重的 IDE,也可以使用 SciTE 粘贴代码,然后为您正在制作的所有代码下载插件。只需从语言菜单中选择您的语言,输入您的代码,突出显示代码,选择编辑->复制为 RTF,使用格式粘贴到 Word 中(默认粘贴)。

                  SciTE 支持以下语言,但可能还支持其他语言:Abaqus*、Ada、ANS.1 MIB 定义文件*、APDL、汇编程序(NASM、MASM)、Asymptote*、AutoIt*、Avenue*、批处理文件(MS -DOS)、Baan*、Bash*、BlitzBasic*、Bullant*、C/C++/C#、Clarion、cmake*、conf (Apache)、CSound、CSS* , D, diff files*, E-Script*, Eiffel*, Erlang*, Flagship (Clipper / XBase), Flash (ActionScript), Fortran*, Forth*, GAP*, Gettext, Haskell, HTML*、带有嵌入式 JavaScript、VBScript、PHP 和 ASP* 的 HTML、Gui4Cli*、IDL - MSIDL 和 XPIDL*、INI、属性* 和类似的、InnoSetup*、Java*、JavaScript*、LISP*、LOT*、Lout* , Lua*, Make, Matlab*, Metapost*, MMIXAL, MSSQL, nnCron, NSIS*, Objective Caml*, Opal, Octave*, Pascal/Delphi*, Perl, 除了一些模棱两可的情况*, PL/M *、Progress*、PostScript*、POV-Ray*、PowerBasic*、PowerShell*、PureBasic*、Python*、R*、Rebol*、Ruby*、Scheme*、scriptol*、Specman E*、Spice、Smalltalk、SQL 和PLSQL、TADS3*、TeX 和 LaTeX, Tcl/Tk*、VB 和 VBScript*、Verilog*、VHDL*、XML*、YAML*。

                  【讨论】:

                  • 粘贴 PHP 代码时不起作用。只有开始和结束括号突出显示:(虽然适用于 Java。
                  【解决方案26】:

                  我也在寻找它并最终为我的代码显示创建了一些东西。 这是一个好方法:

                  • 创建一个矩形并将您的文本放入其中。
                  • 将字体更改为 Consolas,大小约为 10。
                  • 将文本字体更改为接近黑色的灰色(灰色 25%,深色 75%)
                  • 如果需要,使用较深的颜色突出显示您的文本,然后选择一种作为轮廓。

                  【讨论】:

                    【解决方案27】:

                    一个有多种语言的着色网站。 http://hilite.me/

                    您可以自己托管一个,因为它是开源的。代码在github

                    【讨论】:

                    • hilite.me 也适用于 Google 文档!
                    【解决方案28】:

                    确实没有一种干净的方法可以做到这一点,根据您的确切样式设置,它仍然可能看起来很可疑。

                    您可以尝试做的是首先运行代码到 HTML 的转换(有很多程序可以做到这一点),然后尝试用 word 打开 HTML 文件,这可能会为您提供格式化的和漂亮的代码,然后将其复制并粘贴到您的文档中。

                    【讨论】:

                      【解决方案29】:

                      我使用表格创建了一种更简单的方法,因为它们更容易创建、管理和更一致(可以将表格的样式保存在文档本身中),但我找不到更好的代码着色方案,抱歉。

                      步骤:

                      1. 创建一个 3x3 表。

                      2. 选择表格,使其边框不可见(“无边框”选项),然后激活“查看网格线”选项。

                      3. 调整单元格的间距和列的宽度以获得所需的纵横比。 (您必须进入“表格属性”进行微调)。

                      4. 为您的代码 sn-ps 创建一个名为“代码”的“段落样式”(https://stackoverflow.com/a/25092977/8533804 中所述)

                      5. 创建另一个名为“Code_numberline”的“段落样式”,它将基于先前创建的样式,但是您将添加一个编号line 在其定义中(这将自动进行行编号)。

                      6. 将“Code_numberline”应用于第一列,将“Code”应用于第 3 列。

                      7. 在中间列添加填充。

                      8. 保存该表格样式并享受吧!

                      【讨论】:

                      • 如果您复制并粘贴代码,您必须手动将行拆分为行。
                      • 上次用这个方法,没必要。可能你需要选择不同的行。
                      【解决方案30】:

                      文档中代码的最佳表示是固定宽度的字体(它应该出现在 IDE 中),带有暗淡的阴影背景或浅色边框,以将块与其他文本区分开来。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2021-01-31
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2011-02-03
                        • 1970-01-01
                        相关资源
                        最近更新 更多