Как отображать изображения в Markdown на github, созданные из knitr без использования внешнего хостинга?
Мне нравится загружать репозитории в github, которые включают несколько файлов R Markdown и Markdown.
Вот пример такого файла уценки в github. И вот захват экрана.
![enter image description here]()
Проблема в том, что изображения не отображаются. Вы можете щелкнуть по изображению, и вы перейдете к тому, где хранится файл.
Ссылка на файл:
https://github.com/... /blob/.../myfigure.png
тогда как я предполагаю, что ему нужно ссылаться на
https://github.com/... /raw/.../myfigure.png
Что я подумал:
imgur: Я мог бы использовать внешний хостинг изображений (например, см. этот пример), добавив следующий код:
```{r setup}
opts_knit$set(upload.fun = imgur_upload) # upload all images to imgur.com
````
Однако по разным причинам я не хочу этого делать (у меня проблема с загрузкой, когда позади брандмауэра, она медленная, она создает ненужную зависимость)
Rpubs: Там также RPubs, что довольно круто. Тем не менее, во время публикации он больше подходит для отдельных документов с уценкой, а не для нескольких документов с разметкой R. И он не обеспечивает такую тесную связь между источником R Markdown и документом Markdown.
Вопрос
- Есть ли рабочий процесс для использования R Markdown и knitr для создания файлов Markdown, которые при загрузке в github позволяют файлу Markdown отображать изображения, хранящиеся в репозитории github?
Ответы
Ответ 1
Это было частью минимального примера, используйте
opts_knit$set(base.url='https://github.com/.../raw/.../')
См. изменения здесь и здесь.
Также см. http://yihui.name/knitr/options.
EDIT [с обновлением для восстановления base.url до прежнего значения
Что касается переключения, вы можете определить функцию как
create_gitpath <- function(user, repo, branch = 'master'){
paste0(paste('https://github.com', user, repo, 'raw', branch, sep = '/'),'/')
}
my_repo <- create_gitpath(user, repo)
knit.github <- function(..., git_url ){
old_url <- opts_knit$get('base.url')
on.exit(opts_knit$set(base.url = old_url))
opts_knit$set(base.url = git_url)
knit(..., envir = parent.frame())
}
Запустите с помощью knit
, пока вы не нажмете на github
, затем запустите knit.github(..., git_url = my_repo)
Ответ 2
Как насчет следующего кода в начале вашего файла уценки?
``` {r setup,echo=FALSE,message=FALSE}
gitsubdir <- paste(tail(strsplit(getwd(),"/")[[1]],1),"/",sep="")
gitrep <- "https://github.com/mpiktas/myliuduomenis.lt"
gitbranch <- "master"
opts_knit$set(base.url=paste(gitrep,"raw",gitbranch,gitsubdir,sep="/"))
```
Можно настроить его так, чтобы gitrep
и gitbranch
сообщается с помощью git. Здесь я предположил, что я один уровень каталога ниже основного каталога репозитория git. Опять же, это может быть изменено для размещения более сложных сценариев.
Я тестировал github, вот файл Rmd и соответствующий md.