有没有办法从R内将LaTeX表直接打印到图像文件(包含在另一个文档/网页中)。基本上,我想将LaTeX代码提供给将其作为图像保存到工作目录的函数。
管道梦想?
答案 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的回答,我能够提出一个不依赖于latex
包Hmisc
的解决方案,因为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")
答案 4 :(得分:-1)
我没有一个很好的答案,包括使用R,但如果你是绝望的,我想一个'打印屏幕'和一个副本油漆或其他这样的程序,最后保存它至少会得到你的形象一种可存储的格式。
当其他选项不可用时,我以这种方式创建了“一步一步”的用户文档。