input TeX script into the function and it renders a pdf and converts it an image which is sent to Viewer.
tex_preview(
obj,
tex_lines = NULL,
stem = "tex_temp",
overwrite = TRUE,
keep_pdf = FALSE,
tex_message = FALSE,
fileDir = tex_opts$get("fileDir"),
margin = tex_opts$get("margin"),
imgFormat = tex_opts$get("imgFormat"),
returnType = tex_opts$get("returnType"),
resizebox = tex_opts$get("resizebox"),
usrPackages = tex_opts$get("usrPackages"),
engine = tex_opts$get("engine"),
cleanup = tex_opts$get("cleanup"),
density = tex_opts$get("density"),
svg_max = tex_opts$get("svg_max"),
print.xtable.opts = tex_opts$get("print.xtable.opts"),
opts.html = tex_opts$get("opts.html"),
markers = interactive(),
...
)
object to convert to TeX script
vector of character, in case of special needs, instead of asking texPreview to build up, you may choose to pass in the contents of the complete LaTeX file directly. It should be a vector of character with each element as a line of raw TeX code.
character, name to use in output files, Default: "tex_temp"
logical, controls if overwriting of output stem* files given their existences, Default: TRUE
logical, controls if the rendered pdf file should be kept or deleted, Default: FALSE
logical, controls if latex executing messages are displayed in console. Default: FALSE
character, output destination. If NULL a temp.dir() will be used and no output will be saved, Default: tex_opts$get('fileDir')
table margin for pdflatex call, Default: tex_opts$get('margin')
character, defines the type of image the PDF is converted to Default: tex_opts$get('imgFormat')
character, one of "viewer", "html", or "tex" determining appropriate return type for the rendering process, Default: tex_opts$get('returnType')
logical, forces a tabular tex object to be constrained on the margins of the document, Default: tex_opts$get('resizebox')
character, vector of usepackage commands, see details for string format
character, specifies which latex to pdf engine to use ('pdflatex','xelatex','lualatex'), Default: tex_opts$get('engine')
character, vector of file extensions to clean up after building pdf, Default: tex_opts$get('cleanup')
numeric, controls the density of the image. Default is 150: tex_opts$get('density)
numeric, maximum svg file size allowable to preview, Default: tex_opts$get('svg_max')
list, contains arguments to pass to print.table, relevant only if xtable is used as the input, Default: tex_opts$get('print.xtable.opts')
list, html options, Default: tex_opts$get('opts.html')
logical, if TRUE then RStudio markers will be invoked to create links for the log file on rendering errors, Default: interactive()
passed to system2
The output of the function is dependent on the value of returnType:
viewer: NULL
magick image is printed in the internal viewer
tex:
character, TeX lines
printed 'asis' in RMarkdown
input: character
path to the file containing the tex wrapped in an input call
printed 'asis' in RMarkdown
html: magick image
Printed as an HTML document in the internal viewer
Printed as an image in RMarkdown
tex_preview
is an S3 method
that can be used to preview TeX output from different
object classes.
Built-in support includes:
character (tex lines)
knitr_kable (kable/kableExtra)
xtable
texreg
equatiomatic
System Requirements
The function assumes the system has pdflatex installed and it is defined in the PATH.
TeX Packages
To add packages to the tex file on render there are two options
Use build_usepackage and use the input
argument usrPackages
.
Append to the input object \\usepackage{...}
calls, they will be parsed
and added the to rendering.
Images
An image file of the name stem with the extension specified in imgFormat
.
The default extension is png.
Side effects
The function writes two files to disk in the fileDir
Image file
TeX script
The rendering files are removed up from the fileDir
. This can
be controlled using the cleanup
argument or tex_opts$get('cleanup')
data('iris')
if(interactive()){
# Raw TeX
tex <- '\\begin{tabular}{llr}
\\hline
\\multicolumn{2}{c}{Item} \\\\
\\cline{1-2}
Animal & Description & Price (\\$) \\\\
\\hline
Gnat & per gram & 13.65 \\\\
& each & 0.01 \\\\
Gnu & stuffed & 92.50 \\\\
Emu & stuffed & 33.33 \\\\
Armadillo & frozen & 8.99 \\\\
\\hline
\\end{tabular}'
# knitr kable
mtcars |>
head() |>
knitr::kable("latex") |>
tex_preview()
# with svg output pan/zoom is enabled in the internal viewer
tex_preview(obj = tex,stem = 'eq',imgFormat = 'svg')
# use tex_lines parameter to pass full document
tikz_path <- system.file(
'examples/tikz/credit_rationing.tex',
package = 'texPreview'
)
tex_preview(tex_lines = readLines(tikz_path))
}