Как отображать изображения в Markdown на GitHub, сгенерированные из knitr без использования внешнего хостинга изображений?
мне нравится загружать репозитории в github, которые включают несколько файлов Markdown и Markdown.
здесь пример такого файла уценки на github. А вот снимок экрана.
Проблема в том, что изображения не отображаются. Вы можете нажать на изображение, и вы перейдете туда, где хранится файл. Файл ссылка:
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?
2 ответов
Это было частью минимального примера, используйте
opts_knit$set(base.url='https://github.com/.../raw/.../')
посмотреть изменения здесь и здесь.
Также см. http://yihui.name/knitr/options.
редактировать [С обновлением для восстановления базы.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
пока вы не захотите нажать на выполнить knit.github(..., git_url = my_repo)
как насчет следующего кода в начале вашего файла markdown?
``` {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.