将源代码示例插入 Microsoft Word 文档的最佳方法是啥?
Posted
技术标签:
【中文标题】将源代码示例插入 Microsoft Word 文档的最佳方法是啥?【英文标题】:What is the best way to insert source code examples into a Microsoft Word document?将源代码示例插入 Microsoft Word 文档的最佳方法是什么? 【发布时间】:2011-03-16 04:35:08 【问题描述】:我必须编写一些包含源代码示例的文档。一些示例将从 IDE 编写,而其他示例将在适当位置编写。我的示例主要使用 Java。
作为一个习惯 LaTeX 的人,在 Word 中这样做是非常痛苦的。但是,我必须为此使用 Word。我见过的唯一选择是:
-
写入或复制到文档中,
然后使用固定类型的字体,排列
格式化并希望 Word 没有
大写的东西给你。不用
说,这看起来像垃圾。
复制粘贴源截图
IDE 中的代码。至少我保持
颜色。但是,如果我改变我的字体
大小,我搞砸了。我也被坑了
跨越页面边界。让我们
承认吧,Word不擅长
管理多个图像
文件。
编写 html(不是真正的选项
在这里)
有没有更好的(最好是便携的)方法来做到这一点?是否至少有某种类似于 LaTeX 环境的逐字样式?是否至少有一些漂亮的打印机可以复制并粘贴为 RTF?
【问题讨论】:
Russel:我不明白。 我认为这可能更适合超级用户。仅仅因为您要插入到文档中的东西恰好是代码并不会使这成为一个编程问题。 @danben:我猜。我刚刚发现,大多数程序员在日常工作中最终都会使用 Word 文档中的代码示例。 您是使用 Word-the-program 还是 Word-the-file-format? How do you display code snippets in MS Word preserving format and syntax highlighting? 的可能重复项 【参考方案1】:所以我发现这个问题的大多数答案要么只是半功能性的,要么完全被破坏(例如,使用的网站已关闭)。此解决方案在 Word 中完全独立,可跨多个页面工作,并保持语法突出显示。
步骤如下:
-
暂时将 IDE 的主题设置为浅色,以便文本与文档的其余部分相匹配。
复制所需的代码(HTML 着色信息将随之复制)。
在 Word 中,按 Ctrl+Alt+V 并选择 HTML 格式以粘贴彩色文本。
选择所有文本,然后展开功能区主页选项卡上的样式库。
选择“创建样式”。使用诸如“代码”之类的名称
在图库中右键单击您的新样式并选择“修改”。
在格式部分下,将字体更改为 Consolas 或您选择的等宽字体。还将行距设置为 Condensed(此选项位于文本对齐选项旁边)。
在左下角的格式按钮下,选择“语言”,然后启用“不检查拼写或语法”选项。
如果您希望此样式在以后的文档中可用,请更改为“基于此模板的新文档”单选按钮。
可选:对于行号...
-
返回“修改样式”对话框,再次选择格式按钮并选择“编号”。
选择“定义新的数字格式”选项。
删除数字格式框中数字“1”后面的点。
选择“右”作为数字对齐方式。
点击确定,然后选择新的数字对齐选项。最后,在“修改样式”对话框中点击“确定”。
最后,选择您的代码,并将其设置为代码样式,它应该应用所有必需的格式。
【讨论】:
【参考方案2】:与网络插件解决方案相比,这些答案看起来已经过时且相当乏味;它适用于 Office 2013 以来的产品。
我正在使用Easy Code Formatter,它允许您就地编码文本。它还为您提供行号选项、突出显示、不同的样式,并且样式在此处开源:https://github.com/armhil/easy-code-formatter-styles,因此您可以自己扩展样式。要安装 - 打开 Microsoft Word,转到“插入”选项卡/单击“获取加载项”并搜索“Easy Code Formatter”
【讨论】:
有趣的插件,但它有两个缺点:1)从截图可以看出,它并没有禁用拼写检查器 2)当我尝试下载它时,它要我分享我的与开发商的个人资料。不会发生!【参考方案3】:我最近看到了这篇文章,发现了一些有用的提示。但是,我最终使用了一种完全不同的方法来满足我的需求。我正在分享这种方法以及我选择这种方法的原因。这篇文章比我希望的要长,但我相信截图总是有帮助的。希望答案对某人有用。
我的要求如下:
-
将代码 sn-ps 添加到 word 文档中,语法突出显示以便更容易地查看和区分代码和其他文本。
代码 sn-p 应与其他文本内联。
代码 sn-p 无需任何额外工作即可顺利跨页。
代码 sn-p 应该有一个漂亮的边框。
代码 sn-p 应禁用拼写检查。
我的方法如下:
-
使用外部工具实现上述语法高亮要求 1。
如上所述,可以使用记事本 plus。但是,我使用这里提供的工具 - http://www.planetb.ca/syntax-highlight-word。这给了我使用行号的选项,以及非常好的语法高亮(请在这一步使用 Google Chrome,因为在使用 Mozilla Firefox 时不会复制语法高亮,正如几个用户 cmets 所指出的那样)。下面列出了实现语法高亮的步骤:
用chrome打开上面提供的网站,在文本区复制代码sn-p。我将使用示例 XML 来演示这一点(此处的 XML 示例 - http://www.service-architecture.com/articles/object-oriented-databases/xml_file_for_complex_data.html)。
从下拉菜单中选择语言。
单击“显示突出显示”按钮。它将打开一个新选项卡,其中包含语法突出显示的代码 sn-p,在本例中是我们选择的 XML 示例。例如,请参见下图。
要关闭行号,请在 chrome 中检查页面。然后,在样式下,取消选择“.dp-highlighter ol”中的“margin”属性,如下图所示。如果要保留行号,请转到下一步。
选择语法高亮代码并单击复制。现在您的代码已准备好粘贴到 Microsoft Word 中。
感谢此博客提供此信息 - http://idratherbewriting.com/2013/04/04/adding-syntax-highlighting-to-code-examples-online-and-in-microsoft-word/。
为实现上述要求2、3、4,使用Microsoft word中的table,插入代码sn-p。步骤如下:
插入具有单列的表格。 将步骤 1 中复制的文本粘贴到表格列中。我保留了行号以显示它与 Microsoft Word 的配合程度。 根据需要应用边框。我使用了 1pt 的尺寸。生成的 Microsoft 单词 sn-p 将如下面的屏幕截图所示。请注意它在页面上的破坏程度 - 无需额外的努力来管理它,如果插入“OpenDocument Text”对象或使用“Simple TextBox”,您将面临这种情况。要达到要求 5,请按照以下步骤操作:
选择整个表格或文本。 转到查看选项卡。在语言下,选择“校对语言”。将显示一个新的弹出窗口。 选择“不检查拼写或语法”。然后,单击确定。 生成的文本已禁用拼写检查。最终结果如下图所示,满足所有要求。如果您有任何反馈或改进,或者遇到该方法的任何问题,请提供。
【讨论】:
谢谢!看起来不错……我不得不使用 Google Chrome,因为 Mozilla Firefox 没有复制语法高亮显示。 我认为这是最好的解决方案。另一个提示:如果您不想进行拼写检查但又不是用英文书写,请将代码插入为 Open Document Text 对象。转到插入 - 对象 - 并选择 OpenDocument 文本。将代码插入打开的文档中,然后保存并关闭。代码如上所示,但拼写被完全忽略。唯一的缺点可能是该数字无法正常工作,如果您想将其包含在列表的标题中。没有检查过。 @user3629892 我认为使用 Open Document 不能很好地跨不同页面。 在复制到 word 时是否有可能为行号获得漂亮的边框。 @Capt.Krusty - 在第 1 点、第 1 点和第 5 点中,我已经提到使用 Chrome。但是,我会按照您和 loveMeansNothing 的建议继续添加“Google Chrome”。【参考方案4】:使用这个 - http://hilite.me/
hilite.me 将您的代码 sn-ps 转换为印刷精美的 HTML 格式,可轻松嵌入到博客文章、电子邮件和网站中。
如何: 只需将源代码复制到左侧窗格,选择语言和配色方案,然后单击“突出显示!”。现在可以将右窗格中的 HTML 粘贴到您的博客或电子邮件中,无需外部 CSS 或 javascript 文件。
对于 Microsoft Word 文档:复制预览部分的内容并粘贴到您的 Microsoft Word 文档中。
3 sections : Source Code , HTML and Preview
【讨论】:
【参考方案5】:如果您想要简单的代码格式,有一个简单的方法。
-
打开word>插入选项卡>点击“获取加载项”
搜索“内容混合器”
3.点击“添加”
然后内容混合器添加将自动打开,您可以将代码复制粘贴到那里,然后单击“插入”将其插入到 word doc 中。
【讨论】:
【参考方案6】:我已经尝试了你所有的方法,但它们对我不起作用,事实上我已经使用 MS Word Tables 创建了一个更简单的方法。
优点:
-
更漂亮
更易于管理且更一致
不容易出现问题
无需外部插件或 MS Word 微编码。
简单的用户(比如我自己)更容易处理。
缺点: 尽管有人可以改进我的技巧,但它不会保持代码着色。
步骤:
插入一个 3x3 的表格,在我的例子中,我总是让表格的总宽度等于空闲页面的宽度(最少 3 行来测试表格样式)。
使用不可见边框(“无边框”选项),并激活“查看网格线”选项。它应该有这个方面。 请注意,这些行是供您查看表格的网格的,不会打印出来。
调整单元格的间距和列的宽度以获得您喜欢的外观。 (您必须进入“表格属性”进行微调)。
为您的代码 sn-ps 创建一个名为“代码”的“段落样式”(检查https://***.com/a/25092977/8533804 em> 要了解这个想法,您不必遵循所有这些)
创建另一个名为“Code_numberline”的“段落样式”,它将基于之前创建的样式。
在新创建的“Code_numberline”中添加您喜欢的编号样式(这将自动进行行编号)。
将“Code_numberline”应用于第一列,将“Code”应用于第 3 列。
在中间列添加填充。
保存该表格样式并享受吧!
【讨论】:
很好,直到您说保存该表格样式。 @MartinofHessle,对于扩展文档,您将在许多地方使用代码 sn-ps 填充它,保存此表格样式的选项可以节省时间,此外它还允许您修改表格样式整个文档无忧无虑,就像在我的情况下,我有 IDE 和 IDLE 的样式......另一方面,如果您只使用一个表,那么您可以省略最后一步 我同意这个原因。这是如何对 normal.dot 说它以使其持久化,这将是一个有用的补充。我想通了,但不是很明显。 @MartinofHessle 请原谅我,但我不明白你的最后陈述。你能用更简单的方式再重复一遍吗? 抱歉打错了,应该是如何将其保存到 normal.dot。【参考方案7】:在 Word 中,可以粘贴使用颜色区分 cmets 的代码和使用“粘贴保持源格式”的代码。但是,如果您使用粘贴的代码创建新样式,Word 会自动去除颜色编码文本并将其更改为黑色(或任何自动默认颜色)。由于应用样式是确保符合文档格式要求的最佳方式,因此 Word 对于记录软件程序不是很有用。不幸的是,我不记得 Open Office 更好。 最好的解决方法是使用默认的简单文本框。
【讨论】:
【参考方案8】:如果你还在寻找一种简单的方法来添加代码sn-ps。
您可以轻松转到 [插入] > [对象] > [打开文档文本] > 粘贴代码 > 保存并关闭。
您也可以将其放入宏中并将其添加到您的轻松访问栏。
注释:
这只需要一页代码。 您的代码将不会自动更正。 您只能通过双击与它交互。【讨论】:
【参考方案9】:您可以在 Ms.Word https://store.office.com/syntax-highlighter-WA104315019.aspx?assetid=WA104315019 中使用插件语法高亮。我按照这一步,它的工作
【讨论】:
【参考方案10】:在 Mac 上,我发现这个 vim 解决方案非常棒:
https://github.com/zerowidth/vim-copy-as-rtf
【讨论】:
【参考方案11】:您需要在 Word 文档中定义 样式 并将其用于源代码。我通常有一种称为“代码”的样式,它有一个小点大小的等宽字体、固定大小的制表符、单行间距、没有前后段落间距等。您只需要定义一次这种样式,然后重复使用它。您粘贴源代码并对其应用“代码”样式。
请注意,某些编辑器(例如 Mac 上的 Xcode)在应用程序之间复制/粘贴时会将 RTF 和文本添加到剪贴板 - Word 可识别 RTF 并有助于保留格式、语法着色等。
Xcode 中的源代码:
复制并粘贴到 Word:
(注意:最好在 Word 的“代码”样式中禁用拼写检查。)
【讨论】:
这不会自动为关键字、数字、字符串等添加样式。 @Bart:一般来说,不,但对于那些使用 Xcode(用于 Mac OS X、ios 等开发)的人来说,剪贴板包含带有所有语法着色等的 RTF,Word 接受这一点。可能还有其他编辑器也有这个有用的功能,但我不知道。 RTF 有效,是的,我过去也使用过此功能,也将 Notepad++ 用于 Word。但是,如果有一种方法可以添加 real 代码样式,即自动进行语法高亮显示,那就太好了。很可惜,这样的事情似乎不存在。当然,您可以安装一些可以按需突出显示的附加组件,但我还没有找到一个可以根据需要轻松地用不同的样式重新设置所有代码块的样式。 我不认为这支持字幕吗? @Schollii:我认为标题只能应用于 Word 中的“对象”。我想你可以把代码放在一个 1x1 的表中,然后让它成为一个对象?【参考方案12】:这就是我所做的。
最终结果:
https://***.com/a/25092977/1161594
【讨论】:
【参考方案13】:我绝对讨厌和鄙视为微软免费工作,因为在他们投入了数十亿美元之后,他们仍然没有在他们该死的网站上提供有关此类内容的适当指南以及屏幕截图。
无论如何,这里有一个 Word 2010 中的快速指南,使用 Notepad++ 进行语法着色,以及一个可以添加标题的 TextBox:
-
选择插入/文本框/简单文本框
已插入默认文本框
切换到 NPP,为代码的语法着色选择语言,转到插件 / NPPExport / 将 RTF 复制到剪贴板
切换回 word,然后粘贴到文本框中 - 它可能太小了...
...所以您可能需要更改其大小
选中文本框后,右键单击它,然后选择插入标题...
在“标题”菜单中,如果您还没有,请单击“新建标签”,并将新标签设置为“代码”,单击“确定”...
... 然后在 Caption 对话框中,将标签切换为 Code,然后点击 OK
最后,在新创建的标题框中输入您的标题
【讨论】:
当你交叉引用标题时,它会插入整个代码本身来解决这个问题? Word 2013 中的文本是代码粘贴为纯文本,无法保持 Notepad++ 的格式 @JoseNobile 你需要在 Notepad++ 中使用 NppExport 插件 它也适用于 android Studio、Visual Studio 和 Eclipse。 我最初使用了相同的技术,但后来改为使用 1x1 的表格,因为我发现文本框很难定位。我尝试了“顶部和底部”,所以文本只会在之前和之后,Word会神奇地上下移动框,有时标题会不可见,好痛苦。今天开始使用基于另一个 SO QA 的表格,到目前为止运行良好。我创建了一个新的标题标签类型“列表”。【参考方案14】:您可以为此使用 Open Xml Sdk。如果您有带有颜色和格式的 html 代码。您可以使用 altchunks 将其添加到 word 文档中。 参考这篇文章Add HTML String to OpenXML (*.docx) Document 希望这会有所帮助!
【讨论】:
【参考方案15】:这与这个答案有关:https://***.com/a/2653406/931265 创建一个对象解决了我所有的问题。
插入 > 对象 > 打开文档文本
这将打开一个文档窗口,粘贴您的文本,根据需要设置格式,然后关闭它。
结果是一个数字。右键单击对象,然后选择“添加标题”。
您现在可以进行交叉引用,创建图表。
【讨论】:
当你交叉引用标题时它会插入整个代码以及如何解决这个问题?【参考方案16】:这在某种程度上取决于 IDE。例如,Visual Studio 和Eclipse 都允许您复制为 RTF 并粘贴到 Word 中,保留所有格式。
Notepad++ 有一个名为“NppExport”的插件(预安装),它允许您复制到 RTF,尽管我不太关心 Notepad++ 的语法突出显示(虽然它肯定是可以通过的)。它所做的是支持数十种语言,而上述 IDE 仅限于少数几种(没有其他插件)。
【讨论】:
我在 VS 和 Eclipse 上都做得很好——使用 IDE 的编辑器进行语法着色(以及我喜欢的任何格式),然后直接剪切并粘贴到 word 中。我通常会跟进将 sn-p 上的字体设置为固定宽度的字体(我并不总是遇到这种情况)以上是关于将源代码示例插入 Microsoft Word 文档的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章