Подсветка синтаксиса ружья предназначена для выделения неосновных функций в R?
Я пытаюсь понять rouge
подсветка синтаксиса и, в частности, использование его для выделения кода R. В конечном итоге это для веб-сайта, созданного с jekyll
но я смог изолировать свои проблемы просто rouge
(например, я использую rougify
на примере кода для создания проверяемого HTML).
Моя проблема в том, что большая часть моего кода задана class = "n", что, я думаю, означает "имя" и не отличается от произвольных переменных. Я думаю, что большинство 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">
Из того, что я понимаю из обсуждения по этому запросу, rouge
выделение R сработало только с начала июня. Глядя на то, что я уверен, это ключевой бит кода в исходном коде для rouge
Я думаю, что только функции в переменной PRIMITIVE_FUNCTIONS
будут выделены. Другими словами, оставляя все не примитивные функции без внимания rouge
работает как надо, просто у него очень ограниченный смысл синтаксиса R.
У меня вопрос, правильно ли я понял?
Мне нужны такие вещи как library()
а также ggplot()
быть выделенным, даже если они не являются примитивными функциями в базовом пакете R. Если я все правильно понял, мне придется либо взломать источник rouge
включить больше функций или попытаться перейти к чему-то другому.
1 ответ
Я использую rouge
для подсветки синтаксиса R на некоторое время, так что я могу подтвердить, что он работал в rouge
дольше, чем в этом месяце, а также, что он делает довольно приличную работу (личное мнение).
У меня есть сайт GitHub страниц, созданный с помощью jekyll
и я прошел тот же процесс переключения на 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']
Я также только что заметил, что это не цветовой код скобки и скобок, что желательно.