我试图理解rouge
语法高亮显示,特别是用它来突出显示R代码。最终它是使用jekyll
构建的网站,但我已经能够将我的问题隔离到rouge
(例如,我在示例代码上使用rougify
来生成可检查的HTML)。
我的问题是我的大多数代码都被赋予了class =" n",我认为这代表" name"并且与任意变量无法区分。语法高亮显示的大多数CSS我认为留下类#34; n"不变。以下是library(ggseas)
:
<span class="n">library</span><span class="p">(</span><span class="n">ggseas</span><span class="p">)</span><span class="w">
根据我对this pull request的讨论的理解,rouge
突出显示R仅在6月初才起作用。看看我非常确定rouge
源代码中的key bit of code,我认为只有变量PRIMITIVE_FUNCTIONS
中的函数才会突出显示。换句话说,通过使所有非原始函数不被突出rouge
正常工作,它只具有非常有限的R语法感。
我的问题是,我明白了吗?
我需要突出显示library()
和ggplot()
之类的内容,即使它们不是R的基本包中的原始函数。如果我理解正确,我将要么必须破解rouge
的来源以包含更多功能或尝试转移到其他功能。
答案 0 :(得分:1)
我一直在使用rouge
进行R语法高亮显示,所以我可以确认它在rouge
中工作的时间超过了本月的时间,并且它确实做得相当不错(个人意见)。
我使用jekyll
生成了一个GitHub pages网站,我刚刚经历了与荧光笔切换到rouge
相同的过程。但它现在对R代码运行良好。下面是我的网站的示例屏幕截图(我添加了一些额外的代码以使这篇文章受益)。
library(ggseas)
和library("ggseas")
页面上的代码(我通常写的方式)如你所知:
<span class="n">library</span><span class="p">(</span><span class="n">ggseas</span><span class="p">)</span>
<span class="n">library</span><span class="p">(</span><span class="s2">"ggseas"</span><span class="p">)</span>
正如您所看到的,PRIMITIVE_FUNCTIONS
的特殊突出显示了突出显示,就像我们在for循环中看到的单词for
和in
一样。
但是,这与突出显示在流行的IDE Studio中与ggplot()
和ggsea
相关的方式相同。只有library()
(以及require()
等其他一些功能)未包含在PRIMITIVE_FUNCTIONS
列表中,因此请勿突出显示:
所以,我很好奇你的代码之前看起来是什么样的rouge
。
如果您只需要修正library()
和require()
(以及可能还有其他几个)的突出显示,那么您应该可以将它们添加到您推测的PRIMITIVE_FUNCTIONS
列表中。但是如果你想要对所有非基本功能进行特殊突出显示,那么它将变得更加复杂。
如果有帮助,我已为_config.yml
生成的网站发布了jekyl
文件的最后一部分。
# Build settings
destination: _site
paginate: 10
permalink: /:year/:title/
markdown: kramdown #redcarpet
highlighter: rouge
#redcarpet:
# extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "strikethrough", "superscript", "with_toc_data"]
#redcarpet:
# extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "with_toc_data"]
kramdown:
# use Github Flavored Markdown
input: GFM
auto_ids: true
syntax_highlighter: rouge
# do not replace newlines by <br>s
hard_wrap: false
gems: ['jekyll-paginate']
exclude: ['README.md', 'Gemfile', 'Gemfile.lock', 'screenshot.png']
我也注意到它没有为括号和括号设置颜色代码,这是可取的。