Thank you Duncan for pointing this out. I did have tried using the command \out with no success, but I finally manage to do what I want with:

\if{html}{\Sexpr[results=rd, stage=render]{"\\\\out{<pre>line\nnewline\n\nother line</pre>}"}} \if{text}{\Sexpr[results=rd, stage=render]{"\\\\out{line\nnewline\n\nother line}"}} \if{latex}{\Sexpr[results=rd, stage=render]{"\\\\out{\\\\begin{verbatim}line\nnewline\n\nother line\\\\end{verbatim}}"}}

The only remaining issue is with format 'text', that does not show single break lines. Double break lines are shown correctly with an empty line.
This can be put in a macro:

\newcommand{\rdVerb}{\if{html}{\Sexpr[results=rd, stage=render]{paste("\\\\\\out{<pre>",#1,"</pre>}", sep='')}}\if{text}{\Sexpr[results=rd, stage=render]{paste("\\\\\\out{",#1,"}", sep='')}}\if{latex}{\Sexpr[results=rd,stage=render]{paste("\\\\\\out{\\\\\\\\begin{verbatim}",#1,"\\\\\\\\end{verbatim}}", sep='')}}
}


which can be used as:

\rdVerb{"line\nnew line\n\nother paragraph"}

Dynamic code works as well:

\rdVerb{paste("This is the result of tools:::Rd_expr_PR(1234):", tools:::Rd_expr_PR(1234), sep="")} \rdVerb{paste("This is the result of tools:::Rd_expr_PR(1234):", tools:::Rd_expr_PR(1234), sep="\n")}

But backslashes must be escaped twice:

\rdVerb{"\\\\\begin{section}\ntest\nsd\n\n\\\\\end{section}"}

Note that on the text version generated by the second \VERBATIM actually correctly shows the new line. Not sure why (?).

Renaud

--
Renaud Gaujoux
Computational Biology - University of Cape Town
South Africa


On 03/11/2011 18:28, Duncan Murdoch wrote:
On 03/11/2011 10:49 AM, Renaud Gaujoux wrote:
On 03/11/2011 16:28, Duncan Murdoch wrote:
>  On 03/11/2011 10:21 AM, Renaud Gaujoux wrote:
>>  Thank you Georgi.
>>  With the fix \long the output is indeed consistent with the
>>  documentation.
>>  I think my use of cat() worked by luck as its output should not have
>>  been rendered.
>>
>> Would a 'results=tex' (html, text) be possible? or 'results=source' that
>>  could be combined with \if{format}{text}?
>> This would allow to generate custom Latex, or HTML code, but it might
>>  also be is hazardous...
>
>  Yes, that's possible.  See the manual, especially the section "2.12
>  conditional text".
>
>  Duncan Murdoch

Conditional text is possible, but latex or html code seem to be
preprocessed and escaped, or maybe I am not doing the right things.

Not if you ask it not to do that. See the example in that section of the manual.

Duncan Murdoch

To test:

%%%%%%%%
\name{Sexpr}
\alias{Sexpr}
\title{Error and verbatim in Sexpr}
\description{
      Testing Sexpr in Rd files

      \if{html}{\Sexpr[results=text, stage=render]{"<bold>text in
bold</bold>"}}
      \if{text}{\Sexpr[results=text, stage=render]{"_text in bold_"}}
      \if{latex}{\Sexpr[results=text, stage=render]{"\\\\textbf{text in
bold}"}}



}
%%%%%%%


______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to