2014-09-25 42 views
2

我正在生成一個帶有Rmarkdown的PDF文檔,其中我想手動定義圖號替換字幕的自動編號inrmarkdown/knitr/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 

我的問題,因此是:

是否有可能在fi前自動生成「圖X」在使用rmarkdown/knitr生成PDF時使用gure caption?

+1

圖26如何生成?這不是默認的,也就是說,如果我將代碼複製並粘貼到新的rmarkdown中,我不會得到任何自動編號。我假設你有一些額外的knitr選項設置在這樣做的地方。 – rawr 2014-09-25 14:04:10

+0

是的,這是正確的。我添加了'fig_caption:是';否則我不能爲我的數字添加標題。 – 2014-09-26 14:37:15

回答

2

鏈接由kohske發佈的基礎上,我終於找到了解決方法,即根據模板定義圖號

圖#部分#圖
例如:圖3.1

這不是我最初想做的事情(即,刪除數字的自動編號),但它是一個很好的解決方法。

怎麼辦呢

首先,創建位於同一目錄作爲您的rmarkdown文件「mystyle.sty」文件。在這個mystyle.sty文件,把下面的代碼行:

\usepackage{chngcntr} 

然後,在你的rmarkdown文件的標題,添加以下信息:

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

這樣做的目的是使確定rmarkdown要求膠乳使用一個包,允許你創建一個合適的自動編號。

的下一個步驟是在所述文檔的開頭添加此:

\counterwithin{figure}{section} 

這樣的數字將在每個區段編號。

然後,您可以手動定義「節」和「人物」與\setcounter{section}{#}

其實,你所要做的事情的價值是簡單地把兩個以下行,在每節的開頭:

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

如果您在第3節中,請將更改爲\setcounter{section}{3}

而且這個工作正常;例如我的第5節的圖3:

Proper caption

然而,那裏仍留有另一個問題:雖然這解決了針織PDF的問題,這會不會對HTML工作。如果您使用相同的文檔來生成PDF和HTML文件,那麼您的PDF將具有良好的數字,並且您的HTML將不會有任何數字。我還沒有想出如何在HTML中做同樣的事情。

0

您可以使用:

header-includes: 
\renewcommand{\caption}{Figure} 

在YAML頭。然後,在代碼塊中,使用:

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