How to hold figure position with figure caption in pdf output of knitr?

Bangyou picture Bangyou · Apr 17, 2015 · Viewed 51.3k times · Source

I am using knitr (1.9.5 and 1.9.17) and rmarkdown (0.5.3.1), and would like to hold figure position in the pdf output. The generated pdf file is working fine when chunk option fig.pos="H" is used.

However, the figure position is not hold when fig_caption: yes is set in the yaml header.

How should I fix this problem? Thanks for any suggestions.

EDIT:

After learning the float environment of Latex. I add float package into header.

\usepackage{float}

But the generated tex file always use htbp in the figure environment regard to any fig.pos options are used. After manually changing htbp to H, positions of all figures are hold.

This is my example of rmd file:

---
title: "Untitled"
output:
  pdf_document:
    fig_caption: yes
    includes:
        in_header: mystyles.sty
---

# Section 1


Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.


```{r fig1, echo=FALSE, fig.height=8.5, fig.pos="H"}
plot(cars)
```

# Section 2

More test

```{r fig2, echo=FALSE, fig.height=8.5, fig.pos="H"}
plot(cars)
```

# Section 3

```{r fig3, echo=FALSE, fig.height=8.5, fig.pos="H"}
plot(cars)
```

More test

Answer

user9112767 picture user9112767 · Jul 31, 2018

For me adding the float package and then \floatplacement{figure}{H} in YAML solved the issue like :

---
title: "test"
date: "`r Sys.Date()`"
output: 
  pdf_document :
    keep_tex: true
    number_sections: true
header-includes:
 \usepackage{booktabs}
 \usepackage{longtable}
 \usepackage{array}
 \usepackage{multirow}
 \usepackage[table]{xcolor}
 \usepackage{wrapfig}
 \usepackage{float}
 \floatplacement{figure}{H}
---