Learn R Programming

tinytex (version 0.3)

latexmk: Compile a LaTeX document to PDF

Description

The function latexmk() emulates the system command latexmk (https://ctan.org/pkg/latexmk) to compile a LaTeX document to PDF. The functions pdflatex(), xelatex(), and lualatex() are wrappers of latexmk(engine =, emulation = TRUE).

Usage

latexmk(file, engine = c("pdflatex", "xelatex", "lualatex"), bib_engine = c("bibtex", 
    "biber"), engine_args = NULL, emulation = TRUE, max_times = 10, 
    install_packages = emulation && tlmgr_available())

pdflatex(...)

xelatex(...)

lualatex(...)

Arguments

file

A LaTeX file path.

engine

A LaTeX engine (can be set in the global option tinytex.engine, e.g., options(tinytex.engine = 'xelatex')).

bib_engine

A bibliography engine (can be set in the global option tinytex.bib_engine).

engine_args

Command-line arguments to be passed to engine (can be set in the global option tinytex.engine_args, e.g., options(tinytex.engine_args = '-shell-escape').

emulation

Whether to emulate the executable latexmk using R.

max_times

The maximum number of times to rerun the LaTeX engine when using emulation. You can set the global option tinytex.compile.max_times, e.g., options(tinytex.compile.max_times = 3).

install_packages

Whether to automatically install missing LaTeX packages found by parse_packages() from the LaTeX log. This argument is only for the emulation mode and TeX Live.

...

Arguments to be passed to latexmk() (other than engine and emulation).

Details

The latexmk emulation works like this: run the LaTeX engine once (e.g., pdflatex), run makeindex to make the index if necessary (the *.idx file exists), run the bibliography engine bibtex or biber to make the bibliography if necessary (the *.aux or *.bcf file exists), and finally run the LaTeX engine a number of times (the maximum is 10 by default) to resolve all cross-references.

If emulation = FALSE, you need to make sure the executable latexmk is available in your system, otherwise latexmk() will fall back to emulation = TRUE. You can set the global option options(tinytex.latexmk.emulation = FALSE) to always avoid emulation (i.e., always use the executable latexmk).