Nothing
.onLoad <-
function(libname, pkgname) {
# Print out version banner
pkgInfo <- read.dcf(file.path( libname, pkgname, "DESCRIPTION"))
packageStartupMessage(sprintf("%s: %s (v%s)",
pkgInfo[, "Package"], pkgInfo[, "Title"], getTikzDeviceVersion(libname)))
# Ensure options are set.
setTikzDefaults( overwrite = FALSE )
# Perform a search for executable TeX compilers. R options, environment
# variables and common paths will be checked. If PdfLaTeX can not be found,
# loading of this package will be aborted as a LaTeX compiler is required in
# order to determine string metrics. Other compilers, such as XeLaTeX, are
# optional.
foundLatex <- FALSE
foundXelatex <- FALSE
foundLualatex <- FALSE
latexLocs <- list(
OPTION('tikzLatex'),
ENV_VAR('R_LATEXCMD'),
ENV_VAR('R_PDFLATEXCMD'),
OPTION('latexcmd'),
PATH('pdflatex'),
PATH('latex')
)
# Only check for xelatex and lualatex in the options and the PATH variable
# since there are no R environment variables for these compilers.
xelatexLocs <- list(
OPTION('tikzXelatex'),
PATH('xelatex')
)
lualatexLocs <- list(
OPTION('tikzLualatex'),
PATH('lualatex')
)
# Non-Windows users are likely to use some derivative of TeX Live. This next
# test primarily covers the fact that R.app does not include `/usr/texbin` on
# the search path on OS X.
if( .Platform[['OS.type']] == 'unix' ){
# Using explicit list insertion because the `c` function drops attributes
# and thus destroys S3 objects. Writing 3 new class methods for PATH,
# OBJECT and ENV_VAR is just overkill.
latexLocs[[length(latexLocs) + 1]] <- PATH('/usr/texbin/pdflatex')
xelatexLocs[[length(xelatexLocs) + 1]] <- PATH('/usr/texbin/xelatex')
lualatexLocs[[length(lualatexLocs) + 1]] <- PATH('/usr/texbin/lualatex')
}
for ( latexPath in latexLocs ) {
if ( isExecutable(latexPath) ) {
foundLatex <- TRUE
options(tikzLatex = as.character(latexPath), tikzLatexDefault = as.character(latexPath))
break
}
}
for( xelatexPath in xelatexLocs ) {
if( isExecutable(xelatexPath) ) {
foundXelatex <- TRUE
options(tikzXelatex = as.character(xelatexPath), tikzXelatexDefault = as.character(xelatexPath))
break
}
}
for( lualatexPath in lualatexLocs ) {
if( isExecutable(lualatexPath) ) {
foundLualatex <- TRUE
options(tikzLualatex = as.character(lualatexPath), tikzLualatexDefault = as.character(lualatexPath))
break
}
}
if ( foundLatex ) {
packageStartupMessage(paste(' LaTeX found in', format(latexPath)))
} else {
stop("\n\nAn appropriate LaTeX compiler could not be found.\n",
"Access to LaTeX is required in order for the TikZ device\n",
"to produce output.\n\n",
"The following places were tested for a valid LaTeX compiler:\n\n\t",
paste( sapply(latexLocs, format),collapse='\n\t'),
"\n\nIf you have a working LaTeX compiler, try one of the\n",
"following solutions:",
"\n\n\tSet the path to your compiler as the value of either latexcmd or",
"\n\ttikzLatex in .Rprofile using options().",
"\n\n\tSet the path to your compiler as the value of either R_LATEXCMD or",
"\n\tR_PDFLATEXCMD in .Renviron.",
"\n\n\tEnsure the folder containing your compiler is included in PATH.\n"
)
}
if ( foundXelatex ) {
packageStartupMessage(paste(' XeLaTeX found in', format(xelatexPath)))
}
if ( foundLualatex ) {
packageStartupMessage(paste(' LuaLaTeX found in', format(lualatexPath)))
}
}
# Any variables defined in here will be hidden
# from normal users.
.tikzInternal <- new.env()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.