Yes, I think that is the implication.  The basic desire is to be able to store the output in a variable (which might possibly be manipulated) and then print it out or embed it in a file later.<br><br><div class="gmail_quote">

On Sun, Dec 6, 2009 at 3:47 PM, Cameron Bracken <span dir="ltr">&lt;<a href="mailto:cameron.bracken@gmail.com">cameron.bracken@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Now if you call tikz with an empty file name<br>
<br>
tikz(&#39;&#39;)<br>
<br>
it will dump to the console. It cant be called with no file name<br>
because that will default to the standard Rplots.tex file. The changes<br>
are on Github.<br>
<br>
As for the rawConnection functionality, I do not know much about this<br>
sort of R programming but I suppose it would be possible. Am I right<br>
in thinking that afterward you might then<br>
<br>
print(rc)<br>
<br>
to output to a file?  It would certainly not be trivial on the C level<br>
but I believe it could be done.<br>
<br>
-Cameron<br>
<br>
<br>
<br>
On Sun, Dec 6, 2009 at 1:28 PM, Gabor Grothendieck<br>
<div><div></div><div class="h5">&lt;<a href="mailto:ggrothendieck@gmail.com">ggrothendieck@gmail.com</a>&gt; wrote:<br>
&gt; img.raw is intended to represent the name of a raw R object, not a file<br>
&gt; name.<br>
&gt;<br>
&gt; On Sun, Dec 6, 2009 at 3:25 PM, Gabor Grothendieck &lt;<a href="mailto:ggrothendieck@gmail.com">ggrothendieck@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; And yet another comment.  There has been a recent discussion about<br>
&gt;&gt; allowing devices to output to connections on r-devel and apparently this has<br>
&gt;&gt; languished for years despite Jeffrey Horner posting code which would have<br>
&gt;&gt; allowed it 3 years ago.  Would it be a problem for tikz to handle that even<br>
&gt;&gt; if the other devices don&#39;t?  For example, Hadley Wickham had posted this<br>
&gt;&gt; proposed functionality:<br>
&gt;&gt;<br>
&gt;&gt; rc &lt;- rawConnection(&quot;raw.img&quot;, &quot;w&quot;)<br>
&gt;&gt; png(rc)<br>
&gt;&gt; plot(1:10)<br>
&gt;&gt; dev.off()<br>
&gt;&gt; close(rc)<br>
&gt;&gt;<br>
&gt;&gt; where in this case png() would be replaced with tikz().<br>
&gt;&gt;<br>
&gt;&gt; On Sun, Dec 6, 2009 at 3:17 PM, Gabor Grothendieck<br>
&gt;&gt; &lt;<a href="mailto:ggrothendieck@gmail.com">ggrothendieck@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Great. Just one other related comment.  I think I would likely use the<br>
&gt;&gt;&gt; tikz(..., append=TRUE) style but some might prefer to use sink.  That could<br>
&gt;&gt;&gt; be done if it were possible to write the output to stdout like this.   If<br>
&gt;&gt;&gt; its not a problem you might want to add that too.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; sink(&quot;myfile.tex&quot;)<br>
&gt;&gt;&gt; cat(&quot;\\documentclass{article}<br>
&gt;&gt;&gt; \\usepackage{tikz}<br>
&gt;&gt;&gt; \begin{document}<br>
&gt;&gt;&gt; \\begin{figure}[ht]<br>
&gt;&gt;&gt; \\centering<br>
&gt;&gt;&gt; &quot;)<br>
&gt;&gt;&gt; # &quot;&quot; or &quot;stdout&quot; or default writes to stdout<br>
&gt;&gt;&gt; tikz(width=5, height=5)<br>
&gt;&gt;&gt; x &lt;- rnorm(100)<br>
&gt;&gt;&gt; plot(x)<br>
&gt;&gt;&gt; dev.off()<br>
&gt;&gt;&gt; cat(&quot;\\caption{caption}<br>
&gt;&gt;&gt; \\label{fig:inline}<br>
&gt;&gt;&gt; \\end{figure}<br>
&gt;&gt;&gt; \\end{document}<br>
&gt;&gt;&gt; &quot;)<br>
&gt;&gt;&gt; sink()<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Sun, Dec 6, 2009 at 3:04 PM, Cameron Bracken<br>
&gt;&gt;&gt; &lt;<a href="mailto:cameron.bracken@gmail.com">cameron.bracken@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I liked this idea so much that I implemented it right away. You can<br>
&gt;&gt;&gt;&gt; get it from the master branch of my github fork until the next release<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; <a href="http://github.com/cameronbracken/rtikzdevice/network" target="_blank">http://github.com/cameronbracken/rtikzdevice/network</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Instead of &quot;append&quot; i called it &quot;console.&quot;  It works nearly as you<br>
&gt;&gt;&gt;&gt; envisioned:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cat(&quot;\\documentclass{article}<br>
&gt;&gt;&gt;&gt; \\usepackage{tikz}<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; \\begin{document}<br>
&gt;&gt;&gt;&gt; \\begin{figure}[ht]<br>
&gt;&gt;&gt;&gt; \\centering<br>
&gt;&gt;&gt;&gt; &quot;, file = &quot;myfile.tex&quot;)<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; sink(&quot;myfile.tex&quot;,append=T)<br>
&gt;&gt;&gt;&gt; tikz(console=T, width=5, height=5)<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; x &lt;- rnorm(100)<br>
&gt;&gt;&gt;&gt; plot(x)<br>
&gt;&gt;&gt;&gt; quiet &lt;- dev.off()<br>
&gt;&gt;&gt;&gt; sink()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cat(&quot;\\caption{caption}<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; \\label{fig:inline}<br>
&gt;&gt;&gt;&gt; \\end{figure}<br>
&gt;&gt;&gt;&gt; \\end{document}<br>
&gt;&gt;&gt;&gt; &quot;, file = &quot;myfile.tex&quot;, append = TRUE)<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; The following will now produce a self contained tex file:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; \documentclass{article}<br>
&gt;&gt;&gt;&gt; \usepackage{tikz}<br>
&gt;&gt;&gt;&gt; \usepackage[nogin]{Sweave}<br>
&gt;&gt;&gt;&gt; \begin{document}<br>
&gt;&gt;&gt;&gt; \begin{figure}[ht]<br>
&gt;&gt;&gt;&gt; \centering<br>
&gt;&gt;&gt;&gt; &lt;&lt;inline,echo=F,results=tex&gt;&gt;=<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  require(tikzDevice)<br>
&gt;&gt;&gt;&gt;  tikz(console=T,width=5,height=5)<br>
&gt;&gt;&gt;&gt;    x &lt;- rnorm(100)<br>
&gt;&gt;&gt;&gt;    plot(x)<br>
&gt;&gt;&gt;&gt;  dummy &lt;- dev.off()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; @<br>
&gt;&gt;&gt;&gt; \caption{caption}<br>
&gt;&gt;&gt;&gt; \label{fig:inline}<br>
&gt;&gt;&gt;&gt; \end{figure}<br>
&gt;&gt;&gt;&gt; \end{document}<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; -Cameron<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Sun, Dec 6, 2009 at 9:46 AM, Gabor Grothendieck<br>
&gt;&gt;&gt;&gt; &lt;<a href="mailto:ggrothendieck@gmail.com">ggrothendieck@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt; &gt; If you able to provide this feature (i.e. incorporate the tikz tex<br>
&gt;&gt;&gt;&gt; &gt; directly<br>
&gt;&gt;&gt;&gt; &gt; into the current file rather than writing out a temporary file and<br>
&gt;&gt;&gt;&gt; &gt; reading<br>
&gt;&gt;&gt;&gt; &gt; it back in) then that would be useful since one of the key potential<br>
&gt;&gt;&gt;&gt; &gt; advantages of tikz and pgf are the ability to have a single file<br>
&gt;&gt;&gt;&gt; &gt; rather than<br>
&gt;&gt;&gt;&gt; &gt; multiple files.  Perhaps an append=TRUE argument like this:<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; cat(&quot;\\documentclass{article}<br>
&gt;&gt;&gt;&gt; &gt; \\usepackage{tikz}<br>
&gt;&gt;&gt;&gt; &gt; \begin{document}<br>
&gt;&gt;&gt;&gt; &gt; \\begin{figure}[ht]<br>
&gt;&gt;&gt;&gt; &gt; \\centering<br>
&gt;&gt;&gt;&gt; &gt; &quot;, file = &quot;myfile.tex&quot;)<br>
&gt;&gt;&gt;&gt; &gt; tikz(&quot;myfile.tex&quot;, width=5, height=5, append = TRUE)<br>
&gt;&gt;&gt;&gt; &gt; x &lt;- rnorm(100)<br>
&gt;&gt;&gt;&gt; &gt; plot(x)<br>
&gt;&gt;&gt;&gt; &gt; dev.off()<br>
&gt;&gt;&gt;&gt; &gt; cat(&quot;\\caption{caption}<br>
&gt;&gt;&gt;&gt; &gt; \\label{fig:inline}<br>
&gt;&gt;&gt;&gt; &gt; \\end{figure}<br>
&gt;&gt;&gt;&gt; &gt; \\end{document}<br>
&gt;&gt;&gt;&gt; &gt; &quot;, file = &quot;myfile.tex&quot;, append = TRUE)<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; On Sun, Dec 6, 2009 at 11:34 AM, Cameron Bracken<br>
&gt;&gt;&gt;&gt; &gt; &lt;<a href="mailto:cameron.bracken@gmail.com">cameron.bracken@gmail.com</a>&gt;<br>
&gt;&gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Interesting Idea.  This should work with plain Sweave.  It is not<br>
&gt;&gt;&gt;&gt; &gt;&gt; very<br>
&gt;&gt;&gt;&gt; &gt;&gt; efficient and would be very slow for large files since it must write<br>
&gt;&gt;&gt;&gt; &gt;&gt; out then read in then write out.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; \documentclass{article}<br>
&gt;&gt;&gt;&gt; &gt;&gt; \usepackage{tikz}<br>
&gt;&gt;&gt;&gt; &gt;&gt; \usepackage[nogin]{Sweave}<br>
&gt;&gt;&gt;&gt; &gt;&gt; \begin{document}<br>
&gt;&gt;&gt;&gt; &gt;&gt; \begin{figure}[ht]<br>
&gt;&gt;&gt;&gt; &gt;&gt; \centering<br>
&gt;&gt;&gt;&gt; &gt;&gt; &lt;&lt;inline,echo=F,results=tex&gt;&gt;=<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;  require(tikzDevice)<br>
&gt;&gt;&gt;&gt; &gt;&gt;  tf &lt;- tempfile()<br>
&gt;&gt;&gt;&gt; &gt;&gt;  tikz(tf,width=5,height=5)<br>
&gt;&gt;&gt;&gt; &gt;&gt;    x &lt;- rnorm(100)<br>
&gt;&gt;&gt;&gt; &gt;&gt;    plot(x)<br>
&gt;&gt;&gt;&gt; &gt;&gt;  #Suppress &quot;null device 1&quot; from being printed<br>
&gt;&gt;&gt;&gt; &gt;&gt;  dummy &lt;- dev.off()<br>
&gt;&gt;&gt;&gt; &gt;&gt;  cat(readLines(tf),sep=&#39;\n&#39;)<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; @<br>
&gt;&gt;&gt;&gt; &gt;&gt; \caption{caption}<br>
&gt;&gt;&gt;&gt; &gt;&gt; \label{fig:inline}<br>
&gt;&gt;&gt;&gt; &gt;&gt; \end{figure}<br>
&gt;&gt;&gt;&gt; &gt;&gt; \end{document}<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; -Cameron<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; On Sun, Dec 6, 2009 at 9:02 AM, Gabor Grothendieck<br>
&gt;&gt;&gt;&gt; &gt;&gt; &lt;<a href="mailto:ggrothendieck@gmail.com">ggrothendieck@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt; I would like to create a single file that has my latex and<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt; tikzDevice<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt; output<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt; as opposed to outputting the tikZ output into a separate file and<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt; using<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt; \input .  The latex would be generated using cat statements in R.<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt; Can that be done?  If so, can you provide a small example.<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>