Skip to content

sweave question

8 messages · Nordlund, Dan (DSHS/RDA), Duncan Mackay, Daniel Nordlund +2 more

#
Mark,

I am not an sweave expert, but I think the problem is actually that you need to double all of your backslash characters that you actually want to write out as a backslash.  The error message says that it doesn't recognize the escape character '\i'.  

Hope this is helpful,

Dan

Daniel J. Nordlund
Washington State Department of Social and Health Services
Planning, Performance, and Accountability
Research and Data Analysis Division
Olympia, WA 98504-5204
#
Hi

Dan is correct

The alternative is to use a chunk to create the plot
eg
<<reg3print, results=hide, echo=FALSE>>=
pdf("reg_tree-fig3.pdf", width = wid, height = hei)
plot(cal.tree,uniform=TRUE,compress=TRUE,margin=0.0)
text(cal.tree, all=TRUE,fheight=1.0,fwidth=1.0)
dev.off()
@

an call the file in the latex figure in the usual way

\begin{figure}[!h]
\centering
\includegraphics[width=...,%
                  clip=true,%
                  trim=0in 0in 0in 0in,%
                  keepaspectratio=true]%
                  {....reg_tree-fig3.pdf}
...
\end{figure}

Regards

Duncan

Duncan Mackay
Department of Agronomy and Soil Science
University of New England
Armidale NSW 2351
Email: home: mackay at northnet.com.au
At 09:50 14/02/2013, you wrote:
#
Mark,

just to be clear, since R uses the backslash character as an escape character inside strings, then any backslash that you want to appear in your latex code must be escaped, i.e. it must be doubled.  But any backslash character that is being used as an escape character should remain as a single character.

I looked at the solution you linked to, and it looks to me like the post got a little garbled in transmission.  Here is what I saw.

<<label=fig1, fig=FALSE, result = tex>>=
pdf("fig1.pdf", width = wid, heigth = hei)
	plot(1:10)
dev.off()
cat("\begin{figure}\")
cat("\includegraphics[width = ", wid, ", height = ", hei, "]{proj1-fig1}\"}
cat("\end{figure}")
@

In the first cat(), the "\begin{figure}\" is not going to be interpreted properly.  the \b will be interpreted as an escape character, and so what will be printed is something like this (where '_' represents the escape sequence \b that I didn't look up)

_egin{figure}

In addition, you want to be writing the latex commands on separate lines, which requires that the string be ended with '\n', i.e. a newline character. But it looks like the 'n' got stripped out.  Also, the second cat statement in the example above ends with a '}' instead of a ')'. So I suspect that the example should have looked like this

<<label=fig1, fig=FALSE, result = tex>>=
pdf("fig1.pdf", width = wid, heigth = hei)
	plot(1:10)
dev.off()
cat("\\begin{figure}\n")
cat("\\includegraphics[width = ", wid, ", height = ", hei, "]{proj1-fig1}\n")
cat("\\end{figure}\n")
@

If I have got any of this wrong, I am sure someone will come along and correct me.

Hope this is helpful,

Dan

Daniel Nordlund
Bothell, WA USA
#
Other people in this thread have explained the rule of double
backslashes. I just want to add one more comment:

That clever solution was in 2009 when knitr has not come out, and I
have used this picture several times to show how much I dislike it:
http://yihui.name/en/2012/06/enjoyable-reproducible-research/

With knitr, you can easily write your big code chunk (with lots of
"cats" jumping around) in a much more compact way:

<<figthree, fig.pos="ht!", fig.align="center", out.width="5in",
out.height="5in", fig.cap="The resulting unpruned regression tree of
the California real estate data">>=
plot(cal.tree,uniform=TRUE,compress=TRUE,margin=0.0)
text(cal.tree, all=TRUE,fheight=1.0,fwidth=1.0)
@

Note the number "5" alone is not a legal LaTeX length; you should add
the unit such as "5in" or "5cm", etc. This chunk in knitr will
generate everything for you:

- the figure environment
- center the figure
- add the figure position ht!
- add the figure caption
- add figure width and height
- add the figure label fig:figthree

You, as the author, only write the R code (instead of both R and
LaTeX); other people, as the readers, only see the R code. Everything
else should go behind the scene.

Regards,
Yihui
--
Yihui Xie <xieyihui at gmail.com>
Phone: 515-294-2465 Web: http://yihui.name
Department of Statistics, Iowa State University
2215 Snedecor Hall, Ames, IA
On Wed, Feb 13, 2013 at 4:59 PM, Mark Leeds <markleeds2 at gmail.com> wrote:
#
Hi Mark

I need pdfs for Sweave etc, my colleagues  want wmfs or the ilk and 
for publishing eps/tiff so I just add a section for each with in the 
'print' chunk

Duncan
At 02:49 15/02/2013, you wrote: