Convert sjPlot::tab_model()
html tables to tex and pdf with
html2pdf()
and use them in Rmarkdown documents with tex2Rmd()
.
html2latex is currently only available on Github.
# remotes::install_github("gorkang/html2latex")
library("html2latex")
Fully tested on Linux. Partially tested on Mac and Windows.
- You need a working Libreoffice
installation to convert
html
toodt
- We include
Writer2latex
in this package for theodt
totex
step - You will need a working Java installation
- You will also need a TeX compiler if you want to use the integrated
pdf compilation (you can try installing
tinytex
andtinytex::install_tinytex()
)
html2pdf()
function uses a Writer2latex script which is sourced from
the extdata folder.
If something does not work, make sure to have all the requirements
above. You can use silent = FALSE
in html2pdf()
to see in which step
things are failing. If nothing works, do send an issue including a
reproducible example.
There should be no spaces in the path to your table, or in the table file name.
Create a sjPlot::tab_model()
and save it as html.
library(html2latex)
library(lme4)
library(sjPlot)
# This is a terrible model
model = lmer(mpg ~ cyl * disp + (1|vs), mtcars)
# We save the sjPlot table to an .html file
sjPlot::tab_model(
model,
show.r2 = TRUE,
show.icc = FALSE,
show.re.var = FALSE,
p.style = "scientific",
emph.p = TRUE,
file = "temp.html")
Using the html2pdf()
we can transform the html output of
sjPlot::tab_model()
to .tex. We can also compile to pdf in one step
with the parameter build_pdf = TRUE
.
# Create tex and pdf
html2pdf(filename = "temp.html",
table_width = 13,
silent = FALSE,
style = TRUE,
build_pdf = TRUE,
clean = TRUE,
name_table = "table1")
#> pdf file created in: /.../html2latex/temp.pdf
#> tex file created in: /.../html2latex/temp.tex
You can include sjPlot::tab_model()
html tables in a Rmarkdown
document that outputs as pdf in three steps:
The YAML heather of the .Rmd document must include this:
header-includes:
- \usepackage{array}
- \usepackage{longtable}
- \newcommand\textstyleStrongEmphasis[1]{\textbf{#1}}
- \makeatletter
- \newcommand\arraybslash{\let\\\@arraycr}
The tex2Rmd()
function creates a .txt
file getting rid of the parts
of the .tex
code that cause conflicts when rendering the Rmd document.
# Create table.txt to be able to use it in Rmd documents
tex2Rmd("temp.tex")
#> File with table code created in: table.txt
The tex file created with html2pdf can be rendered as a pdf by opening
the tex file in RStudio and using the Compile PDF
button. But if you
want to use the table specific code inside a Rmd file (from
\begin{longtable}
to \end{longtable}
), we need to extract it first.
This is automatically done by the ´tex2Rmd()´ function.
Finally, you need to insert the latex code below outside of a chunk in your Rmd file.
\newcommand{\myinput}[1]{%
\begingroup%
\renewcommand\normalsize{\small}% Specify your font modification
\input{#1}%
\endgroup%
}
\begin{centering}
\myinput{table.txt}
\end{centering}
To see the result, please check the example.pdf in the github repository (will not be installed alongside the package)
(You might need to then call pdflatex in a terminal separately, if compiling via RStudio fails)
Alternatively, you can manually insert the contents of table.txt in a
chunk staring with ```{=latex}
See: https://bookdown.org/yihui/rmarkdown-cookbook/raw-latex.html