如何在将文本从RStudio复制粘贴到Word时保留格式?

41

我想在Word 2010中复制我的代码。这些脚本是在RStudio中编写的,我希望在粘贴到Word时保留RStudio的格式。主要是因为我喜欢RStudio使用的字体颜色和间距。但是,我发现当我从SAS粘贴到Word时,格式会被保存,但在这里没有用。

通常,我会寻找复制特定/粘贴特定选项来完成这个任务,但我找不到任何选项。当我尝试将其复制特殊粘贴到Word中时,只有未格式化的文本选项可供选择。我不想逐行重新格式化文本,因为我认为它在RStudio中看起来相当不错。

我考虑过尝试将脚本保存在RStudio中以保留其格式,但我找不到任何方法来实现这一点。应该如何做呢?


28
我们应该少些教条主义。我认为对于刚开始创业的人来说,这很接近编程。 - Dieter Menne
9个回答

40

目前还不太清楚您是从RStudio的脚本编辑器(有4或5种颜色)中粘贴,还是从RStudio中的R控制台(包括脚本和输出,只有2种颜色)中粘贴。

如果您是从控制台中粘贴,请再次检查"特殊粘贴"选项。应该有一个“HTML格式”选项,可以满足您的需求(虽然根据页面边距,您可能需要调整字体大小以使所有内容适合)。

如果您是从脚本编辑器中粘贴,则无法直接使用复制和粘贴解决方案。但是有一种复制-粘贴-复制-粘贴的解决方案...

其中一种解决方案是使用Notepad++。从RStudio中保存带有".R"扩展名的脚本,然后在Notepad ++中打开该脚本。(或从RStudio复制并粘贴到Notepad ++中,但请确保您将文件的语言设置为R-从“语言”菜单)。当您的脚本在Notepad++中正确地突出显示时,转到“插件>NppExport>复制HTML到剪贴板"菜单以复制打开的文件。然后可以使用HTML格式将其粘贴到MS Word中。


1
太棒了!我正在脚本编辑器中工作,想从那里粘贴。没想到Notepad++是如此聪明。非常感谢! - dubhousing
它按预期工作。我会标记为正确 - 没有注意到投票按钮下面的选项(我目前无法使用)。再次感谢! - dubhousing
适用于 Windows 10 上的 PowerPoint 2016。 - scs
我在使用“复制HTML到剪贴板”粘贴到PowerPoint时遇到了一个问题,它没有保留回车符。但是,“NppExport” -> “复制RTF到剪贴板”为我保留了回车符和语法高亮。 - Matt L.
这对我没有起作用。它限制了我只能粘贴未经格式化的文本。 - babipsylon

30

以防其他人寻找这个问题......

RStudio中另一种将所有源代码放入漂亮格式的Word文档中的方法是使用文件/编译笔记本电脑选项,选择输出格式为MS Word。

使用此选项,将生成一个.docx文档,其中包括您的脚本输出以及原始源代码。脚本将被执行。

如果您不希望评估代码(只需简单地复制粘贴),则可以在脚本开头添加#+eval=FALSE,然后源代码将在Word文档中复制而不被评估。

此方法依赖于knitr。如果有人想开始尝试这个,这里有一个例子。

#' ---
#' title: "My homework"
#' author: John Doe
#' date: June 15, 2015
#' output: word_document
#' ---

# The header above sets some metadata used in the knitr output

# Conventional comments are formatted as regular comments

# Comments starting with "#+" control different knitr options.

#+echo=FALSE,message=FALSE,warning=FALSE
library(ggplot2)


#+echo=TRUE
#' Comments with a "+" sign are used to tell knitr what should be
#' done with the chunk of code:
#'
#'  - echo: Show the original code or not
#'  - eval: Run the original code or not
#'  - message: Print messages
#'  - warning: Print warnings
#'  - error: Print errors
#'  ...

#' Comments with an apostrophe "'" will be printed as regular text.
#' This is very useful to explain what you are actually doing!

# Regular comments can be used to document the code as usual
# Figures are printed:
ggplot(mpg, aes(x=cty, y=hwy)) + geom_point(aes(color=class))

#' Formatting **options** are possible.
#' Even [links](https://dev59.com/gWkw5IYBdhLWcg3wHW3n)
#'


#' This will show all the packages and versions used to generate this document.
#' It can be used to make sure that your teacher has all he needs to run your script
#' if he/she wants to.
sessionInfo()

Word文档示例


9
假设您已经连接网络
1. 复制并粘贴到 gist.gisthub.com 2. 选择'R'作为语言,这样会提供颜色 3. 点击创建(秘密或公开)的代码片段 4. 从代码片段中复制并粘贴到您的文字处理器中。
与Notepad++解决方案相比:
1. 在线备份您的代码,并记录剪贴时间。 2. 您不需要安装任何其他软件,如果您是使用公共计算机的学生,则非常有用。

1
好的答案。唯一的问题是,也许你不想公开分享你的代码。 - Francis Smart
2
不再起作用了,他们似乎已经删除了选择语言的选项。 - Steffen Moritz

3
如果你只需要已格式化的代码:
步骤1:在你的代码开头加上 #+eval=FALSE。
步骤2:然后转到文件 -> Knit Document。将文件编译为msword/PDF/Html。
或者
只需在您的代码开头添加 #+eval=FALSE。
按 CTRL+SHIFT+K,然后在msword/PDF/Html中编译文件即可。
如果您需要带输出的代码,请不要在代码开头添加 #+eval=FALSE,直接执行第2步。

1
我同意zeehio的观点,使用Knitr可能是最好的选择。但另一种方法是使用Pretty R工具和这里的“打开文档文本”步骤here。基本上只需将您的代码复制并粘贴到漂亮的R中,然后将输出(而不是html)复制并粘贴到打开的文档中即可。

1
如果你想在从R控制台复制选定内容时保留格式,你需要安装一个较旧的R Studio版本。1.2.5042版本,在更新的版本中无法正常工作。

1

在从Rstudio控制台窗口复制并粘贴到Word文档之后,您需要突出显示所有刚刚复制的文本,并将字体更改为Courier New。这将为您提供与Rstudio控制台窗口中相同的间距和对齐。


1
几乎了解。每行之间会有太多的空格,因为每一行都会开始一个新段落。最好定义一个样式表代码,并将“after”设置为0pt。 - Dieter Menne
谢谢大家,我会尝试将你们两个的建议结合起来。 - dubhousing

0

将代码从Rstudio编辑器复制并粘贴到“Visual Studio Code”中,然后再从那里复制到文字处理器中。 为了实现这一点,您必须首先在Visual Studio Code中安装R扩展。 “Visual Studio Code”本身就是一个IDE,也可以潜在地用于R语言,但现在我强调使用它来回答上述问题。


你能举个例子展示一下吗? - JJJ

0
在 R 中,我使用 Monaco 编辑器字体。要将 R 控制台的输出复制粘贴到 Microsoft Word 中,我选择控制台的输出,右键单击复制并粘贴到我的 Word 文档中。一旦我将输出粘贴到 Word 中,我会选择它并将其放入 Word 的 Monaco 字体中,并根据需要缩小字体的大小。
这非常好地完成了工作,并完美地保留了来自 R 控制台的输出样式以及书写的代码块。

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