Re: [Rd] inject html code into Rd file

2010-04-03 Thread Yihui Xie
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

2010-04-03 Thread Romain Francois

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

2010-04-02 Thread Duncan Murdoch

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

2010-04-02 Thread Duncan Murdoch

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

2010-04-02 Thread Romain Francois

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

2010-04-02 Thread Duncan Murdoch

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

2010-04-02 Thread Romain Francois

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