Печать таблицы 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 или другой такой программы, и, наконец, ее сохранение, по крайней мере, даст вам изображение в сохраняемый формат.
Я создал пользовательскую документацию "шаг за шагом" таким образом, когда другие параметры не были доступны.