2012-02-15 80 views

回答

7

有各種LaTeX到圖像轉換器腳本,用於執行諸如將方程式轉換爲圖像以包含在網頁上的內容。

如果你可以找到其中的一個(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嚴格選項將裁剪掉所有的空白。

這是直接的,因爲我認爲這是可能的。

Linux或Windows或Mac或Atari?

+0

的Windows, preferrably。 – 2012-02-15 19:32:00

+0

那麼如果Hmisc在你的系統上工作,並且dvipng被包含在你的TeX中,那麼我的解決方案就可以工作...... – Spacedman 2012-02-15 20:10:33

+0

我在目錄(不熟悉該格式)中看到DVI文件,但沒有PNG。 – 2012-02-15 20:36:04

0

我沒有一個很好的答案,包括使用R,但如果你絕望,我想一個'打印屏幕'和複製到Paint或其他這樣的程序,並最終保存它會至少讓你的形象以可存儲的格式。

當其他選項不可用時,我已經用這種方式創建了'一步一步'的用戶文檔。

5

xtable提供了輸出latex或html標記的選項。你可以直接放入html。

話雖如此,我也希望能夠直接從編織或sweave到png或svg。上週我正在努力做到這一點。我正在構建一個inkscape信息圖(svg),並一直在尋找一種方法來插入通過運行R代碼更新的表的鏈接圖像。

在最初的測試中,我結合使用xtable和Spacedman的(+1)代碼來獲得一些漂亮的png輸出(Ubuntu)。 -D選項允許控制分辨率。

我正在尋找一個dvi-> 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') 
3

隨着太空人的回答,我能夠拿出不從Hmisc封裝latex依靠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=""))) 
} 
+0

'不可見(sys(cmd))'應該可能是'不可見的(系統(CMD))' – mzuba 2017-08-17 08:37:41