2015-12-23 15 views
5

tôi cố gắng làm một blog bằng cách sử dụng bộ ba Jekyll, rmarkdown và github (như ở đây: http://yihui.name/knitr-jekyll/)blog với Jekyll, rmarkdown và github: làm thế nào để hiển thị hình ảnh

Tôi có tất cả .Rmd tôi trong _source, và tôi có vấn đề này đôi khi các ô được đan bằng hình ảnh cơ sở 64 và đôi khi được lưu trong thư mục hình.

Câu hỏi đầu tiên, tại sao?

Câu hỏi thứ hai: khi cốt truyện của tôi được lưu dưới dạng hình ảnh, đường dẫn trong html xuất hiện là hình/nguồn /. Biết rằng thư mục đích là/blog/(baseurl của tôi trong _config.yml), để làm cho nó hoạt động, nó phải là blog/figure/source.

Thật kỳ lạ, chúng được hiển thị cục bộ và khi tôi mở html bằng trình duyệt của mình. Nhưng khi tôi triển khai trang web của tôi trên github, hình ảnh không được hiển thị vì đường dẫn không chính xác.

Cách xác định đường dẫn đến/blog/hình thay vì/figure /?

Edit: các liên kết đến blog của tôi, vẫn còn trong phát triển: http://yvescr.github.io/

Nhưng RMD không xuất hiện trong các tài khoản github, như thư mục Tôi đồng bộ với github là file đích của hệ Jekyll.

_config.yml:

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

Trong 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

Một liên kết đến repo github của bạn sẽ được đánh giá cao. –

+0

Bạn có thể thêm liên kết vào tệp '_config.yml' của mình không? Nó không có trong repo GitHub của bạn và tôi không nghĩ rằng vấn đề có thể được giải quyết mà không có nó. Ngoài ra, lệnh chính xác mà bạn sử dụng để tạo trang web của mình sẽ được đánh giá cao. –

+0

Tôi đã đặt build.r, makefile và _config.yml. Cảm ơn – YCR

Trả lời

1

Tôi giải quyết vấn đề của mình, tôi đăng nó ở đây trong trường hợp mọi người có cùng:

Hàm jekyll() trong R biên dịch .rmd (in _source) trong .md (in _post) với knitr (tôi nghĩ) rồi gọi lệnh jekyll.

Ở đây, vấn đề của tôi là khi tôi thay đổi tệp _config.yml, với sửa đổi đường dẫn, .md không được tạo lại và do đó đường dẫn không bị thay đổi.

Để làm cho nó hoạt động, tôi phải xóa thủ công .md trong _source rồi chạy lại hàm jekyll().

Về hình ảnh, chúng được biên dịch thành 64 hình ảnh khi tôi sử dụng rmarkdown mà không có bộ nhớ cache.

Với bộ nhớ cache, đan sẽ tạo hình ảnh trong một thư mục.

Các vấn đề liên quan