如何最佳地将源代码示例插入Microsoft Word文档?

153

我需要写一些包含源代码示例的文档,其中一部分示例将从IDE中编写,另一部分将在文档中直接编写。我的示例主要是Java语言。

作为一个习惯于使用LaTeX的人,在Word中做这件事情非常痛苦。然而,我必须使用Word。我看到的唯一选择是:

  1. 编写或复制到文档中,然后使用固定字体,安排格式,希望Word不会将大写字母全部转化成小写。不用说,这看起来像垃圾。
  2. 从IDE中复制并粘贴源代码的截图,至少可以保留颜色。但是,如果我更改字体大小,那么我就完蛋了。我也会在跨页时遇到问题。而且让我们承认,Word不能很好地管理文档中的多个图像。
  3. 编写HTML(实际上这不是一个选项)

有没有更好(最好是可移植的)的方法来完成这个任务?是否至少有类似于LaTeX环境的verbatim样式?是否至少有某种漂亮的打印机可以复制并粘贴为RTF?


Russel:不太确定我理解了。 - Uri
2
我认为这可能更适合超级用户。仅仅因为你要插入到文档中的东西恰好是代码,并不意味着这是一个编程问题。 - danben
2
@danben:我猜是这样。我只是想到在日常工作中,大多数程序员最终都会在Word文档中编写代码示例。 - Uri
1
你是绑定于 Word 软件还是 Word 文件格式的? - Ken
显示剩余4条评论
16个回答

233

我非常讨厌并鄙视免费为微软工作,因为他们投入了数十亿美元后仍然没有适当的指南与屏幕截图放在他们该死的网站上。

