addStyles: Add/set css and other style options

addHtmlTableStyleR Documentation

Add/set css and other style options

Description

This function is a preprocessing step before applying the htmlTable() function. You use this to style your tables with HTML cascading style sheet features.

Usage

addHtmlTableStyle(
  x,
  align = NULL,
  align.header = NULL,
  align.cgroup = NULL,
  css.rgroup = NULL,
  css.rgroup.sep = NULL,
  css.tspanner = NULL,
  css.tspanner.sep = NULL,
  css.total = NULL,
  css.cell = NULL,
  css.cgroup = NULL,
  css.header = NULL,
  css.header.border_bottom = NULL,
  css.class = NULL,
  css.table = NULL,
  pos.rowlabel = NULL,
  pos.caption = NULL,
  col.rgroup = NULL,
  col.columns = NULL,
  padding.rgroup = NULL,
  padding.tspanner = NULL,
  spacer.celltype = NULL,
  spacer.css.cgroup.bottom.border = NULL,
  spacer.css = NULL,
  spacer.content = NULL
)

appendHtmlTableStyle(
  x,
  align = NULL,
  align.header = NULL,
  align.cgroup = NULL,
  css.rgroup = NULL,
  css.rgroup.sep = NULL,
  css.tspanner = NULL,
  css.tspanner.sep = NULL,
  css.total = NULL,
  css.cell = NULL,
  css.cgroup = NULL,
  css.header = NULL,
  css.header.border_bottom = NULL,
  css.class = NULL,
  css.table = NULL,
  pos.rowlabel = NULL,
  pos.caption = NULL,
  col.rgroup = NULL,
  col.columns = NULL,
  padding.rgroup = NULL,
  padding.tspanner = NULL,
  spacer.celltype = NULL,
  spacer.css.cgroup.bottom.border = NULL,
  spacer.css = NULL,
  spacer.content = NULL
)

Arguments

x

The object that you later want to pass into htmlTable().

align

A character strings specifying column alignments, defaulting to 'c' to center. Valid chars for alignments are l = left, c = center and r = right. You can also specify align='c|c' and other LaTeX tabular formatting. If you want to set the alignment of the rownames this string needst to be ncol(x) + 1, otherwise it automatically pads the string with a left alignment for the rownames.

align.header

A character strings specifying alignment for column header, defaulting to centered, i.e. ⁠[paste][base::paste](rep('c',ncol(x)),collapse='')⁠.

align.cgroup

The justification of the cgroups

css.rgroup

CSS style for the rgroup, if different styles are wanted for each of the rgroups you can just specify a vector with the number of elements.

css.rgroup.sep

The line between different rgroups. The line is set to the TR element of the lower rgroup, i.e. you have to set the border-top/padding-top etc to a line with the expected function. This is only used for rgroups that are printed. You can specify different separators if you give a vector of rgroup - 1 length (this is since the first rgroup doesn't have a separator).

css.tspanner

The CSS style for the table spanner.

css.tspanner.sep

The line between different spanners.

css.total

The css of the total row if such is activated.

css.cell

The css.cell element allows you to add any possible CSS style to your table cells. See section below for details.

css.cgroup

The same as css.class but for cgroup formatting.

css.header

The header style, not including the cgroup style

css.header.border_bottom

The header bottom-border style, e.g. ⁠border-bottom: 1px solid grey⁠

css.class

The html CSS class for the table. This allows directing html formatting through CSS directly at all instances of that class. Note: unfortunately the CSS is frequently ignored by word processors. This option is mostly inteded for web-presentations.

css.table

You can specify the the style of the table-element using this parameter

pos.rowlabel

Where the rowlabel should be positioned. This value can be "top", "bottom", "header", or a integer between 1 and nrow(cgroup) + 1. The options "bottom" and "header" are the same, where the row label is presented at the same level as the header.

pos.caption

Set to "bottom" to position a caption below the table instead of the default of "top".

col.rgroup

Alternating colors (zebra striping/banded rows) for each rgroup; one or two colors is recommended and will be recycled.

col.columns

Alternating colors for each column.

padding.rgroup

Generally two non-breakings spaces, i.e. ⁠  ⁠, but some journals only have a bold face for the rgroup and leaves the subelements unindented.

padding.tspanner

The table spanner is usually without padding but you may specify padding similar to padding.rgroup and it will be added to all elements, including the rgroup elements. This allows for a 3-level hierarchy if needed.

spacer.celltype

When using cgroup the table headers are separated through a empty HTML cell that is by default filled with ⁠ ⁠ (no-breaking-space) that prevents the cell from collapsing. The purpose of this is to prevent the headers underline to bleed into one as the underline is for the entire cell. You can alter this behavior by changing this option, valid options are single_empty, skip, double_cell. The single_empty is the default, the skip lets the header bleed into one and skips entirely, double_cell is for having two cells so that a vertical border ends up centered (specified using the align option). The arguments are matched internally using base::match.arg so you can specify only a part of the name, e.g. "sk" will match "skip".

spacer.css.cgroup.bottom.border

Defaults to none and used for separating cgroup headers. Due to a browser bug this is sometimes ignored and you may therefore need to set this to ⁠1px solid white⁠ to enforce a white border.

spacer.css

If you want the spacer cells to share settings you can set it here

spacer.content

Defaults to ⁠ ⁠ as this guarantees that the cell is not collapsed and is highly compatible when copy-pasting to word processors.

Details

The function stores the current theme (see setHtmlTableTheme()) + custom styles to the provided object as an base::attributes(). It is stored under the element htmlTable.style in the form of a list object.

Value

x with the style added as an attribute that the htmlTable then can use for formatting.

The css.cell argument

The css.cell parameter allows you to add any possible CSS style to your table cells. css.cell can be either a vector or a matrix.

If css.cell is a vector, it's assumed that the styles should be repeated throughout the rows (that is, each element in css.cell specifies the style for a whole column of 'x').

In the case of css.cell being a matrix of the same size of the x argument, each element of x gets the style from the corresponding element in css.cell. Additionally, the number of rows of css.cell can be nrow(x) + 1 so the first row of of css.cell specifies the style for the header of x; also the number of columns of css.cell can be ncol(x) + 1 to include the specification of style for row names of x.

Note that the text-align CSS field in the css.cell argument will be overriden by the align argument.

Excel has a specific css-style, mso-number-format that can be used for improving the copy-paste functionality. E.g. the style could be written as: ⁠css_matrix <- matrix( data = "mso-number-format:\"\\@\"", nrow = nrow(df), ncol = ncol(df))⁠

See Also

Other htmlTableStyle: hasHtmlTableStyle()

Examples

library(magrittr)
matrix(1:4, ncol = 2) %>%
  addHtmlTableStyle(align = "c", css.cell = "background-color: orange;") %>%
  htmlTable(caption = "A simple style example")

htmlTable documentation built on Nov. 2, 2023, 6:26 p.m.