2014-07-09 15 views
5

Vorrei mettere la didascalia sopra la figura usando knitr in texmaker. I know that this question has already been asked, e capisco che la soluzione suggerita finora è quello di utilizzare:didascalia sopra figura usando knitr

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

Ma in questo modo non posso mostrare il codice (dal echo=FALSE). E se scelgo invece echo=TRUE, quello che ottengo è la didascalia, quindi i codici e quindi il grafico, che non è anche quello che voglio. Quello che mi piacerebbe mostrare è il codice per R, (e) il grafico tracciato con quel codice R, con la didascalia sopra il il grafico.

risposta

2

Prova utilizzando il gancio:

<<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

Grazie mille per la risposta! Ma ho cercato di usare esattamente il tuo esempio e ho ricevuto un messaggio di errore da Texmaker, che diceva che "oggetto" knit_hooks "non trovato". Sono davvero nuovo con texmaker, knitr e hook. Hai un'idea del perché questo non ha funzionato per me? – Serena

+0

@Serena inserisce 'library (knitr)' all'inizio del primo blocco. – kohske

+0

Molte grazie kohske! – Serena

1

Questa è una versione leggermente modificata della risposta di kohske, che include \begin{figure} e aggiunge \label. Si noti tuttavia che contiene 5 righe, mentre il codice original contiene più di 150 righe, quindi dovrebbe essere utilizzato in impostazioni molto limitate.

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) 
Problemi correlati