如何在Rmarkdown中制作人物标题?

时间:2015-06-26 03:22:41

标签: knitr r-markdown pandoc

我正在考虑用rmarkdown和latex编写我的论文。然而,当我尝试在文本中添加一个图形(而不是R图)并将其渲染为pdf时,标题和文本引用会消失,我将了解它是如何工作的。

这是我用来添加数字的代码片段:

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

see figure \ref{fig1}.

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

这就是knitr创造的:

这就是pandoc创造的:

问题: 如何在渲染为pdf时显示Rmarkdown中的那些数字的图形标题和文本引用?

OR

如何告诉pandoc Rmarkdown是什么,以便呈现R代码和绘图?

3 个答案:

答案 0 :(得分:10)

请参阅PDF output的R Markdown文档,特别是查找fig_caption。 R Markdown中默认关闭图标题,您必须打开它们(fig_caption: true)。您也可以从RStudio IDE工具栏上的齿轮按钮找到此设置。

答案 1 :(得分:3)

更新:请检查https://github.com/yihui/knitr/issues/1063

  

问题:如何在渲染为pdf时显示Rmarkdown中的那些数字的图形标题和文本引用?

要获得LaTeX生成的PDF中的交叉引用,您需要多次运行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生成Markdown,然后调用Pandoc将Markdown转换为LaTeX。

答案 2 :(得分:1)

我刚刚找到了一个非常有用的解决方案here

首先,包括以下块:

```{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.效果更好