서로 다른 두 위치에서 뜨개질을 할 때 Rmarkdown에서 상대 경로 사용

Nov 20 2020

내 문제는 상대 링크를 사용하고 "컴파일"(편직)하는 것입니다.

RMarkdown을 사용하여 책을 쓰고 있습니다. 파일이 상대적으로 크기 때문에 서브 파일과 디렉토리로 분할해야합니다.

챕터 (chap1, chap2, ...)에 대한 링크 만 포함하는 마스터 파일이 있습니다. 각 장에 대한 파일이 있으며 각 장에는 일부 그림에 대한 참조가 필요합니다 (그림 1, ...).

masterfile.Rmd와 chap1.Rmd를 서로 독립적으로 편성하여 장에 대해 하나의 파일을, 전체 책에 대해 하나의 파일을 얻을 수 있기를 바랍니다.

다음은 내 파일이 구성되는 방식 (MVE)입니다. 디렉토리는 대문자로 표시됩니다.

  • 뿌리
    • masterfile.Rmd
    • 피규어
      • fig1.pdf
      • fig2.pdf
      • chap1.Rmd
      • chap2.Rmd
      • ...

masterfile.Rmd의 코드는 다음과 같습니다.

{r child = '/chapters/chap1.Rmd'}

chap1.Rmd의 코드는 다음과 같습니다.

![](../figures/fig1.pdf)

내가에서 뜨면 chap1.Rmd모든 것이 괜찮습니다. 에서 뜨면 masterfile다음과 같은 메시지가 나타납니다.

[경고] 리소스 '../figures/fig1.pdf'를 가져올 수 없음 : PandocResourceNotFound "../figures/fig1.pdf"

fig1.pdf찾을 수없는 것 같습니다 . 이것은 마스터 파일의 include 문이 코드를 "복사" chap1.Rmd하고 ROOT디렉토리 (디렉토리가 아님)에서 "실행"하기 CHAPTERS때문에 ".."이 존재하지 않는 위치 (ROOT 이전)에 드라이브를 수행하기 때문이라고 생각합니다. 에서 니트 masterfile.

내가 설정을 변경하고 쓸 수 ![](/figures/fig1.pdf)chap1.Rmd파일. 에서 뜨개질을 할 때 잘 작동 masterfile하지만 더 이상에서는 작동 하지 않습니다 chap1.Rmd.

둘 다 갖는 방법을 알고 있습니까?

답변

1 DanielJachetta Nov 20 2020 at 22:37

RMarkdown 커뮤니티에 오신 것을 환영합니다!

KnitR, Rmd 및 pandoc 인터 워킹으로 인해 이것은 생각만큼 쉬운 해결책은 아니지만 디렉토리 재구성은 거의 쉬울 것입니다.

Rmarkdown 작가의 최신 책을 보더라도 RMarkdown Cookbook여기 . 그들은 ROOT디렉토리 에 모든 챕터를 가지고 있으며 이미지 (그리고 아마도 그림)에 대한 하위 디렉토리 만 가지고 있습니다.

자원:

1. 다른 유사한 질문

2. Github 옵션 knitr 질문

3. Rstudio 커뮤니티의 유사한 질문

tarleb Nov 21 2020 at 18:24

Lua 필터 기능을 사용 하여 메인 파일을 편직 할 때 이미지 경로를 다시 쓸 수 있습니다. 예

function Image (img)
  img.src = img.src:gsub('^%.%./', './')
  return img
end

이렇게하면 경로 ../figures/fig1.pdf./figures/fig1.pdf.

코드를 파일에 쓰고 추가를 통해 호출하는 코드를 사용하십시오 pandoc_args(메인 파일에서만).

---
output:
  html_document:
    pandoc_args: ["--lua-filter=filter.lua"]
---