Re: [Rd] inject html code into Rd file
Sounds like a good idea. The RCurl package can also do the base64 encoding (depends on libcurl), e.g. library(RCurl) img <- function() { tf <- tempfile() tf.out <- tempfile() png(tf, width = 500, height = 500) plot(1:100, rnorm(100), pch = 21, bg = "red", cex = 2) dev.off() img <- readBin(tf, "raw", file.info(tf)[1, "size"]) b64 <- base64Encode(img, "character") sprintf("", b64) } writeLines(img(), "test.html") I saw your blog post today about your base64 package. My concern is IE (<=7) does not support data uri... Regards, Yihui -- Yihui Xie Phone: 515-294-6609 Web: http://yihui.name Department of Statistics, Iowa State University 3211 Snedecor Hall, Ames, IA On Sat, Apr 3, 2010 at 3:11 AM, Romain Francois wrote: > Le 03/04/10 02:04, Duncan Murdoch a écrit : >> >> On 02/04/2010 8:06 AM, Duncan Murdoch wrote: >>> >>> On 02/04/2010 7:13 AM, Romain Francois wrote: Le 02/04/10 13:07, Duncan Murdoch a écrit : > > On 02/04/2010 6:17 AM, Romain Francois wrote: >> >> Hello, >> >> I'm trying to inject html code into an Rd file. For example : >> >> \name{test} >> \alias{test} >> \title{test} >> \description{ >> \if{html}{ >> \Sexpr[stage=render,results=text,echo=FALSE]{ >> "hello" >> } >> } >> } >> >> when this file is rendered, instead of having "hello" in bold, I get >> hello, i.e. characters < and > are replaced with html entities >> : < and > >> >> Is there a way to turn this off ? > > Yes, if you wrap it in \out{}. The example in the manual is > > \if{latex}{\out{\alpha}}\ifelse{html}{\out{α}}{alpha} > > Duncan Murdoch yes, I saw that in WRE, I should have been more specific. what if instead of a trivial string like "hello" the text is to be computed by some function. For example: print( xtable( iris), type = "html" ) >>> >>> I think this should do it: >>> >>> \Sexpr[stage=render,results=rd,echo=FALSE]{ >>> paste("\\out{", "hello, "}", sep="")} >>> >>> but this stuff hasn't been tested much, so there might be problems... >> >> One problem is that the backslashes need to be escaped twice, so you'd >> want >> >> \Sexpr[stage=render,results=rd,echo=FALSE]{ >> paste("out{", "hello, "}", sep="")} >> >> and you'd probably want it wrapped in \if or \ifelse so that it doesn't >> show up in text or latex output: >> >> \Sexpr[stage=render,results=rd, >> echo=FALSE]{"if{html}{out{hello}}"} >> >> Duncan Murdoch > > Thanks. > This gives one way to include images in a Rd file with data uri, here is a > proof of concept (that depends on openssl to do the base 64 encoding): > > img <- function(){ > tf <- tempfile() > tf.out <- tempfile() > png( tf, width = 500, height = 500) > plot( 1:100, rnorm(100), pch = 21, bg = "red", cex =2 ) > dev.off() > system( sprintf( 'openssl base64 -in "%s" -out "%s" ', tf, tf.out ) ) > sprintf( '\\out{}', > paste( readLines( tf.out), collapse = "\n" ) ) > } > > and the Rd file: > > \name{test} > \alias{test} > \title{test} > \description{ > \if{html}{ > \Sexpr[stage=render,results=rd,echo=FALSE]{ > source( "test.R" ) > img() > } > } > } > > > > It might be interesting to have something like results=asis or something. > > Romain > > -- > Romain Francois > Professional R Enthusiast > +33(0) 6 28 91 30 30 > http://romainfrancois.blog.free.fr > |- http://tr.im/OIXN : raster images and RImageJ > |- http://tr.im/OcQe : Rcpp 0.7.7 > `- http://tr.im/O1wO : highlight 0.1-5 > > __ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] inject html code into Rd file
Le 03/04/10 02:04, Duncan Murdoch a écrit : On 02/04/2010 8:06 AM, Duncan Murdoch wrote: On 02/04/2010 7:13 AM, Romain Francois wrote: Le 02/04/10 13:07, Duncan Murdoch a écrit : On 02/04/2010 6:17 AM, Romain Francois wrote: Hello, I'm trying to inject html code into an Rd file. For example : \name{test} \alias{test} \title{test} \description{ \if{html}{ \Sexpr[stage=render,results=text,echo=FALSE]{ "hello" } } } when this file is rendered, instead of having "hello" in bold, I get hello, i.e. characters < and > are replaced with html entities : < and > Is there a way to turn this off ? Yes, if you wrap it in \out{}. The example in the manual is \if{latex}{\out{\alpha}}\ifelse{html}{\out{α}}{alpha} Duncan Murdoch yes, I saw that in WRE, I should have been more specific. what if instead of a trivial string like "hello" the text is to be computed by some function. For example: print( xtable( iris), type = "html" ) I think this should do it: \Sexpr[stage=render,results=rd,echo=FALSE]{ paste("\\out{", "hello, "}", sep="")} but this stuff hasn't been tested much, so there might be problems... One problem is that the backslashes need to be escaped twice, so you'd want \Sexpr[stage=render,results=rd,echo=FALSE]{ paste("out{", "hello, "}", sep="")} and you'd probably want it wrapped in \if or \ifelse so that it doesn't show up in text or latex output: \Sexpr[stage=render,results=rd, echo=FALSE]{"if{html}{out{hello}}"} Duncan Murdoch Thanks. This gives one way to include images in a Rd file with data uri, here is a proof of concept (that depends on openssl to do the base 64 encoding): img <- function(){ tf <- tempfile() tf.out <- tempfile() png( tf, width = 500, height = 500) plot( 1:100, rnorm(100), pch = 21, bg = "red", cex =2 ) dev.off() system( sprintf( 'openssl base64 -in "%s" -out "%s" ', tf, tf.out ) ) sprintf( '\\out{}', paste( readLines( tf.out), collapse = "\n" ) ) } and the Rd file: \name{test} \alias{test} \title{test} \description{ \if{html}{ \Sexpr[stage=render,results=rd,echo=FALSE]{ source( "test.R" ) img() } } } It might be interesting to have something like results=asis or something. Romain -- Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://tr.im/OIXN : raster images and RImageJ |- http://tr.im/OcQe : Rcpp 0.7.7 `- http://tr.im/O1wO : highlight 0.1-5 __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] inject html code into Rd file
On 02/04/2010 8:06 AM, Duncan Murdoch wrote: On 02/04/2010 7:13 AM, Romain Francois wrote: Le 02/04/10 13:07, Duncan Murdoch a écrit : On 02/04/2010 6:17 AM, Romain Francois wrote: Hello, I'm trying to inject html code into an Rd file. For example : \name{test} \alias{test} \title{test} \description{ \if{html}{ \Sexpr[stage=render,results=text,echo=FALSE]{ "hello" } } } when this file is rendered, instead of having "hello" in bold, I get hello, i.e. characters < and > are replaced with html entities : < and > Is there a way to turn this off ? Yes, if you wrap it in \out{}. The example in the manual is \if{latex}{\out{\alpha}}\ifelse{html}{\out{α}}{alpha} Duncan Murdoch yes, I saw that in WRE, I should have been more specific. what if instead of a trivial string like "hello" the text is to be computed by some function. For example: print( xtable( iris), type = "html" ) I think this should do it: \Sexpr[stage=render,results=rd,echo=FALSE]{ paste("\\out{", "hello, "}", sep="")} but this stuff hasn't been tested much, so there might be problems... One problem is that the backslashes need to be escaped twice, so you'd want \Sexpr[stage=render,results=rd,echo=FALSE]{ paste("out{", "hello, "}", sep="")} and you'd probably want it wrapped in \if or \ifelse so that it doesn't show up in text or latex output: \Sexpr[stage=render,results=rd, echo=FALSE]{"if{html}{out{hello}}"} Duncan Murdoch __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] inject html code into Rd file
On 02/04/2010 7:13 AM, Romain Francois wrote: Le 02/04/10 13:07, Duncan Murdoch a écrit : On 02/04/2010 6:17 AM, Romain Francois wrote: Hello, I'm trying to inject html code into an Rd file. For example : \name{test} \alias{test} \title{test} \description{ \if{html}{ \Sexpr[stage=render,results=text,echo=FALSE]{ "hello" } } } when this file is rendered, instead of having "hello" in bold, I get hello, i.e. characters < and > are replaced with html entities : < and > Is there a way to turn this off ? Yes, if you wrap it in \out{}. The example in the manual is \if{latex}{\out{\alpha}}\ifelse{html}{\out{α}}{alpha} Duncan Murdoch yes, I saw that in WRE, I should have been more specific. what if instead of a trivial string like "hello" the text is to be computed by some function. For example: print( xtable( iris), type = "html" ) I think this should do it: \Sexpr[stage=render,results=rd,echo=FALSE]{ paste("\\out{", "hello, "}", sep="")} but this stuff hasn't been tested much, so there might be problems... Duncan Murdoch __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] inject html code into Rd file
Le 02/04/10 13:07, Duncan Murdoch a écrit : On 02/04/2010 6:17 AM, Romain Francois wrote: Hello, I'm trying to inject html code into an Rd file. For example : \name{test} \alias{test} \title{test} \description{ \if{html}{ \Sexpr[stage=render,results=text,echo=FALSE]{ "hello" } } } when this file is rendered, instead of having "hello" in bold, I get hello, i.e. characters < and > are replaced with html entities : < and > Is there a way to turn this off ? Yes, if you wrap it in \out{}. The example in the manual is \if{latex}{\out{\alpha}}\ifelse{html}{\out{α}}{alpha} Duncan Murdoch yes, I saw that in WRE, I should have been more specific. what if instead of a trivial string like "hello" the text is to be computed by some function. For example: print( xtable( iris), type = "html" ) Romain -- Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://tr.im/OIXN : raster images and RImageJ |- http://tr.im/OcQe : Rcpp 0.7.7 `- http://tr.im/O1wO : highlight 0.1-5 __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] inject html code into Rd file
On 02/04/2010 6:17 AM, Romain Francois wrote: Hello, I'm trying to inject html code into an Rd file. For example : \name{test} \alias{test} \title{test} \description{ \if{html}{ \Sexpr[stage=render,results=text,echo=FALSE]{ "hello" } } } when this file is rendered, instead of having "hello" in bold, I get hello, i.e. characters < and > are replaced with html entities : < and > Is there a way to turn this off ? Yes, if you wrap it in \out{}. The example in the manual is \if{latex}{\out{\alpha}}\ifelse{html}{\out{α}}{alpha} Duncan Murdoch __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] inject html code into Rd file
Hello, I'm trying to inject html code into an Rd file. For example : \name{test} \alias{test} \title{test} \description{ \if{html}{ \Sexpr[stage=render,results=text,echo=FALSE]{ "hello" } } } when this file is rendered, instead of having "hello" in bold, I get hello, i.e. characters < and > are replaced with html entities : < and > Is there a way to turn this off ? Romain -- Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://tr.im/OIXN : raster images and RImageJ |- http://tr.im/OcQe : Rcpp 0.7.7 `- http://tr.im/O1wO : highlight 0.1-5 __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel