tinytable
offers a very flexible theming framwork, which includes a few basic visual looks, as well as other functions to apply collections of transformations to tinytable
objects in a repeatable way. These themes can be applied by supplying a string or function to the theme
argument in tt()
. Alternatively, users can call the specific theme functions like theme_striped()
, theme_grid()
, etc.
The main difference between theme functions and the other options in package, is that whereas style_tt()
and format_tt()
aim to be output agnostic, theme functions supply transformations that can be output-specific, and which can have their own sets of distinct arguments. See below for a few examples.
library(tinytable)
options(tinytable_tt_digits = 3)
options(tinytable_latex_placement = "H")
x <- mtcars[1:4, 1:5]
Visual themes
To begin, let’s explore a few of the basic looks supplied by themes:
mpg cyl disp hp drat 21 6 160 110 3.9 21 6 160 110 3.9 22.8 4 108 93 3.85 21.4 6 258 110 3.08 mpg cyl disp hp drat 21 6 160 110 3.9 21 6 160 110 3.9 22.8 4 108 93 3.85 21.4 6 258 110 3.08 mpg cyl disp hp drat 21 6 160 110 3.9 21 6 160 110 3.9 22.8 4 108 93 3.85 21.4 6 258 110 3.08 mpg cyl disp hp drat 21 6 160 110 3.9 21 6 160 110 3.9 22.8 4 108 93 3.85 21.4 6 258 110 3.08 Custom themesUsers can also define their own themes to apply consistent visual tweaks to tables. For example, this defines a themeing function and sets a global option to apply it to all tables consistently:1
theme_vincent <- function(x, ...) {
out <- x |>
style_tt(color = "teal") |>
theme_default()
out@caption <- "Always use the same caption."
out@width <- .5
return(out)
}
options(tinytable_tt_theme = theme_vincent)
tt(mtcars[1:2, 1:2])
Always use the same caption. mpg cyl 21 6 21 6 Always use the same caption. mpg cyl disp 21 6 160 21 6 160 22.8 4 108
options(tinytable_tt_theme = NULL)
Here is a slightly more complex example. The benefit of this approach is that we apply a function via the style_tt()
function and its finalize
argument, so we can leverage some of the object components that are only available at the printing stage:
theme_slides <- function(x, ...) {
fn <- function(table) {
if (isTRUE(table@output == "typst")) {
table@table_string <- paste0("#figure([\n", table@table_string, "\n])")
}
return(table)
}
x <- style_tt(x, finalize = fn)
return(x)
}
tt(head(iris), theme = theme_slides)
Note: the code above is not evaluated because it only applies to Typst output.
Tabular (LaTeX and HTML)The tabular
theme is designed to provide a more “raw” table, without a floating table environment in LaTeX, and without CSS or Javascript in HTML.
tt(x) |>
theme_latex(environment = "tabular", table = FALSE) |>
print("latex")
\begin{table}[H]
\centering
\begin{tabular}{lllll}
\hline
mpg & cyl & disp & hp & drat \\ \hline
21 & 6 & 160 & 110 & 3.9 \\
21 & 6 & 160 & 110 & 3.9 \\
22.8 & 4 & 108 & 93 & 3.85 \\
21.4 & 6 & 258 & 110 & 3.08 \\
\hline
\end{tabular}
\end{table}
LaTeX Resize
LaTeX only.
PlacementLaTeX only.
RotateLaTeX only.
MultipageLaTeX only.
User-written themesThis section provides a few user-written themes that can be used to extend the functionality of tinytable
. These themes are not included in the package by default, but they can be easily added to your workflow. If you would like your own custom theme to appear here, please open an issue on the tinytable GitHub repository or submit a pull request.
theme_mitex()
This theme was written by Kazuharu Yanagimoto. Thanks for your contribution!
The MiTeX project aims to bring LaTeX support to Typst documents. This theme replace every instance of matching pairs of dollars signs $..$
by a MiTeX function call: #mitex(...)
. This allows you to use LaTeX math in Typst documents.
Warning: The substitution code is very simple and it may not work properly when there are unmatched $
symbols in the document.
theme_mitex <- function(x, ...) {
fn <- function(table) {
if (isTRUE(table@output == "typst")) {
table@table_string <- gsub(
"\\$(.*?)\\$",
"#mitex(`\\1`)",
table@table_string)
}
return(table)
}
x <- style_tt(x, finalize = fn)
return(x)
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4