Почему Rmd не рендерится в PDF, в то время как HTML хорошо - PullRequest
3 голосов
/ 09 апреля 2019

Если я рендую следующий файл в html, все работает.Если я рендеринг в pdf, он выдает ошибку

выходной файл: test.knit.md!Ошибка LaTeX: Неизвестное расширение графики: .png? Raw = true.Fehler: не удалось скомпилировать test.tex.См. Test.log для получения дополнительной информации.

Причина в том, что Rmd переводится в

\begin{figure}
\centering
\includegraphics[width=4.16667in]{pics/myimage.png?raw=true}
\caption{Some text here.}
\end{figure}

в коде test.tex и выше, конечно, не имеет смысла.
Пример:

---
title: "Untitled"
author: "Myname"
date: "5 April 2019"
output:
  pdf_document:
    number_sections: yes
    toc: yes
    toc_depth: '2'
  html_document:
    keep_md: yes
    number_sections: yes
    toc: yes
    toc_depth: 2
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

text

![Some text here.](pics/myimage.png?raw=true){width=400px}

text

Мне нужен ?raw=TRUE для github, см. здесь .Вы также можете клонировать пример из здесь !

Редактировать : Я также попросил разработчиков здесь , потому что у меня есть чувство, что-то идетнеправильно с keep_md: yes ...

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Вы можете задать путь к изображению в выходном формате с помощью knitr::is_html_output(), например,

---
title: "Untitled"
author: "Myname"
date: "5 April 2019"
output:
  html_document:
    keep_md: yes
    number_sections: yes
    toc: yes
    toc_depth: 2
    self_contained: false
  pdf_document:
    number_sections: yes
    toc: yes
    toc_depth: '2'
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

text

```{r, echo=FALSE, results='asis'}
cat(
  '![Some text here.](pics/myimage.png',
  if (knitr::is_html_output()) '?raw=true',
  '){width=400px}',
  sep = ''
)
```

text
1 голос
/ 10 апреля 2019

Я бы использовал следующий обходной путь:

  1. В вашем .rmd удалить деталь ?raw=true.
  2. После вязания до html : прочитайте html-файл в R, замените .png на .png?raw=true и сохраните его снова:

Вы можете использовать следующий код:

html <- readLines("your-file.html")
html <- sapply(html, function(x) gsub(".png", ".png?raw=true", x))
writeLines(html, "your-file.html")

Например, у вас есть аннотация ?raw=true в вашем html-файле (где они принадлежат), а не в файле .tex.pdf), где они не имеют значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...