Knitr ignoring fig.pos?
figure, knitr, r, r-markdown
Solution
The chunk option `fig.pos` is only used when knitr thinks it has to write out a LaTeX `figure` environment instead of pure Markdown `![]()`, and it writes LaTeX only when a figure caption (`fig.cap`) is specified, and at least one of these options has been specified: `fig.align`, `out.width`, `out.extra`. If you want to force knitr to write LaTeX code for figures and use `fig.pos`, you may set the chunk option `out.extra = ''`.
Problem
I am trying to insert a figure in a RMarkdown document but am having trouble getting it to appear in the right place. The figure below shows the problem: when using a figure caption, the figure appears at the top of the page rather than below the relevant paragraph in the document. Here is the code for this minimum working example: ```` --- title: "Untitled" author: "Author" date: "27 February 2017" output: pdf_document: fig_cap: yes keep_tex: yes --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, fig.pos= "h") ``` ## R Markdown This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>. \newpage ## Including Plots You can also embed plots, for example: ```{r pressure, echo=FALSE, fig.cap = "Hello"} plot(pressure) ``` Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot. ```` And here is the relevant part of the LaTeX output; note that the `fig.pos` option is ignored: ``` You can also embed plots, for example: \begin{figure} \centering \includegraphics{test_files/figure-latex/pressure-1.pdf} \caption{Hello} \end{figure} Note that the \texttt{echo\ =\ FALSE} parameter was added to the code chunk to prevent printing of the R code that generated the plot. ``` My set-up is described below. I'm pretty sure this worked in previous version of knitr, but I don't have a note of which version that might have been. ``` > sessionInfo() R version 3.3.2 (2016-10-31) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows >= 8 x64 (build 9200) locale: [1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 [3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C [5] LC_TIME=English_United Kingdom.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached): [1] backports_1.0.5 magrittr_1.5 rprojroot_1.2 htmltools_0.3.5 tools_3.3.2 [6] yaml_2.1.14 Rcpp_0.12.9 stringi_1.1.2 rmarkdown_1.3 knitr_1.15.1 [11] stringr_1.2.0 digest_0.6.12 evaluate_0.10 ```