I am just starting to write some documents with Sweave/R
and I like the \\sexpr{}
command that lets one tow write numbers directly within text.
An example using siunitx link to pdf. In the preamble you can define your default options which you may override later in the document.
For numeric output :
num <- function(x,round_precision=NULL)
{
if (is.null(round_precision)) {
return(sprintf("\\num{%s}", x))
} else {
return(sprintf("\\num[round-precision=%s]{%s}",round_precision, x))
}
}
For scientific output :
sci<- function(x,round_precision=NULL){
if (is.null(round_precision)) {
return(sprintf("\\num[scientific-notation = true]{%s}", x))
} else {
return(sprintf("\\num[round-precision=%s,scientific-notation = true]{%s}",round_precision, x))
}
}
Here is a full reproducible .Rnw script (to be used with knitr ... for sweave use four antislashes in the functions instead of two see this SO post.)
\documentclass[a4paper]{article}
\usepackage{siunitx}
%\usepackage{Sweave}
\title{siunitx}
\sisetup{
round-mode = figures,
round-precision = 3,
group-separator = \text{~}
}
\begin{document}
\maketitle
<>=
num <- function(x,round_precision=NULL)
{
if (is.null(round_precision)) {
return(sprintf("\\num{%s}", x))
} else {
return(sprintf("\\num[round-precision=%s]{%s}",round_precision, x))
}
}
sci<- function(x,round_precision=NULL){
if (is.null(round_precision)) {
return(sprintf("\\num[scientific-notation = true]{%s}", x))
} else {
return(sprintf("\\num[round-precision=%s,scientific-notation = true]{%s}",round_precision, x))
}
}
@
Examples :\\
$num$ for number formatting :
\begin{itemize}
\item \textbf{num(pi, round\_precision=2)} $\Rightarrow$
\num[round-precision=2]{3.14159265358979}
\item \textbf{num(pi, round\_precision=4)} $\Rightarrow$
\num[round-precision=4]{3.14159265358979}
\item The default formatting (here round-precision=3) is taken from
\textbf{\textbackslash sisetup}
\textbf{num(pi)} $\Rightarrow$ \num{3.14159265358979}\\
\end{itemize}
\noindent $sci$ for scientific notation :
\begin{itemize}
\item \textbf{sci(12.5687e4)} $\Rightarrow$ \num[scientific-notation =
true]{125687}
\item \textbf{sci(125687.11111)} $\Rightarrow$
\num[scientific-notation = true]{125687.11111}
\item \textbf{sci(125687.11111, round\_precision=4)} $\Rightarrow$
\Sexpr{sci(125687.11111, round_precision=4)}
\end{itemize}
\end{document}