5

よくある問題のように聞こえますが、明らかなトリックは見つかりませんでした。以下のknitrRnwファイルについて考えてみます。

\documentclass[twocolumn, 12pt]{article}
\usepackage{graphicx}
\begin{document}
%\SweaveOpts{dev=pdf, fig.align=center}
\begin{figure*}
<<aaa, fig.width=8, fig.height=5, fig.show=hold>>=
plot(1,1)
@
\end{figure*}
\end{document}

{figure*}LaTeX環境を使用して、この幅の広い図を2つの列にまたがらせたいと思います。そのためのフックはありますか?

編集:チャンクをラップするとfigure*、次の出力が得られます。

ここに画像の説明を入力してください

4

3 に答える 3

7

2 つの事実:

  1. knitrすべてにアクセスできるようにするため、LaTeX のトリックは不要なことがよくあります。
  2. チャンクの結果をラップできるchunkフックがあります。

単純な解決策は次のとおりです。

knit_hooks$set(chunk = function(x, options) {
                       sprintf('\\begin{figure*}\n%s\n\\end{figure*}', x)
})

残りの作業はあなたに任せて、 の詳細を処理しますoptions(たとえばoptions$fig.keep == 'none'、出力を でラップしない場合figure*)。フックがどのように機能するかをよりよく知るために、LaTeXのデフォルトのchunkフックがどのように定義されているかを確認したい場合があります。knitrchunk

ただし、この場合、ドキュメントを自動的に作成するのではなく、自分で LaTeX コードを記述する傾向があります。を取得した後、 andfigure*について考え始めるかもしれません(難しいことではありませんが、LaTeX でそれらを見たいと思っています)。\caption{}\label{}

于 2012-01-24T02:26:08.797 に答える
2

どのようにknitrするかはわかりませんが、Sweave(および基本的なlatex)には、実際にはトリックがあります。Rコードでpdfファイルを生成し、標準\includegraphicsを使用してそれを取り込みます。

だからこれで:

\documentclass[twocolumn, 12pt]{article}
\usepackage{graphicx}
\begin{document}
%\SweaveOpts{dev=pdf}

<<aaa,fig=FALSE,print=FALSE,echo=FALSE>>=
pdf("mychart.pdf", width=6, height=3)
set.seed(42)
plot(cumsum(rnorm(100)), type='l', main="yet another random walk")
invisible(dev.off())
@

\begin{figure*}
  \includegraphics{mychart.pdf}
\end{figure*}

\end{document}

私は以下の文書を手に入れました(それから私はそれをpdfからpngに変換しました):

ここに画像の説明を入力してください

于 2012-01-23T23:17:58.570 に答える