将乳胶表直接打印到图像(PNG或其他)

时间:2012-02-15 18:04:01

标签: r latex sweave

有没有办法从R内将LaTeX表直接打印到图像文件(包含在另一个文档/网页中)。基本上,我想将LaTeX代码提供给将其作为图像保存到工作目录的函数。

管道梦想?

5 个答案:

答案 0 :(得分:7)

有各种LaTeX-to-Image转换器脚本,用于将方程式转换为图像以包含在网页上。

如果你能找到其中一个(也许是dvipng?)那么你可以从R中的表到LaTeX很容易,然后从LaTeX到png。

如果你有dvipng,你可以利用Hmisc的乳胶转换来做一个更简洁的功能:

dvipng.dvi <-
  function (object, file, ...) 
{
  cmd <- if (missing(file)) 
    paste("dvipng -T tight", shQuote(object$file))
  else paste("dvipng -T tight", "-o", file, shQuote(object$file))
  invisible(sys(cmd))
}

然后你可以这样做:

> tt   # here is a table
   y
x    1  2  3
  1  9 12 11
  2 18  9 10
  3 10  7 14
> dvipng.dvi(dvi.latex(latex(tt)))

这将在工作目录中生成一个随机名称的png文件。 -T tight选项将裁剪掉它周围的所有空格。

这就像我认为的那样直接。

Linux或Windows或Mac或Atari?

答案 1 :(得分:5)

xtable提供输出latex或html标记的选项。你可以直接把html放进去。

说过我也想直接从针织或者发誓到png或者svg。我上周试图这样做。我正在构建一个inkscape信息图(svg),并一直在寻找一种方法来插入一个通过运行R代码更新的表的链接图像。

在初始测试中,我结合使用xtable和Spacedman(+1)代码来获得一些不错的png输出(Ubuntu)。 -D选项允许控制分辨率。

我正在研究一款dvi-&gt; svg转换器,它更像我所追求的。 http://dvisvg.sourceforge.net/

dvipng.dvi <- function (object, file, res=600)
{
    if (missing(file)){
        invisible(sys(
                paste("dvipng -T tight", "-D", res, shQuote(object$file)))
            )
}
    else{
        invisible(sys(
                paste("dvipng -T tight", "-D", res, "-o", file, shQuote(object$file)))
            )
    }
}

tt <- head(iris)

dvipng.dvi(dvi.latex(latex(xtable(tt))), file='iris.png')

答案 2 :(得分:3)

通过Spaceman的回答,我能够提出一个不依赖于latexHmisc的解决方案,因为latex导致了一些路径问题:

table.png <- function(obj, name) { 
first <- name
name <- paste(name,".tex",sep="")
sink(file=name)
cat('
\\documentclass{report}
\\usepackage[paperwidth=5.5in,paperheight=7in,noheadfoot,margin=0in]{geometry}
\\begin{document}\\pagestyle{empty}
')
print(xtable(obj))
cat('
\\end{document}
')
sink()
texi2dvi(file=name)
cmd <- paste("dvipng -T tight", shQuote(paste(first,".dvi",sep="")))
invisible(sys(cmd))
cleaner <- c(".tex",".aux",".log",".dvi")
invisible(file.remove(paste(first,cleaner,sep="")))
}

答案 3 :(得分:0)

kableExtra软件包允许通过LaTeX或HTML制作漂亮的自定义表格。它还具有通过Webshot将此类独立表导出为PNG或PDF的功能。这是一个示例:

library(kableExtra)
knitr::kable(mtcars[1:6, 1:5], "latex", booktabs = TRUE, linesep = "") %>% 
    kable_styling(full_width = TRUE, font_size = 12) %>% 
    column_spec(1, width = "4cm") %>% 
    save_kable(file = "table.png")

Export table to png using kableExtra

答案 4 :(得分:-1)

我没有一个很好的答案,包括使用R,但如果你是绝望的,我想一个'打印屏幕'和一个副本油漆或其他这样的程序,最后保存它至少会得到你的形象一种可存储的格式。

当其他选项不可用时,我以这种方式创建了“一步一步”的用户文档。