0. Installation
To install the package from CRAN:
install.packages("textab")To install the package from Github:
devtools::install_github("setzler/textab")To use the package after it is installed:
1. Character rows
Basic character row:
vec = c("hello", "world")
TexRow(vec)
#> % created using textab on Wed Apr 26 17:42:45 2023
#> \begin{tabular}{rr}
#> hello & world \\
#> \end{tabular}Character row with LaTeX formatting:
vec = c('Hello','\\textbf{World}','$\\alpha$','$\\frac{1}{2}$')
TexRow(vec)
#> % created using textab on Wed Apr 26 17:42:45 2023
#> \begin{tabular}{rrrr}
#> Hello & \textbf{World} & $\alpha$ & $\frac{1}{2}$ \\
#> \end{tabular}Note: Double backslashes are required for LaTeX commands.
2. Numeric rows
Basic numeric row:
vec <- c(1.0, 1.01, 1.001)
TexRow(vec)
#> % created using textab on Wed Apr 26 17:42:45 2023
#> \begin{tabular}{rrr}
#> 1.000 & 1.010 & 1.001 \\
#> \end{tabular}Numeric row rounded to the second decimal place:
vec <- c(1.0, 1.01, 1.001)
TexRow(vec, dec = 2)
#> % created using textab on Wed Apr 26 17:42:45 2023
#> \begin{tabular}{rrr}
#> 1.00 & 1.01 & 1.00 \\
#> \end{tabular}There are four other arguments specific to numeric rows:
-
percentage: if TRUE, add a “%” sign after each number. -
dollar: if TRUE, add a “$” sign before each number. -
se: if TRUE, surround each number with parentheses. -
pvalues: if provided, these numbers are used to add stars “*” after the numbers.
See this article about formatting numbers.
3. Custom Formatting using Surround
While many common formatting options are explicitly provided in
TexRow, we also include the surround argument
so that the user can specify custom formatting.
The surround argument allows you to provide raw LaTeX code. Place the
%s symbol wherever your number or character should be
placed.
Suppose you wish to make each number red. In LaTeX, you can make a
number red using the code {\color{red} %s}, where
%s indicates where the number should go. In order to make
each number red, we would specify the following:
vec = c(5.081, 2.345, 6.789)
TexRow(vec, dec = 1, surround = "{\\color{red} %s}")
#> % created using textab on Wed Apr 26 17:42:45 2023
#> \begin{tabular}{rrr}
#> {\color{red} 5.1} & {\color{red} 2.3} & {\color{red} 6.8} \\
#> \end{tabular}Note: Double backslashes are required for LaTeX commands.
The surround argument works for character vectors as
well, and we can apply different formatting to each value:
4. Multicolumn Rows
Merge and center the second and third rows using the
cspan argument:
vec = c("hello", "world")
TexRow(vec, cspan = c(1,2))
#> % created using textab on Wed Apr 26 17:42:45 2023
#> \begin{tabular}{rr}
#> hello & \multicolumn{2}{c}{world} \\
#> \end{tabular}Merge and left-align the second and third rows using the
position argument:
vec = c("hello", "world")
TexRow(vec, cspan = c(1,2), position = "l")
#> % created using textab on Wed Apr 26 17:42:45 2023
#> \begin{tabular}{rr}
#> hello & \multicolumn{2}{l}{world} \\
#> \end{tabular}Two multi-column rows, where the first is two-column left-aligned and the second is three-column right-aligned:
5. Combine Rows
Order of Operations: Horizontal Comes First
When using both horizontal and vertical concatenation in the same line, horizontal concatenation will be performed first:
first_block = TexRow(c("hello", "world"))
second_block = TexRow(c("$\\alpha$"))
third_block = TexRow(c("$\\frac{1}{2}$"))
combined_row = first_block + second_block / third_block
combined_row
#> % created using textab on Wed Apr 26 17:42:46 2023
#> \begin{tabular}{rr}
#> hello & world \\
#> $\alpha$ & $\frac{1}{2}$ \\
#> \end{tabular}7. Midrule and Partial Midrules
Add a full midrule between two rows:
TexRow(c("hello", "world"), cspan=c(1,2)) +
TexMidrule() +
TexRow(c('$\\alpha$','$\\frac{1}{2}$','$\\sqrt{\\frac{2}{3}}$'))
#> % created using textab on Wed Apr 26 17:42:46 2023
#> \begin{tabular}{rrr}
#> hello & \multicolumn{2}{c}{world} \\
#> \midrule
#> $\alpha$ & $\frac{1}{2}$ & $\sqrt{\frac{2}{3}}$ \\
#> \end{tabular}Add two partial midrules:
TexRow(c("hello", "world"), cspan=c(1,2)) +
TexMidrule(list(c(1,1), c(2,3))) +
TexRow(c('$\\alpha$','$\\frac{1}{2}$','$\\sqrt{\\frac{2}{3}}$'))
#> % created using textab on Wed Apr 26 17:42:46 2023
#> \begin{tabular}{rrr}
#> hello & \multicolumn{2}{c}{world} \\
#> \cmidrule(lr){1-1} \cmidrule(lr){2-3}
#> $\alpha$ & $\frac{1}{2}$ & $\sqrt{\frac{2}{3}}$ \\
#> \end{tabular}8. Save a LaTeX table in .tex format
Let us work with the following table:
tt = TexRow(c("hello", "world"), cspan=c(1,2), surround = c("{\\color{red} %s}", "{\\color{blue} %s}")) +
TexMidrule(list(c(1,1), c(2,3))) +
TexRow(c('$\\alpha$','$\\frac{1}{2}$','$\\sqrt{\\frac{2}{3}}$'))Save a simple .tex document containing this table:
Save a stand-alone .tex document that could be compiled, as it has begin-document and end-document statements as well as import statements for common LaTeX packages:
TexSave(tab = tt, positions = c("l","c","c"),
filename = "example2", output_path = tempdir(),
stand_alone = TRUE)Note: these examples saved the table to a temporary directory,
tempdir(). In practice, you will likely want to save the
table to a permanent directory. If you do not provide an
output_path, the table will be saved to your current
working directory, getwd().