файл изображения не найден по URL-адресу в r-markdown

Раньше я мог отображать изображения в r-markdown, используя URL-адрес со следующим кодом ![](https://assets-cdn.github.com/images/modules/logos_page/GitHub-Mark), но я получаю ошибку «файл не найден» ! LaTeX Error: File https://assets-cdn.github.com/images/modules/logos_page/GitHub-Mark' not found. Я пропускаю пакеты? Этот код все еще работает в некоторых блестящих приложениях, опубликованных несколько месяцев назад.

Ниже рабочий файл r-markdown:

---
title: "Test"
header-includes:
    - \usepackage{graphicx}
output:
  pdf_document:
    latex_engine: xelatex
    number_sections: yes
    keep_tex: yes
classoption: article
papersize: A4
fontsize: 10pt
geometry: margin=0.9in
linestretch: 1.15
---
## R Markdown
![](https://assets-cdn.github.com/images/modules/logos_page/GitHub-Mark)

person Philipp R    schedule 28.09.2018    source источник
comment
URL-адрес изображения возвращает 404. Добавьте отсутствующий .png, и вы должны стать золотым.   -  person tarleb    schedule 28.09.2018
comment
Спасибо за быстрый ответ. R-markdown не требует типа файла. К сожалению, это не имеет значения.   -  person Philipp R    schedule 28.09.2018
comment
У меня не установлен TeX, поэтому я не могу протестировать вывод в формате pdf, но, по крайней мере, с выводом в формате html, добавление .png решает проблему.   -  person divibisan    schedule 28.09.2018
comment
@PhilippR Ах да, я могу это воспроизвести. См. ‹stackoverflow.com/q/51287734/2425163› для ответа. (Кроме того, технически только пакет graphicx не требует типа файла.)   -  person tarleb    schedule 28.09.2018
comment
Хорошо, это указывает мне правильное направление. Что меня поражает, так это то, что у меня работает код, который хорошо работает с приведенным выше синтаксисом. Я просматриваю изображения, чтобы загрузить их для отчета. Не уверен, как это будет работать в блестящих приложениях, размещенных в облаке.   -  person Philipp R    schedule 28.09.2018


Ответы (1)


Пакет LaTeX graphicx не включает http-клиент, поэтому он не может получить изображение из Интернета. Однако большую часть работы по преобразованию из Markdown в LaTeX выполняет pandoc, который может получить это изображение. Нужно просто указать pandoc хранить все изображения локально, передав опцию --extract-media. Это позволяет LaTeX находить изображения при вызове RMarkdown.

---
output:
  pdf_document:
    pandoc_args: ["--extract-media", "."]
---

В приведенном выше примере все изображения будут храниться в том же каталоге, что и файл Rmd. Файлы будут называться с использованием хэшей SHA1, поэтому вместо этого вы можете использовать отдельный каталог для этих файлов.

person tarleb    schedule 30.09.2018
comment
Спасибо, это отлично работает для локальных файлов, но работает ли это в shinyapps? Был ли этот параметр по умолчанию в предыдущих установках pandoc? Я все еще пытаюсь понять, как мои старые приложения все еще работают без опции в обычном rmarkdown-›xelatex. - person Philipp R; 02.10.2018
comment
Я не уверен, но подозреваю, что раньше это работало, потому что pandoc напрямую создавал PDF, тогда как R Markdown теперь будет использовать pandoc для генерации LaTeX и выполнять окончательные вызовы XeLaTeX самостоятельно. В примечаниях к выпуску R Markdown 1.1 (~ 2016 г.) упоминаются изменения в способе работы keep_tex, которые могли вызвать изменение поведения. - person tarleb; 03.10.2018
comment
Спасибо. Я создаю PDF-файлы в xelatex, и хотя это работает локально, я не могу заставить изображения работать в моем блестящем приложении. Я использую этот подход для создания pdf из блестящих данных приложения. Как сослаться на рабочий каталог extracted-media в блестящем? - person Philipp R; 04.10.2018
comment
Я почти ничего не знаю о блеске, извините. Может стоит новый вопрос? - person tarleb; 04.10.2018
comment
Новый вопрос о веб-изображениях в LaTex PDF в Shinyapps опубликован здесь . - person Philipp R; 04.10.2018