51

Knitr と pandoc を使用して PDF に変換するときに、プロットの位置を制御しようとしています。私の .Rmd ファイルは次のようになります。

# My report

Some text some text some text some text some text some text some text some text some text


```{r myplot, echo=FALSE, fig.pos="placeHere", results='hide'}

library(ggplot2)

ggplot(mtcars, aes(mpg, drat)) + geom_point()

```

Some text some text some text some text some text some text some text some text some text

\usepackage{graphicx}
\begin{figure}[placeHere]
  \centering
    \includegraphics[width=0.5\textwidth]{placeHere}
\end{figure}

Some text some text some text some text some text some text some text some text some text

ここで提供されている関数を使用して PDF に変換しています: http://quantifyingmemory.blogspot.co.uk/2013/02/reproducible-research-with-r-knitr.html

2 番目と 3 番目のテキスト ブロックの間にプロットを配置するにはどうすればよいですか? ラテックスコードは現在のところ機能していません。

編集:これは私が今しようとしているものです。

# My report

   ```{r setup, include=FALSE}
# set global chunk options
opts_chunk$set(cache=FALSE)
library(ggplot2)
```

```{r, echo=FALSE, fig.height=3}

ggplot(mtcars, aes(disp, hp)) + geom_point()


```



Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 

Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 


Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 


Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 


```{r, echo=FALSE, fig.height=3}



ggplot(mtcars, aes(vs, am)) + geom_point()


```



Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 

Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 


Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 


```{r, echo=FALSE, fig.height=6}



ggplot(mtcars, aes(disp, cyl)) + geom_point()

```


```{r, echo=FALSE, fig.height=6}

ggplot(mtcars, aes(hp, qsec)) + geom_point()


```


Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 




```{r, echo=FALSE, fig.height=3}

ggplot(mtcars, aes(hp, wt)) + geom_point()

```



Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 



```{r, echo=FALSE, fig.height=5}

ggplot(mtcars, aes(mpg, drat)) + geom_point()

```




Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text Some textSome text Some text Some text 
4

8 に答える 8

30

pandocMarkdown 文書を LaTeX に変換するときに図のフローティング オプションを設定するためのそのようなオプションは知りません。シンプルさを理由に Markdown を選択した場合は、pandoc. 結論: Markdown は LaTeX ではありません。LaTeX ではなく HTML 用に設計されています。

2 つの方法:

  1. Rmd (R Markdown) の代わりに Rnw 構文 (R + LaTeX) を使用します ()。その後、プリアンブルのfig.pos='H'後にチャンク オプションを使用できます。\usepackage{float}この場合、LaTeX の全機能があり、pandoc は関与しません。

  2. pandoc によって生成された LaTeX ドキュメントをハッキングします。たとえば、次のようなものです。

    library(knitr)
    knit('foo.Rmd')  # gives foo.md
    pandoc('foo.md', format='latex')  # gives foo.tex
    x = readLines('foo.tex')
    # insert the float package
    x = sub('(\\\\begin\\{document\\})', '\\\\usepackage{float}\n\\1', x)
    # add the H option for all figures
    x = gsub('(\\\\begin\\{figure\\})', '\\1[H]', x)
    # write the processed tex file back
    writeLines(x, 'foo.tex')
    # compile to pdf
    tools::texi2pdf('foo.tex')  # gives foo.pdf
    

これらのソリューションが気に入らない場合は、Github で pandocする新しい機能をリクエストすることを検討してから、座って待ってください。

于 2013-07-15T06:57:42.987 に答える
0

これはあなたが求めているものですか:

```{r setup, include=FALSE}
# set global chunk options
opts_chunk$set(cache=FALSE)
library(ggplot2)
```

# My report

Some text some text some text some text some text some text some text some text some text

Some text some text some text some text some text some text some text some text some text

```{r myplot, echo=FALSE}

ggplot(mtcars, aes(mpg, drat)) + geom_point()

```

Some text some text some text some text some text some text some text some text some text
于 2013-05-22T00:15:57.580 に答える
0

解決策はそれほど単純ではありません。他の誰かが合理化できるかもしれません。

基本的な手順。(Windows7)

  1. fig.pos="H"グローバルに、または個々のチャンクごとに、引数を Knitr オプションに追加できます。大文字の H に注意してください。これにより、latexは、ファイル内で呼び出された正確Rmdな場所に Figure float を配置するように指示されます。

  2. ただし、これにはパッケージをラテックスで使用する必要があります。これは、pandoc が pdf ファイルの作成に使用するテンプレートで指定できます。これを行うには、次の行を追加します\usepackage{float}

  3. ただし、最初に変更する現在のテンプレート ファイルを見つける必要があります。これはどこにも見つかりませんでしたが、次のコマンドを使用して、pandoc を使用してテンプレートの内容をコンソールに出力できます。pandoc -D latex

  4. このテンプレート コードをコピーして空のテキスト ファイルに貼り付けます。

  5. 次の行を追加します。\usepackage{float}

  6. "default.latex"などのディレクトリにファイル名を付けて保存します。C:\Users\YOURNAME\pandoc\templates

  7. R でパンダーを使用している場合--data-dir=C:/Users/YOURNAME/pandoc/templates"は、pandoc への呼び出しにオプションを追加します。Pandoc.convert("my file.md", format="pdf", options=c("--data-dir=C:/Users/YOURNAME/pandoc/templates"))

これがうまくいくことを願っています。

于 2013-05-22T11:13:36.210 に答える