Just thought I would add that there seemed to be a lot of interest in the connection feature on that r-devel thread and since no other device can output to an R variable (other than by writing out a file and reading it back in) it might be that some users would use tikzDevice for this feature alone regardless of whether it was implemented in terms of connections or otherwise.<br>

<br><div class="gmail_quote">On Sun, Dec 6, 2009 at 4:13 PM, Gabor Grothendieck <span dir="ltr">&lt;<a href="mailto:ggrothendieck@gmail.com">ggrothendieck@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;">

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.<div><div></div><div class="h5">

<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" target="_blank">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>&lt;<a href="mailto:ggrothendieck@gmail.com" target="_blank">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" target="_blank">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" target="_blank">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" target="_blank">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" target="_blank">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" target="_blank">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" target="_blank">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>
</div></div></blockquote></div><br>