替换inrmarkdown / knitr / pdf的字幕自动编号

时间:2014-09-25 12:43:56

标签: r knitr r-markdown

我正在使用Rmarkdown生成PDF文档,我想在其中手动定义图号

以下是一个块的示例:

```{r chunk26, fig.cap = "Fig. 5.3 My figure caption"}
plot(1, 1)
```

我使用特殊编号来跟踪文档的章节。

问题在于,当我编织PDF时,"图X:"在每个标题之前自动添加。结果,我的人物标题看起来像这个例子:

Example of problem with the figure captions

注意的 我在rmarkdown文件的开头使用了以下参数:

output:
  pdf_document:
    fig_caption: yes

我的问题是:

是否可以删除自动生成"图X"在图标题之前,使用rmarkdown / knitr生成PDF?

3 个答案:

答案 0 :(得分:2)

根据kohske发布的链接,我终于设法找到了一种解决方法,即根据模板定义图号

  

图#section。#figure
  例如:图3.1

这不是我最初想做的事情(即删除数字的自动编号),但这是一个很好的解决方法。

怎么做

首先,创建一个与您的rmarkdown文件位于同一目录中的“mystyle.sty”文件。在这个mystyle.sty文件中,输入以下代码行:

\usepackage{chngcntr}

然后,在您的rmarkdown文件的标题中,添加以下信息:

output:
  pdf_document:
    fig_caption: yes
    includes:
        in_header: mystyle.sty

这样做的目的是确保rmarkdown要求latex使用包来创建适当的自动编号。

下一步是在文档的开头添加:

\counterwithin{figure}{section}

所以这些数字将在每个部分编号。

然后,您可以使用\setcounter{section}{#}

手动定义“section”和“figure”的值

实际上,你要做的只是将以下两行放在每个部分的开头:

\setcounter{section}{1}
\setcounter{figure}{0}

如果您在第3部分,请将\setcounter{section}{1}更改为\setcounter{section}{3}

这很正常;例如,我的第5部分的图3是:

Proper caption

然而,还有另一个问题:虽然这解决了编织PDF问题,但这对HTML不起作用。如果您使用同一文档生成PDF和HTML文件,那么您的PDF将有很好的数字,并且您的HTML将没有任何数字。我还是没想出如何在HTML中做同样的事情。

答案 1 :(得分:1)

这很棘手,但您可以通过以下方式执行此操作:

\setcounter{figure}{25}
```{r, fig.cap="hoge"}
plot(1)
```

如果您想获得连续编号,那么这里有一些信息: https://tex.stackexchange.com/questions/28333/continuous-v-per-chapter-section-numbering-of-figures-tables-and-other-docume

答案 2 :(得分:0)

您可以使用:

```{r, fig.cap=" 5.3: Response functions"}
...
```

在YAML标题中。然后,在代码块中,使用:

n<0