Печать таблицы LaTeX непосредственно для изображения (PNG или другое)

Есть ли способ распечатать из таблицы R LaTeX непосредственно в файл изображения (для включения в другой документ/веб-страницу). В принципе, я хотел бы предоставить код LaTeX функции, которая сохраняет ее как изображение в рабочий каталог.

Трубные мечты?

Ответ 1

Существуют различные сценарии конвертера 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?

Ответ 2

xtable предоставляет возможность вывода латексной или 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

С ответом 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="")))
}

Ответ 4

Пакет kableExtra позволяет создавать красивые и настраиваемые таблицы через LaTeX или HTML. Он также имеет функцию для экспорта таких автономных таблиц, например, в PNG или PDF через Webshot. Вот пример:

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

Ответ 5

У меня нет хорошего ответа, который включает в себя использование R, но если вы были в отчаянии, я полагаю, что это "экран печати" и копия Paint или другой такой программы, и, наконец, ее сохранение, по крайней мере, даст вам изображение в сохраняемый формат.

Я создал пользовательскую документацию "шаг за шагом" таким образом, когда другие параметры не были доступны.