tt_to_flextable {rtables.officer} | R Documentation |
Create a flextable
from an rtables
table
Description
Principally used within export_as_docx()
, this function produces a flextable
from an rtables
table.
If theme = theme_docx_default()
(default), a .docx
-friendly table will be produced.
If theme = NULL
, the table will be produced in an rtables
-like style.
Usage
tt_to_flextable(
tt,
theme = theme_docx_default(),
border = flextable::fp_border_default(width = 0.5),
indent_size = NULL,
titles_as_header = TRUE,
bold_titles = TRUE,
integrate_footers = TRUE,
counts_in_newline = FALSE,
paginate = FALSE,
fontspec = NULL,
lpp = NULL,
cpp = NULL,
...,
colwidths = NULL,
tf_wrap = !is.null(cpp),
max_width = cpp,
total_page_height = 10,
total_page_width = 10,
autofit_to_page = TRUE
)
theme_docx_default(
font = "Arial",
font_size = 9,
cell_margins = c(word_mm_to_pt(1.9), word_mm_to_pt(1.9), 0, 0),
bold = c("header", "content_rows", "label_rows", "top_left"),
bold_manual = NULL,
border = flextable::fp_border_default(width = 0.5)
)
theme_html_default(
font = "Courier",
font_size = 9,
cell_margins = 0.2,
remove_internal_borders = "label_rows",
border = flextable::fp_border_default(width = 1, color = "black")
)
word_mm_to_pt(mm)
Arguments
tt |
( |
theme |
( |
border |
( |
indent_size |
( |
titles_as_header |
( |
bold_titles |
( |
integrate_footers |
( |
counts_in_newline |
( |
paginate |
( |
fontspec |
( |
lpp |
( |
cpp |
( |
... |
( |
colwidths |
( |
tf_wrap |
( |
max_width |
( |
total_page_height |
( |
total_page_width |
( |
autofit_to_page |
( |
font |
( |
font_size |
( |
cell_margins |
( |
bold |
( |
bold_manual |
(named |
remove_internal_borders |
( |
mm |
( |
Details
If you would like to make a minor change to a pre-existing style, this can be done by extending themes. You can do
this by either adding your own theme to the theme call (e.g. theme = c(theme_docx_default(), my_theme)
) or creating
a new theme as shown in the examples below. Please pay close attention to the parameters' inputs.
It is possible to use some hidden values to build your own theme (hence the need for the ...
parameter). In
particular, tt_to_flextable()
uses the following variable: tbl_row_class = rtables::make_row_df(tt)$node_class
.
This is ignored if not used in the theme. See theme_docx_default()
for an example on how to retrieve and use these
values.
Value
A flextable
object.
Functions
-
theme_docx_default()
: Main theme function forexport_as_docx()
. -
theme_html_default()
: Theme function for html outputs. -
word_mm_to_pt()
: Padding helper functions to transform mm to pt.
Note
Currently cpp
, tf_wrap
, and max_width
are only used in pagination and should be used cautiously if used in
combination with colwidths
and autofit_to_page
. If issues arise, please raise an issue on GitHub or communicate
this to the package maintainers directly.
See Also
Examples
analysisfun <- function(x, ...) {
in_rows(
row1 = 5,
row2 = c(1, 2),
.row_footnotes = list(row1 = "row 1 - row footnote"),
.cell_footnotes = list(row2 = "row 2 - cell footnote")
)
}
lyt <- basic_table(
title = "Title says Whaaaat", subtitles = "Oh, ok.",
main_footer = "ha HA! Footer!"
) %>%
split_cols_by("ARM") %>%
analyze("AGE", afun = analysisfun)
tbl <- build_table(lyt, ex_adsl)
# Example 1: rtables style ---------------------------------------------------
tt_to_flextable(tbl, theme = NULL)
# Example 2: docx style ------------------------------------------------------
tt_to_flextable(tbl, theme = theme_docx_default(font_size = 6))
# Example 3: Extending the docx theme ----------------------------------------
my_theme <- function(x, ...) {
flextable::border_inner(x, part = "body", border = flextable::fp_border_default(width = 0.5))
}
flx <- tt_to_flextable(tbl, theme = c(theme_docx_default(), my_theme))
# Example 4: Creating a custom theme -----------------------------------------
special_bold <- list(
"header" = list("i" = 1, "j" = c(1, 3)),
"body" = list("i" = c(1, 2), "j" = 1)
)
custom_theme <- theme_docx_default(
font_size = 10,
font = "Brush Script MT",
border = flextable::fp_border_default(color = "pink", width = 2),
bold = NULL,
bold_manual = special_bold
)
tt_to_flextable(tbl,
border = flextable::fp_border_default(color = "pink", width = 2),
theme = custom_theme
)
# Example 5: Extending the docx theme ----------------------------------------
my_theme <- function(font_size = 6) { # here can pass additional arguments for default theme
function(flx, ...) {
# First apply theme_docx_default
flx <- theme_docx_default(font_size = font_size)(flx, ...)
# Then apply additional styling
flx <- flextable::border_inner(flx,
part = "body",
border = flextable::fp_border_default(width = 0.5)
)
return(flx)
}
}
flx <- tt_to_flextable(tbl, theme = my_theme())
# html theme
# Define a layout for the table
lyt <- basic_table() %>%
# Split columns by the "ARM" variable
split_cols_by("ARM") %>%
# Analyze the "AGE", "BMRKR2", and "COUNTRY" variables
analyze(c("AGE", "BMRKR2", "COUNTRY"))
# Build the table using the defined layout and example data 'ex_adsl'
tbl <- build_table(lyt, ex_adsl)
# Convert the table to a flextable object suitable for HTML,
# applying the default HTML theme and setting the orientation to landscape
tbl_html <- tt_to_flextable(
tbl,
theme = theme_html_default(),
section_properties = section_properties_default(orientation = "landscape")
)
# Save the flextable as an HTML file named "test.html"
flextable::save_as_html(tbl_html, path = tempfile(fileext = ".html"))