2014-07-09 25 views
5

Resimdeki resmin üst tarafını, metin oluşturucudaki knitr kullanarak yerleştirmek istiyorum.resim yazısı knitr kullanarak şekil

\begin{figure} 
\caption{This is a caption above the figure} 
<<a-plot, echo=FALSE>>= 
plot(1) 
@ 
\end{figure} 

Ama bu şekilde ben (echo=FALSE beri) kodu gösteremez: I know that this question has already been asked ve ben çözüm şimdiye kadar önerilen anlamak kullanmaktır. Ve bunun yerine echo=TRUE'u seçtiğimde, aldığım şey resim yazısı, sonra kodlar ve daha sonra istediğim gibi olmayan grafiktir. Göstermek istediğim,, (ve kodları) için10 kodunun numaralı resim yazısı ile kodunun grafiğidir. kanca kullanılarak

cevap

2

Dene:

<<include=FALSE>>= 
f <- function(x, options) { 
    paste("\\end{kframe}\n", 
     "\\caption{", options$capT, "}\n", 
     hook_plot_tex(x, options), 
     "\n\\begin{kframe}", sep = "") 
} 
knit_hooks$set(plot = f) 
@ 

\begin{figure} 
<<a-plot, echo=TRUE, capT="cap, cap, and cap">>= 
plot(1) 
@ 
\end{figure} 

enter image description here

+0

Cevabınız için çok teşekkürler! Ama ben tam olarak senin örneğini kullanmaya çalıştım ve Texmaker'dan "object 'knit_hooks' bulunamadı" diyerek bir hata mesajı aldım. Ben texmaker, knitr ve hook ile gerçekten yeniyim. Bunun benim için neden çalışmadığına dair bir fikrin var mı? – Serena

+0

@Serena, ilk yığının başlangıcında 'kitaplık (knitr) 'yi ekler. – kohske

+0

Çok teşekkürler kohske! – Serena

1

Bu \begin{figure} içerir ve \label ekler Kohske cevabı, bir slighty değiştirilmiş versiyonu. Bununla birlikte, 5 satır içerdiğine dikkat edin, original kodu ise 150'den fazla satır içerir, bu nedenle çok sınırlı ayarlarda kullanılmalıdır.

f <- function(x, options) { 
    lab <- paste0(options$fig.lp, options$label) 
    paste("\\end{kframe}\n", 
     "\\begin{figure}\n\\caption{", options$capT, "}\\label{", lab,"}\n", 
     hook_plot_tex(x, options), 
     "\\end{figure}\n\n\\begin{kframe}", sep = "") 
} 
knit_hooks$set(plot = f)