2016-06-16 5 views
3

rougeシンタックスハイライターを理解しようとしており、特にRコードを強調するために使用しています。最終的にはjekyllで構築されたWebサイトですが、私は問題をrougeに分けることができました(たとえば、検査可能なHTMLを生成するためにサンプルコードでrougifyを使用します)。ルージュ構文強調表示は、Rの非ベース関数を強調表示することを意図していますか?

私の問題は、私のコードのほとんどがclass = "n"で与えられているということです。私はこれが "name"の略で、任意の変数と区別できないと思います。構文ハイライト用のほとんどのCSS私はクラス "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上の議論の理解どのようなことから、Rのrougeハイライトは早い6月から全く働いていました。私がかなり確信しているのは、rougeのソースにあるkey bit of codeです。は、PRIMITIVE_FUNCTIONSの機能のみが強調表示されると思います。言い換えれば、非プリミティブ関数をすべて非ハイライトにしておくと、rougeはうまく動作しますが、R構文の意味が非常に限られています。

私の質問は正しいですか?

私は私が正しく物事を理解している場合、それらはRの基本パッケージでの原始的な機能ではないにもかかわらず、私はより多くの機能が含まれるようにrougeのソースをハックする必要がありますどちらかlibrary()ggplot()のようなものを強調表示する必要がありますまたは何かに移動しようとします。

+0

[Pygments](http://pygments.org/)ハイライターを使用しようとしましたか? –

+0

私はいつも顔料を使用していましたが、ウェブサイトが成長するにつれ、Jekyll-ruby-Pythonツールチェーンではますます不機嫌になっていました。それから、ジキルがコンピュータを交換して3.xにアップグレードすると、それを完全に殺したようだ。基本的には、ピググラムから移動することが問題のプロンプトです。 –

+0

これはあなたが探しているものではありませんが、vim用の[Nvim-R](https://github.com/jalvesaq/Nvim-R)プラグインで使用されているアプローチを、 R環境からロードされたパッケージのリストで、ライブラリー機能を強調表示します。おそらく、関数のリストを作成してCSSに挿入するために、Rへの一回限りの呼び出しを行うことができます。 – Philip

答えて

1

私はしばらくの間、強調表示するRの構文についてはrougeを使用しているので、私はそれはそれはかなりまともな仕事(個人的な意見)がないことも、ちょうど今月より長くrougeに働いていることを確認することができます。

私はjekyllを使用してGitHub pagesサイトを生成しました。ちょっと前に蛍光灯としてrougeに切り替える同じプロセスを経ました。しかし、Rコードではうまくいきました。以下は私のサイトのスクリーンショットの例です(この記事の恩恵を受けるために追加したいくつかのコードがあります)。あなたが提案したよう

R code on a GitHub pages site using rouge

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ループの中で、forinのようにハイライト表示されます。

しかし、これは普及したIDEスタジオでggplot()ggseaに関して強調表示が機能するのと同じ方法です。のみlibrary()(ともrequire()のようないくつかの他の機能は)PRIMITIVE_FUNCTIONSのリストに含まれていない、と彼らが必要としてそれほど強調されません:

R code in the RStudio IDE

だから、私はあなたのコードがどのように見えるか興味がありますその前にはrougeと一緒に行くことはできません。 library()require()のハイライトを修正するだけであれば、推測したようにPRIMITIVE_FUNCTIONSのリストに追加することができます。しかし、すべての非基底関数に対して特別なハイライトが必要な場合は、より複雑になります。

私が生成サイトのファイル_config.ymlの最後の部分を投稿しました。

# 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'] 

私もちょうどそれが望ましい色ではないコード括弧と括弧を、ないことに気づきました。

関連する問題