无论如何,以下是一个快速指南,使用Word 2010、Notepad++进行语法颜色编码以及可加标题的文本框:

  1. 选择插入/文本框/简单文本框
    01word
  2. 插入默认文本框
    02word
  3. 切换到NPP,选择语言进行代码的语法颜色编码,进入“插件/NPPExport/复制RTF到剪贴板”
    03npp
  4. 回到Word,粘贴到文本框中——它可能太小了…
    04word
  5. ...因此您可能需要更改它的大小
    05word
  6. 选择文本框,右键单击它,然后选择“插入标题”…
    06word
  • 在“标题”菜单中,如果您还没有标签,请点击“新建标签”,将新标签设置为“Code”,然后点击“确定”...
    07word
  • ... 然后在“标题”对话框中,切换标签到“Code”,并点击“确定”
    08word
  • 最后,在新创建的标题框中输入您的标题
    09word

  • 当您交叉引用标题时,它会插入整个代码本身,如何解决这个问题? - Furkan Gözükara
    1
    在Word 2013中,文本代码会被粘贴为纯文本,无法保留Notepad++的格式。 - Jose Nobile
    2
    @JoseNobile 你需要在Notepad++中使用NppExport插件。 - NeilenMarais
    2
    它还可以与Android Studio、Visual Studio和Eclipse一起使用。 - Teocci
    这种技术的缺点是:您需要为每个添加的框架定位并检查对齐方式。最好使用样式,其中包括文档布局中的精确规律性。我无法在评论中添加图片,但它看起来就像IT书籍中的样子。您的方法的好处是,与使用不具体对象的样式不同,您似乎可以轻松地添加标题,但我敢打赌,您也可以通过创建单独的样式来半自动地控制这些事情。 - 猫IT
    显示剩余2条评论

    39
    我最近看到了这篇文章,发现了一些有用的提示。然而,我最终采用了完全不同的方法来满足我的需求。我分享了这种方法以及我选择这种方法的原因。文章比我想象中的要长,但我相信截图总是有帮助的。希望这个答案对某个人有用。
    我的要求如下:
    1. 将代码片段添加到Word文档中,使用语法突出显示,以便更容易地区分代码和其他文本。
    2. 代码片段应与其他文本内联。
    3. 代码片段应平稳地跨页,无需额外努力。
    4. 代码片段应具有漂亮的边框。
    5. 代码片段应禁用拼写检查。
    我的方法如下:
    1. 使用外部工具实现上述所述的语法高亮要求。可以使用如上所述的记事本加加。但是,我使用此处提供的工具 - https://syntax-highlighter.k26.ch/。这使我可以使用行号,以及非常好的语法高亮(请在此步骤中使用Google Chrome,因为如几个用户评论所指出的那样,在使用Mozilla Firefox时不会复制语法高亮)。实现语法高亮的步骤如下:
    • 在Chrome中打开上面提供的网站,并复制文本区域中的代码片段。我将使用一个示例XML来演示此操作(XML样本来自此处 - http://www.service-architecture.com/articles/object-oriented-databases/xml_file_for_complex_data.html)。

    • 从下拉菜单中选择语言。

    • 点击“显示高亮”按钮。它将打开一个新标签页,其中包含语法突出显示的代码片段,在这种情况下是我们选择的XML示例。请参见下面的图像示例。 Image shows a sample xml being pasted in the textarea, language selected as XML and the button.

    • 要关闭行号,请在Chrome中检查页面。然后,在样式下,取消选择“.dp-highlighter ol”中的“margin”属性,如下图所示。如果要保留行号,请执行下一步。

    • 选择语法突出显示的代码,然后单击复制。现在,您的代码已准备好粘贴到Microsoft Word中。 Result of syntax-highlighted XML 感谢这篇博客提供了这些信息 - http://idratherbewriting.com/2013/04/04/adding-syntax-highlighting-to-code-examples-online-and-in-microsoft-word/。 2. 要实现上述第2、3和4条要求,请在Microsoft Word中使用表格插入代码片段。步骤如下:

    • 插入一个单列表。

    • 将步骤1中复制的文本粘贴到表格列中。我已保留行号,以显示这与Microsoft Word的良好兼容性。

    • 按照您的喜好应用边框。我使用了1pt的大小。生成的Microsoft Word片段将显示为下面的屏幕截图所示。请注意,它很好地跨越页面 - 不需要额外的管理工作,如果插入“OpenDocument Text”对象或使用“Simple TextBox”,则会面临这种情况。 Syntax-highlighted code snippet pasted in Microsoft Word Table

      1. 要实现第5个要求,请按照以下步骤操作:
    • 选择整个表格或文本。

    • 转到“审阅”选项卡。在“语言”下,选择“校对语言”。将呈现一个新的弹出窗口。

    • 选择“不检查拼写或语法”。然后,单击“确定”。 Disable spell-check

    • 生成的文本已禁用拼写检查。最终结果如下图所示,满足所有要求。 Final Result - meets all the 5 requirements.

    请提供反馈或改进意见,如果您在使用此方法时遇到任何问题。

    3
    谢谢!看起来很好。 我不得不使用Google Chrome,因为Mozilla Firefox没有复制语法突出显示。 - loveMeansNothing
    谢谢您的帖子,也许可以像@loveMeansNothing在第一条评论中所说的那样对Web浏览器进行一些编辑。非常感谢您的评论,那是一个重要的评论,我认为应该被编辑到主文本中 :) - Capt.Krusty
    1
    @Capt.Krusty - 在第1点,项目符号1和5中,我已经提到要使用Chrome。但是,我会像你和loveMeansNothing建议的那样添加“Google Chrome”。 - abhishek
    请使用以下替代链接:https://ndzri.blogspot.com/2016/09/syntax-highlight-code-in-word-documents.html。该链接提供了在Word文档中进行语法高亮的方法。 - z2z
    https://syntax-highlighter.k26.ch/ 同样也可以作为替代。 - Nicicalu
    显示剩余7条评论

    23

    你需要在 Word 文档中定义一个 样式 并将其用于源代码。我通常会创建一个名为 "Code" 的样式,该样式使用等宽字体、小号字号、固定大小制表符、单倍行距、没有段前/后间距等设置。只需要定义一次这个样式,然后重复使用即可。将源代码粘贴到文档中并将 "Code" 样式应用于它即可。

    请注意,某些编辑器(如 Mac 上的 Xcode)在应用程序之间复制/粘贴时会添加 RTF 格式和纯文本到剪贴板 - Word 可以识别 RTF 并且会保留格式、语法着色等内容。

    Xcode 中的源代码:

    enter image description here

    复制并粘贴到 Word 中:

    enter image description here

    (注意:在 Word 的 "Code" 样式中禁用拼写检查是个好主意。)


    然而,这并不会自动为关键字、数字、字符串等添加样式。 - Bart
    @Bart:一般来说不行,但是对于那些使用Xcode(用于Mac OS X、iOS等开发)的人来说,剪贴板包含所有语法着色等RTF格式,而Word可以接受这种格式。可能还有其他编辑器也具有这个有用的功能,但我不知道。 - Paul R
    RTF可以使用,是的,我以前也用过Notepad++转到Word。 但是,如果有一种方法可以添加_真正的_代码样式,即自动进行语法突出显示的样式,那就非常好了。很遗憾似乎不存在这样的东西。当然,您可以安装一些插件来按需进行突出显示,但我还没有找到一种可以轻松重新设计所有代码块并具有不同风格的插件。 - Bart
    我不认为这个支持字幕,对吧? - Oliver
    @Schollii:我认为在Word中只能将标题应用于“对象”。我猜你可以把代码放在一个1x1的表格中,这样它就成为了一个对象? - Paul R
    哦,是的,我没有注意到那个。 - Paul R

    11

    这有点取决于IDE。例如,Visual Studio和Eclipse都可以让您将内容复制为RTF格式,并粘贴到Word中,同时保留所有的格式。

    Notepad++有一个名为"NppExport"的插件(预先安装),它允许您复制为RTF格式。虽然我不太喜欢Notepad++的语法高亮(但它绝对可以接受),但它支持数十种语言,而前面提到的IDE则每个仅支持少数语言(没有其他插件的情况下)。


    1
    我在这方面使用VS和Eclipse都非常顺利 - 使用IDE的编辑器进行语法着色(和任何我喜欢的格式),然后直接将其剪切粘贴到Word中。通常情况下,我会将代码段中的字体设置为等宽字体(因为它并不总是像我想的那样呈现)。 - heckj

    9

    请使用http://hilite.me/

    hilite.me可以将您的代码片段转换为漂亮的HTML格式,轻松嵌入博客文章、电子邮件和网站中。

    操作步骤: 只需将源代码复制到左窗格,选择语言和颜色方案,然后单击“高亮显示!”按钮。现在,可以将右窗格中的HTML粘贴到您的博客或电子邮件中,无需外部CSS或Javascript文件。

    对于Microsoft Word文档:请从预览部分复制内容,并粘贴到您的Microsoft Word文档中。

    3个分区:源代码,HTML和预览


    6
    这些答案与自 Office 2013 以来产品提供的 Web 加载项解决方案相比,显得过时且相当繁琐。
    我正在使用Easy Code Formatter,它允许您在原地对文本进行编码。 它还提供了行号选项,高亮显示,不同的样式,并且这些样式在此处开源:https://github.com/armhil/easy-code-formatter-styles,因此您可以自己扩展样式。 要安装,请打开 Microsoft Word,转到插入选项卡/单击“获取加载项”,然后搜索“Easy Code Formatter”。

    enter image description here enter image description here enter image description here


    有趣的插件,但有两个缺点: 1)从截图中可以看出,它不能禁用拼写检查器。 2)当我尝试下载它时,它要求我与开发者共享我的个人详细信息。不可能发生! - Dave C

    3

    以下内容与此答案有关:https://dev59.com/XHRC5IYBdhLWcg3wK92V#2653406

    创建一个对象解决了我所有的问题。

    插入 > 对象 > Opendocument 文本

    这将打开一个文档窗口,粘贴您的文本,按您想要的格式进行格式化,然后关闭它。

    结果是一个图形。右键单击该对象,选择“添加标题”。

    现在可以创建交叉引用、创建图表。


    当您交叉引用标题时,它会插入整个代码,如何解决这个问题? - Furkan Gözükara

    3
    如果您仍在寻找一种简单的方法来添加代码片段,可以轻松地进入 [插入] > [对象] > [Opendocument 文本] > 粘贴您的代码 > 保存并关闭。您还可以将其放入宏中,并将其添加到您的快速访问栏中。
    注意:
    - 这只能容纳一个页面的代码。 - 您的代码不会自动更正。 - 您只能通过双击与之交互。

    链接:https://www.howtogeek.com/810091/microsoft-word-code-block/ - user3613932

    2

    如果您想要简单的代码格式化,有一种简单的方法。

    1. 打开word> 插入选项卡> 点击“获取插件”
    2. 搜索“内容混合器” 3.点击“添加”

    然后内容混合器会自动打开,您可以将代码复制粘贴到其中,然后点击“插入”将其插入到word文档中。


    2

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