Knitr(1.9.5および1.9.17)とrmarkdown(0.5.3.1)を使用していますが、pdf出力で図の位置を保持したいと思います。生成されたPDFファイルは、チャンクオプションfig.pos="H"
使用されている。
ただし、fig_caption: yes
はyamlヘッダーに設定されます。
この問題を修正するにはどうすればよいですか?提案をありがとう。
編集:
ラテックスのフロート環境を学習した後。 float
パッケージをヘッダーに追加します。
\usepackage{float}
ただし、生成されたtexファイルは、htbp
環境でfigure
を使用し、fig.pos
オプションが使用されます。 htbp
をH
に手動で変更すると、すべての図の位置が保持されます。
これはrmdファイルの私の例です:
---
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
Yihuiが答えで言及したように( PDF with knitrおよびpandocに変換するときのマークダウンの図の位置 )、mardownからのフォーマットについてあまり期待することはできません。問題は、Rスクリプトをいくつか書いてhtbp
をH
に置き換えるだけです。
Knitrパッケージのknit
と比較して、rmarkdownのrender
がtex
ファイルをエクスポートする方がよいことがわかりました。 rmarkdownファイルのyamlヘッダーにkeep_tex: yes
を追加することを忘れないでください。
library(rmarkdown)
render('filepath.Rmd')
x <- readLines('filepath.tex')
pos <- grep('begin\\{figure\\}\\[htbp\\]', x)
x[pos] <- gsub('htbp', 'H', x[pos])
writeLines(x, 'filepath.tex')
tools::texi2pdf('filepath.tex', clean = TRUE) # gives foo.pdf
file.remove('filepath.tex')
アンドリューが指摘したように、このfig.pos
は一括では機能しませんが、グローバルオプションに配置されている場合は機能します。
```{r global_options, include=FALSE}
knitr::opts_chunk$set(fig.pos = 'H')
```
EDIT:明らかに動作するために使用される上記の\usepackage{float}
プリアンブル内:
header-includes:
\usepackage{float}
here もご覧ください。
私にとっては、float
パッケージを追加してから\floatplacement{figure}{H}
YAMLで次のような問題を解決しました:
---
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}
---
Updateこのより良い解決策を見てください here 。 (以下の問題の要約はまだ良いですが、より良い解決策へのリンクをたどってください)。
RStudioでのいくつかのテストを要約するには
Knitrチャンク引数fig.pos = "H"は、fig_caption: yes
がyamlヘッダーにない限り機能します。
生成された.texの各図は次のようになります
\subsection{my_section}\label{my_section}
\includegraphics{path_to_fig.pdf}
ただし、fig_caption: yes
がyamlヘッダーにある場合、.texは次のようになります
\subsection{my_section}\label{my_section}
\begin{figure}[htbp]
\centering
\includegraphics{path_to_fig.pdf}
\caption{}
\end{figure}
fig.pos = "H"
は使用されていませんが、代わりに"htbp"
があります。
RStudioを使用したこの回避策:
プット
fig_caption: yes
keep_tex: yes
同様にyamlで
header-includes: \usepackage{float}
次に、生成された.texファイルで[htbp]
を検索して[H]
に置き換えます
次に、RStudioで.texファイルを開き、[Compile PDF]ボタンを使用します。
例.Rmd
---
title: "Testing fig placement with captions"
author: "Andrew Dolman"
date: "1 September 2015"
output:
pdf_document:
fig_caption: yes
keep_tex: yes
header-includes: \usepackage{float}
---
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>.
When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
```{r}
summary(cars)
```
You can also embed plots, for example:
```{r, echo=FALSE, fig.pos="H"}
plot(cars)
```
Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.
```{r, echo=FALSE, fig.pos="H"}
plot(cars)
```
私のために働いたオプション:
先頭に置かれた.tex内で_\usepackage{float}
_。
Rmdの先頭:knitr::opts_chunk$set(fig.pos = 'H')
。 H
は大文字です)。
そして、画像を含むすべてのチャンク:_fig.cap="lorem blabla"
_および_out.extra=''
_(パラメーター値=空の文字列)。
No定義する必要がある:yamlで_fig_caption: yes
_および_keep_tex: yes
_.
これらのオプションは、_include_graphics
_およびRコードによって生成されたプロットのいずれかのために、画像の位置を保持します。
bookdown
環境でそれらを使用し、期待どおりにpdfとhtmlを生成しました:)
PDFに変換するときのマークダウンの図の位置 からのコードは、私を助け、他の誰かがそれを有用であると思うのを助けます。
---
title: "Example"
author: "Martin"
output: pdf_document
---
```{r}
knitr::knit_hooks$set(plot = function(x, options) {
knitr::hook_plot_tex(x, options)
})
```
```{r myplot, echo=FALSE, results='hide', fig.cap='Test', fig.pos='h'}
library(ggplot2)
ggplot(mtcars, aes(mpg, drat)) + geom_point()
```
他の誰かがこのスレッドに出くわした場合、小さなケース「h」を使用する必要があり、Rバージョン3.5.3およびlatex 2018で機能しました。
```{r, echo=FALSE, fig.pos="h"}
plot(cars)
```