2015-12-23 20 views
5

próbuję zrobić bloga za pomocą trio Jekyll, rmarkdown i GitHub (jak tutaj: http://yihui.name/knitr-jekyll/)Blogowanie z Jekyll, rmarkdown i github: jak wyświetlanie obrazów

Mam wszystkie moje .Rmd w _source, a ja mieć tę kwestię, że czasami wątki są na drutach w bazie 64 obrazów, a czasami zapisywane w folderze rysunku.

Pierwsze pytanie, dlaczego?

Drugie pytanie: kiedy mój wykres jest zapisany jako obraz, ścieżka w html wygląda jak postać/źródło /. Wiedząc, że docelowym folderem jest/blog/(moje źródło w _config.yml), aby działał, powinien to być blog/postać/źródło.

Co dziwne, są one wyświetlane lokalnie i po otwarciu HTML przez moją przeglądarkę. Ale kiedy rozmieszczam moją stronę na github, obrazy nie są wyświetlane, ponieważ ścieżka jest niepoprawna.

Jak zdefiniować ścieżkę do/blog/figure zamiast/figure /?

Edit: link do mojego bloga, jeszcze w fazie rozwoju: http://yvescr.github.io/

Ale RMD nie pojawiają się na koncie github, jak folderze ja zsynchronizowany z github jest plik docelowy z Jekyll pokolenia.

_config.yml:

# Build settings 
markdown: kramdown 
baseurl: "/blog" 

W R:

jekyll(dir = ".", input = "_source", output = "_posts", script = c("Makefile", "build.R") 
, command = "jekyll build --destination ../blog") 

build.r:

local({ 
    # fall back on '/' if baseurl is not specified 
    baseurl = servr:::jekyll_config('.', 'baseurl', '/') 
    knitr::opts_knit$set(base.url = baseurl) 
    # fall back on 'kramdown' if markdown engine is not specified 
    markdown = servr:::jekyll_config('.', 'markdown', 'kramdown') 
    # see if we need to use the Jekyll render in knitr 
    if (markdown == 'kramdown') { 
    knitr::render_jekyll() 
    } else knitr::render_markdown() 

    # input/output filenames are passed as two additional arguments to Rscript 
    a = commandArgs(TRUE) 
    d = gsub('^_|[.][a-zA-Z]+$', '', a[1]) 
    knitr::opts_chunk$set(
    fig.path = sprintf('blog/figure/%s/', d), 
    cache.path = sprintf('cache/%s/', d) 
) 

    knitr::opts_knit$set(width = 70) 
    knitr::knit(a[1], a[2], quiet = TRUE, encoding = 'UTF-8', envir = .GlobalEnv) 
}) 

makefile:

all: 
    Rscript -e "servr::jekyll('..')" 

clean: 
    rm -r ../blog/ 
+3

Link do repozytorium github będzie mile widziany. –

+0

Czy możesz dodać łącze do pliku '_config.yml'? Nie ma go w repozytorium GitHub i nie sądzę, by bez niego można było rozwiązać problem. Ponadto doceniono dokładną komendę używaną do generowania witryny. –

+0

Położyłem plik build.r, makefile i _config.yml. Dzięki – YCR

Odpowiedz

1

Rozwiązuję problem, zamieszczam go tutaj, na wypadek gdyby ludzie mieli to samo:

Funkcja jekyll() w R kompilacji .rmd (w _source) w .md (w _post) z knitr (chyba) wywołaj polecenie jekyll.

Mój problem polegał na tym, że po zmianie pliku _config.yml, po modyfikacji ścieżki, plik .md nie został ponownie utworzony, a ścieżka nie została zmieniona.

Aby to działało, musiałem ręcznie usunąć .md w _source, a następnie ponownie uruchomić funkcję jekyll().

Jeśli chodzi o obrazy, są one kompilowane jako 64 obrazy, gdy używam rmarkdown bez pamięci podręcznej.

Dzięki pamięci podręcznej knitr tworzy obrazy w folderze.