2011-09-21 1 views
7

Sweaving il seguente:Perché Sweave genera un errore sul codice LaTeX che è stato commentato?

\documentclass{article} 
\begin{document} 
<<>>= 
x <- 5 
y <- 10 
@ 
The value of $z$ is \\ 
%\Sexpr{z} 
\end{document} 

genera il seguente errore:

Error in eval(expr, envir, enclos) : object 'z' not found 
Calls: <Anonymous> -> Sweave -> <Anonymous> -> eval -> eval 
Execution halted 

Se \Sexpr{z} è commentata, perché è causa di un errore?

risposta

6

Questa risposta è un segnaposto per registrare ciò che ho imparato da solo. Ne accetterò volentieri uno migliore ...

Sweave non analizza il LaTeX, quindi valuterà qualsiasi \Sexpr, anche se è commentato. Quindi se hai assegnato un valore a z nel blocco codice, %\Sexpr{z} stamperebbe il valore di z. In modo divertente, \Sexpr{#z} sopprimerà la stampa del valore di z.

Ho anche rintracciato la discussione this (piuttosto vecchia) di questo problema in una mailing list.

+2

'%' è il carattere di commento per Tex, non per Sweave. '#' è il carattere di commento per R, ma è compreso solo con le espressioni analizzate nell'ambiente Sweave, cioè entro '<<>> == ... @' o '\ Sexpr {}' – James