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

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

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

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

see figure ref{fig1}.

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

это то, что создает knitr:

это то, что создает pandoc:

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

или

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

3 ответов


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


обновление: пожалуйста, проверьте 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 для создания уценки из RMarkdown и после этого вызвать Pandoc для преобразования уценки в латекс.


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

во-первых, включите следующий кусок:

```{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.