knitr - 上面的图标题

时间:2014-03-11 20:08:12

标签: r latex knitr

有没有办法让knitr将fig.cap移到图上方?我需要它们,以便当为某个表选择了图表列表的超链接时,它会导航到该图。现在标题和超链接目标位于底部,所以当选择时,只有标题显示在页面顶部,并且必须向上滚动才能看到图...相当愚蠢。

我当前代码的示例:

<<Race, fig.lp='fig:', fig=TRUE, eval=TRUE, echo=FALSE, dev='png', fig.pos='H', fig.width=8, fig.height=4, fig.cap='Race', fig.align='center', dpi=300>>=
b <- ggplot(melt(race.plot, id=c("Type"), variable.name="Race", value.name="Count"))
b + geom_bar(aes(Race, y=Count, fill=Race), position="dodge", stat="identity", alpha=0.7) + 
  ggtitle("Race") + xlab("") + ylab("Count") +
  facet_wrap(~Type, nrow=2, scale="free_y") +
  theme(plot.title=element_text(size=25), 
    axis.title=element_text(size=15), 
    axis.text.y=element_text(size=10),
    axis.text.x=element_blank(),
    axis.ticks.x=element_blank())
@

我知道有很多方法可以使用乳胶并将fig.cap单独留在knitr chunk中:

\begin{figure} 
\caption{This is a caption above the figure} 
<<a-plot, echo=FALSE>>= 
plot(1) 
@ 
\end{figure} 

大多数建议都是为了做到这一点,但是大约在2012年或2013年初。我想知道knitr的任何更改是否允许此功能。

我一直在使用knitr和xtable中的选项来控制输出中的大部分内容但是什么是共识?我应该尽可能避免这种情况,并尽可能在编织块之外使用乳胶选项吗?

1 个答案:

答案 0 :(得分:2)

也许为时已晚,但我认为Yihui回答了这个问题。

您可以更改所有数字的编织钩子,使标题高于图形。例如,这是.Rmd文档中的块的一个版本。如果你告诉knitr更改图的选项,让文档首先看,然后是实际的。

```{r setup}
library(knitr)
knit_hooks$set(plot = function(x, options) {
  paste('<figure><figcaption>', options$fig.cap, '</figcaption><img src="',
        opts_knit$get('base.url'), paste(x, collapse = '.'),
        '"></figure>',
        sep = '')
})
```