Подтвердить что ты не робот

Как сделать рисунок в Rmarkdown?

Я думаю о написании своей диссертации с rmarkdown и латексом. Однако я понимаю, как все это работает, когда я пытаюсь добавить к тексту фигуру (не R-график) и рендерить ее в pdf, заголовок и текстовая ссылка исчезают.

Вот фрагмент кода, который я использую для добавления рисунка:

---
title: "Untitled"
output: pdf_document
---

see figure \ref{fig1}.

![picture \label{fig1}](figure1.png)

Вот что создает knitr:

Вот что создает pandoc:

Вопрос: Как сделать подписи к рисункам и ссылки в тексте на эти рисунки в Rmarkdown, которые будут отображаться при рендеринге в pdf?

ИЛИ

Как мне сообщить Pandoc, что такое Rmarkdown, чтобы он отображал R-код и графики?

4b9b3361

Ответ 1

Пожалуйста, просмотрите документацию R Markdown для PDF-выход и, в частности, найдите fig_caption. Фиксированные заголовки по умолчанию отключены в R Markdown, и вы должны включить их (fig_caption: true). Вы также можете найти эту настройку с помощью кнопки переключения на панели инструментов RStudio IDE.

Ответ 2

Обновить: проверьте https://github.com/yihui/knitr/issues/1063.

Вопрос: Как сделать титры рисунков и текстовые ссылки на эти цифры в Rmarkdown, которые будут отображаться при визуализации в pdf?

Чтобы получить перекрестную ссылку в PDF файле от LaTeX, вам нужно запустить LaTeX более одного раза. Некоторые LaTeX IDE делают это для вас.

knitr только запускает LaTeX один раз, и именно по этой причине вы получаете только ??. Чтобы подтвердить, что это была проблема, я побежал

library(knitr)
knitr()

в R, который возвратил

see figure \ref{fig1}.

\begin{figure}[htbp]
\centering
\includegraphics{imagem.jpg}
\caption{picture \label{fig1}}
\end{figure}

который является допустимым кодом LaTeX.

Как сообщить pandoc, что такое Rmarkdown, чтобы он отображал R-код и графики?

Pandoc только понимает Markdown (не RMarkdown). Сначала вам нужно вызвать knitr, чтобы сгенерировать Markdown из RMarkdown и после вызова Pandoc преобразовать Markdown в LaTeX.

Ответ 3

Я нашел очень полезное решение здесь.

Сначала включите следующий фрагмент:

```{r functions, include=FALSE}
# A function for captioning and referencing images
fig <- local({
    i <- 0
    ref <- list()
    list(
        cap=function(refName, text) {
            i <<- i + 1
            ref[[refName]] <<- i
            paste("Figure ", i, ": ", text, sep="")
        },
        ref=function(refName) {
            ref[[refName]]
        })
})
``` 

После этого мы можем добавить заголовок рисунка/таблицы в параметрах фрагмента рисунка, например:

```{r, fig.cap=paste("Your caption.")}
  • Посмотрите, что fig.cap работает лучше с paste.