-
-
Save yihui/2790922 to your computer and use it in GitHub Desktop.
| \documentclass{article} | |
| \begin{document} | |
| We can draw a table with the gridExtra package, and one problem is to | |
| pre-determine the size of the table plot to remove the extra white | |
| margin. Below is an example that shows you how to do it (courtesy of | |
| baptiste auguie). | |
| <<setup>>= | |
| library(gridExtra) | |
| g = tableGrob(head(iris, 4)) | |
| <<draw-table, dev='png', dpi=150, fig.width=convertWidth(grobWidth(g), "in", value=TRUE), fig.height=convertHeight(grobHeight(g), "in", value=TRUE)>>= | |
| grid.draw(g) | |
| @ | |
| \end{document} |
many people think <<>>= has to be ended by @ but that is not true; the original syntax of literate programming defined <<>>= to open code chunks, and @ to open documentation chunks, so I can use two <<>>= successively and they are two separate chunks; you can certain add @ before the second chunk, but that is unnecessary because there is no text between the two chunks
knitr does not produce Rplots.pdf at all (details at yihui/knitr#9)
Thanks, I didn't know that. Regarding Rplots.pdf, it is definitely created when I knit the gist above. Do you mean that it's not knitr's fault that it exists (which is correct, grid opens a device also in interactive use to test the fontsize)?
I see. I did not know convertWidth() has to open a device. I'll fix this. Thanks!
fixed; will appear in my next commit
Thanks!
Was looking for exactly this! Is there any way to reduce the amount of typing involved? I'm using your code in a similar way with Rmd:
```{r}
g = tableGrob(head(iris, 4))
```{r draw-table, dev='png', dpi=72, fig.width=convertWidth(grobWidth(g), "in", value=TRUE), fig.height=convertHeight(grobHeight(g), "in", value=TRUE)}
grid.draw(g)
```
I'm confused: is
<<draw-table>>inside<<setup>>, or is there a missing@? Also, can knitr remove the dummy Rplots.pdf?