Html 为什么可以';我不能在R标记文档中打印代码的颜色吗?

Html 为什么可以';我不能在R标记文档中打印代码的颜色吗?,html,colors,rstudio,r-markdown,Html,Colors,Rstudio,R Markdown,当我在RStudio中创建R Markdown笔记本时,代码块执行RStudio的所有常规文本着色——例如,绿色的注释行和文本常量,蓝色的数字常量,等等。当我打开RStudio的HTML预览窗口时,所有的着色仍然很好地显示出来,当我在浏览器中查看HTML文档时也同样如此 到目前为止,嵌入同一文档中ggplot2图形对象中的颜色显示同样成功(在屏幕上查看HTML) 但是,当我从Mac浏览器将HTML文档发送到打印机时,或者当我使用“打印”对话框将HTML文档导出为PDF时,所有文本颜色都会消失,所

当我在RStudio中创建R Markdown笔记本时,代码块执行RStudio的所有常规文本着色——例如,绿色的注释行和文本常量,蓝色的数字常量,等等。当我打开RStudio的HTML预览窗口时,所有的着色仍然很好地显示出来,当我在浏览器中查看HTML文档时也同样如此

到目前为止,嵌入同一文档中ggplot2图形对象中的颜色显示同样成功(在屏幕上查看HTML)

但是,当我从Mac浏览器将HTML文档发送到打印机时,或者当我使用“打印”对话框将HTML文档导出为PDF时,所有文本颜色都会消失,所有内容都以黑色文本呈现,即使ggplot2图形颜色在打印输出中仍然完全成功

如何恢复打印输出中的文本颜色?谢谢

(这种情况发生在Mac笔记本电脑上,Firefox和Safari也是如此。)


1天后编辑以添加:
在我应用@user2554330的初始解决方案之前,我没有注意到一个症状。标记文本(即外部代码块)中的超链接也会转换为黑色文本,并且链接文本和基础URL都会打印出来,这与HTML输出不同,HTML输出是彩色的,只显示链接文本

我根据在上找到的内容尝试了
.hljs链接
,但似乎没有任何效果。

这很难修复

问题在于
rmarkdown
使用
bootstrap
框架来设置样式。该框架试图标准化不同浏览器上的显示;由于浏览器在处理打印的方式上确实是可变的,所以它选择了一种非常简单的黑白样式来打印文本

您可以创建一个覆盖这些选项的CSS文件,也可以将源代码编辑到
引导
CSS文件中,这样它就不会这样做。两者都很难

创建自己的CSS文件的问题是,您需要为每种不同类型的文本重新指定颜色,将所有选择标记为
!重要信息
r标记
有几种不同的颜色方案用于突出显示代码。编辑后,默认设置如下所示:

.hljs-literal {
  color: #990073!important;
}

.hljs-number {
  color: #099!important;
}

.hljs-comment {
  color: #998!important;
  font-style: italic;
}

.hljs-keyword {
  color: #900!important;
  font-weight: bold;
}

.hljs-string {
  color: #d14!important;
}
如果使用不同的高亮显示样式,则需要编辑该样式

将其保存在文件中,例如
style.css
,然后将其放入YAML标题中:

output: 
  html_document:
    css: style.css
另一种方法是编辑
引导
源代码,使其不再强制颜色为黑色。查找
@media print
部分,并对其进行编辑。要编辑的文件是

<rmarkdown dir>/rmd/h/bootstrap/css/bootstrap.min.css
这迫使所有链接都是蓝色的。这并不理想;它不允许链接在选中时更改颜色,因此文档的原始屏幕版本将被更改,而不仅仅是打印版本。我现在太懒了,不知道如何处理颜色变化

要停止追加URL,需要以下文本:

a[href]::after {
  content: "";
}
这表示带有HREF元素的锚应该附加一个空字符串。标准的
bootstrap
规范附加了您看到的额外文本。这似乎不需要
!重要信息
,因为标准版没有使用它


将这两个条目都放入
style.css文件中,打印时您应该可以获得彩色链接,而无需附加URL。

我刚刚偶然发现了这个问题,同时还查看了其他相关答案,因此我认为可以修复您的超链接问题。TLDR:Add
urlcolor:blue
和可能的
linkcolor:red
到顶部的documents yaml部分:)

非常有效,谢谢。颜色选择也不错。我要补充的是,
html\u notebook
似乎在YAML标题中与
html\u document
一样有效,在RStudio中,我发现前者更适合。我对问题进行了编辑,稍微扩展了一下问题,这似乎需要单独修复:超链接的打印效果也很差。而且,感谢您提供有关处理超链接的更多信息--非常有用。
a[href]::after {
  content: "";
}