2015-12-23 18 views
5

provo a fare un blog utilizzando il trio Jekyll, rmarkdown e GitHub (come in questo caso: http://yihui.name/knitr-jekyll/)Blogging con Jekyll, rmarkdown e GitHub: come visualizzare le immagini

ho tutti i miei .RMD in sorgente_, e ho hanno questo problema che a volte i grafici sono lavorati a maglia in 64 immagini di base e talvolta salvati in una cartella di figure.

Prima domanda, perché?

Seconda domanda: quando il mio grafico viene salvato come immagini, il percorso in html sembra essere figura/fonte /. Sapendo che la cartella di destinazione è/blog/(mia baseurl in _config.yml), per farlo funzionare, dovrebbe essere blog/figura/sorgente.

Stranamente, vengono visualizzati localmente e quando apro l'html con il mio browser. Ma quando installo il mio sito Web su github, le immagini non vengono visualizzate, poiché il percorso non è corretto.

Come definire il percorso di/blog/figura anziché/figure /?

Edit: il link al mio blog, ancora in fase di sviluppo: http://yvescr.github.io/

Ma la Rmd non appaiono nel conto github, come la cartella ho sincronizzato con GitHub è il file di destinazione della generazione Jekyll.

_config.yml:

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

In 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

Un collegamento al repository Github sarà apprezzato. –

+0

Puoi aggiungere un link al tuo file '_config.yml'? Non è nel tuo repository GitHub e non penso che il problema possa essere risolto senza di esso. Inoltre, il comando esatto che usi per generare il tuo sito web sarebbe apprezzato. –

+0

Ho messo build.r, makefile e _config.yml. Grazie – YCR

risposta

1

risolvo il mio problema, io postare qui nel caso in cui le persone hanno la stessa:

La funzione Jekyll() in R compilare il .RMD (in sorgente_) in .md (in _POST) con knitr (credo) allora chiama il comando jekyll.

Qui, il mio problema era che quando ho cambiato il file _config.yml, con la modifica del percorso, il .md non viene ricreato e quindi il percorso non viene modificato.

Per farlo funzionare, ho dovuto eliminare manualmente il .md in _source quindi eseguire nuovamente la funzione jekyll().

Per quanto riguarda le immagini, vengono compilate come 64 immagini quando utilizzo rmarkdown senza cache.

Con la cache, knitr crea le immagini in una cartella.

Problemi correlati