Blogdown: включить сворачивание кода с помощью темы Clarity

#r #r-markdown #hugo #blogdown

#r #r-markdown #хьюго #blogdown

Вопрос:

Как вы можете видеть на этом примере сайта, тема hugo clarity имеет сворачивание собственного кода, копирование кода и номер строки. Но это не будет работать с блоками кода rmarkdown.

Блоки кода в этом примере сайта заключены следующим образом:

«html
## код идет сюда ##
</html> «

в то время как блоки кода rmarkdown заключены в:

<pre class=»r»><code>
## код идет сюда ##
</code>

Я предполагаю, что я должен что-то изменить в code.js (см. Здесь ), чтобы заставить его работать с блоками кода rmarkdown, но я не знаю, что.

Идеи?

Комментарии:

1. разве rmarkdown не выводит данные в markdown в blogdown?

2. @AbdessabourMtk .html

3.Я просмотрел в code.js файле, что эта строка используется для получения code тегов подсветки синтаксиса, тот факт, что rmarkdown выводит только pre то, что его содержимое должно быть заключено в code тег, т.е. для html <code class="language-html" data-lang="html" data-height="157px" style="max-height: initial;">

4. Я предполагаю, что язык может быть выведен из класса pres

Ответ №1:

Я думаю, что это позволит обойти проблему, хотя редактирование файлов темы — это не выход, редактирование функции в строке 63 — это та, которая выбирает блоки кода, которые имеют классы и не имеют noClass класса, редактирует фильтр, чтобы принимать те, у которых родительские узлы имеют класс, затемдобавление имени класса к дочернему элементу и data-lang атрибуту:

 function codeBlocks() {
  const markedCodeBlocks = elems('code');
  const blocks = Array.from(markedCodeBlocks).filter(function(block){
    return (hasClasses(block) amp;amp; !Array.from(block.classList).includes('noClass')) || hasClasses(block. parentNode);
  }).map(function(block){
    if(!hasClasses(block)){
        block.className = block.parent.ClassName;
        block.dataset.lang = block.className;
    }
    return block
  });
  return blocks;
}
  

Редактировать: лучшим решением было бы использовать hugodown which превращается .Rmd в .md передачу ответственности за генерацию html хьюго.

Комментарии:

1. Вам удалось воспроизвести это? Здесь не сработало. Я также просматриваю этот файл css . Может быть, можно добавить r, python, любые классы там?

2. @AlbersonMiranda Я бы предложил использовать hugodown другой пакет, который в основном превращает rmarkdown в простой markdown это лучшее решение, чем изменение файлов или изменение расширения на .Rmarkdown