【问题标题】:Code styling for black and white documents黑白文档的代码样式
【发布时间】:2012-07-10 20:42:22
【问题描述】:

关于 knitr 的好处之一是您可以轻松更改 R 代码的颜色。但是,大多数文档都是黑白打印的。那么,在使用黑白打印机打印文档时,R 代码的样式设置是否合适?

【问题讨论】:

  • 也许您可以尝试使用grDevices::hsv() 生成颜色,保持sv 不变(最大s 和中等v)和变化h;你会得到一些在黑白打印机上看起来不会太浅的颜色。我想一定有一些主题考虑到了这一点;这是 knitr 中所有主题的预览:animation.r-forge.r-project.org/html/knitr-highlight-theme.html
  • @Yihui 这是一份不错的清单。我认为一些主题适合以黑白方式打印。
  • 如果您要构建自己的 css 主题,除了您已经在考虑的灰色调之外,您可能还想玩弄字体。例如,您可以使用.comment{font-style: italic;} 以斜体字打印 cmets,以粗体字打印函数调用等。

标签: r latex knitr


【解决方案1】:

正如其他评论者所提到的,您实际上只能选择更改一些灰色阴影,以及粗体和斜体。这是一个样式表,按最显眼到最不显眼的松散顺序排列。您的偏好可能会有所不同。

.background {
  color: #ffffff;
}
.source, .output, .warning, .error, .message {
  padding: 0em 1em;
  border: solid 1px #f7f7f7;
}
.error, .warning, .message {
  font-weight: bolder;
  font-style: italic;
  color: #000000;
}
.keyword {
  font-weight: bolder;
  color: #000000;
}
.functioncall, .package {
  font-weight: bolder;
  color: #202020;
}
.source, .output, .number, .argument, .formalargs, .eqformalargs, .assignement, .symbol, .prompt {
  color: #404040;
}
.string {
  font-weight: bold;
  color: #606060;
}
.comment, .roxygencomment, .slot {
  font-style: italic;
  color: #808080;
}

实现此功能的最简单方法是在 knitr 包所在的任何库中另存为“knitr/themes/bw.css”。然后您可以通过调用来使用它

knit_theme$set("bw")

(或者,对于少量额外输入,您可以提供knit_theme CSS 文件的路径。)

【讨论】:

  • 如果你足够讨厌你的读者,你可以在样式文件中添加一些text-decoration:blinks。
  • 这会引发以下警告Warning in readLines(file) : incomplete final line found on 'C:/Users/R/win-library/3.0/knitr/themes/bw.css' Warning in color_def(foreground, "fgcolor") : the color '' is invalid;using default color...see http://yihui.name/knitr/options。我正在使用R 3.0.2knitr 1.5.15
【解决方案2】:

knitr 中现在有灰度主题:greyscale0greyscale1greyscale2。您可以通过以下方式查看所有 knitr 主题:

library("knitr")
knit_theme$get()

要在 knitr 文档中设置主题,请添加(例如)行

knit_theme$set("greyscale2")

【讨论】:

    【解决方案3】:

    坦率地说,我对那些用于黑白印刷的 knitr 主题中的任何一个都不感兴趣,它们都比不上老牌 enscript -E<lang>

    以下是我认为对黑白打印输出的易读性很重要的标准,包括斜体和粗体以及着色:

    #Comments should be italicized - very important
    fn.name.declarations.should.be.heavily.bolded <- function(...) {
    "strings should be bolded"
    numbers, NA, Nan should be a different color (prints as something dark gray)
    Your choice of how to treat variable names
    Your choice of how to treat fncalls, builtins
    

    你没有说它特别需要LaTex,那为什么不考虑输出PS或PDF格式呢?

    【讨论】:

    • 感谢您的回答。 PS 或 PDF 选项是什么意思?
    • PS:后记,PDF:Adobe PDF 格式。 LaTex 的可能替代品,具体取决于您是要打印它、将其嵌入文档中还是其他任何方式。
    • 我了解 PS 和 PDF 是什么,但不了解如何在其中表示代码。
    • 您没有说明您的要求,但听起来您既想要 a)在 GUI 中查看代码,又想要 b)漂亮地打印它。 (最初的问题听起来好像您只想要清晰的漂亮打印,在这种情况下 enscript -E&lt;lang&gt; 非常棒。)
    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2021-12-11
    • 2019-01-20
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多