Книтр игнорируя фиг.пос?
Я пытаюсь вставить рисунок в документ RMarkdown, но у меня возникают проблемы с его отображением в нужном месте. На рисунке ниже показана проблема: при использовании подписи к рисунку рисунок появляется в верхней части страницы, а не под соответствующим абзацем в документе.
Вот код для этого минимального рабочего примера:
---
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.
А вот соответствующая часть вывода LaTeX; обратите внимание, что fig.pos
опция игнорируется:
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.
Моя установка описана ниже. Я почти уверен, что это работало в предыдущей версии knitr, но у меня нет информации о том, какая версия могла бы быть.
> 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
2 ответа
Вариант чанка fig.pos
используется только тогда, когда knitr считает, что должен записать LaTeX figure
среда вместо чистой уценки ![]()
и пишет LaTeX только когда подпись к рисунку (fig.cap
), и хотя бы один из этих параметров был указан: fig.align
, out.width
, out.extra
, Если вы хотите заставить knitr написать код LaTeX для цифр и использовать fig.pos
Вы можете установить опцию чанка out.extra = ''
,
Я знаю, что на него уже ответил Yihui Xie, но у меня есть альтернативное решение, которое избавляет от необходимости включать out.extra = ''
или любой другой вариант, который был дан, но также не влияющий на рисунки, которые отображаются без подписей.
Просто добавьте пакет из латекса 'float'
и использовать \floatplacement{figure}{H}
чтобы каждый рисунок с подписью отображался в правильном порядке в тексте, как вы хотели. В качестве альтернативы он может быть добавлен к .tex
Этот файл используется, когда RMarkdown вяжет PDF-файл, но я довольно новичок в этом, и у меня не было времени самостоятельно изучить этот вариант.
Я нашел это исправление, посмотрев на .tex
файл в тезисном пакете от Chestar Ismay
Это довольно легко исправить, просто добавив три строки в YAML. У меня недостаточно репутации, чтобы опубликовать снимок экрана, но вы можете просто скопировать то, что я сделал, и попробовать сами!
---
title: "Untitled"
author: "Author"
date: "27 February 2017"
header-includes: #allows you to add in your own Latex packages
- \usepackage{float} #use the 'float' package
- \floatplacement{figure}{H} #make every figure with caption = h
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.