theme_tt("spacing")
: Change the row and column spacing to create more compact or airy tables. LaTeX and HTML only. Thanks to @statzhero for feature request #353.style_tt()
: the i
and j
indices are now consistent in all formats. They refer to rows after the insertion of row groups.save_tt()
respects options(tinytable_save_overwrite=TRUE)
style_tt(align="d")
. Issue #367options(tinytable_print_rstudio_notebook = "inline")
or "viewer"
Bugs:
group_tt()
. Thanks to @eeemda for report #362.New:
output="html_portable"
returns a portable HTML file, where plot_tt()
encodes and embeds the images directly in the HTML code, rather than link to external images. Thanks to @J-Moravec for implementing this nice feature!format_tt()
gets a math
argument to wrap cell content in $...$ math mode.group_tt(i = vec)
accepts a vector of labels of length equal to the number of rows in the dataset.tt()
gets an escape
argument. Thanks to Cameron Patrick for the feature request.i
argument in style_tt()
now accepts a logical matrix of same dimensions as x
, to style specific cells, rather than all combinations of i
and j
vectors. Thanks to @dhicks for the feature request #329.style_tt()
gets new output
argument for conditional styling based on output format.names()
method now supported for both returning column names and re-assingning them. Issue #332.Typst:
style_tt()
can override cell styling with successive calls, and the call order is respected.options(tinytable_quarto_figure = FALSE)
wraps Typst tables in a figure
environment in Quarto documents.Bugs:
theme_tabular()
is no longer greedy in replacing cmidrule
. Thanks to @jsr-p for code submission #349.HTML tables no longer insert MathJax scripts by default. This behavior could enter in conflict with other MathJax scripts loaded explicitly by the user or automatically by Quarto. Users can revert to the previous behavior by setting a global option:
options(tinytable_html_mathjax = TRUE)
Alternatively, users can insert appropriate scripts directly in their HTML document or as a Quarto literal chunk:
```{=html}
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
},
svg: {
fontCache: 'global'
}
};
</script>
```
tinytable_markdown_hlines
has been removed. To get a more minimal looking markdown table, use output "gfm" which is gfm compliant.format_tt(markdown=TRUE)
escapes groups and notes when i
and j
are NULL
.plot_tt()
: The height
argument is now respected in Markdown and Word documents.group_tt()
allows 0 and duplicates in i
argument for labels in the first row and consecutive labels.i=NULL
.colnames(x)<-NULL
works on a tinytable
object.format_tt(num_big_mark)
applies to integer columns.getOption("viewer")
instead of rstudioapi::viewer()
for positron supportglue::glue()
string is accepted by format_tt()
. Thanks to @LukasWallrich for report #792 on the modelsummary
repository.gfm
) output. Thanks to @kylebutts for contribution #315.theme_tt("rotate")
to rotate tables in LaTeX or Typst.save_tt("/path/to/file")
returns the file path invisibly. Thanks to @yjunechoe for issue #328.theme_tt("tabular")
no longer uses tabularray
or booktabs
. Only relies on basic LaTeX packages.theme_tt("tabular", style = "tabularray")
does the same as above, but keeps the \begin{tblr}
environment.style_tt()
supports align
for different rows and cells, rather than just whole columns.style_tt()
supports indent
argument.group_tt()
supports indent
argument.group_tt(j)
and style_tt(background)
theme_tt(x, horizontal = "l")
can left, center, or right-align a table in the page.save_tt("pdf")
:
options(tinytable_save_pdf_clean = TRUE)
options(tinytable_save_pdf_engine = "xelatex")
options(tinytable_tt_rownames=TRUE)
: Print row names in the first column by calling. Thanks to @rsbivand for Issue #264.options(tinytable_html_mathjax = TRUE)
. Inserts MathJax scripts in the HTML file. This may cause conflicts if MathJax is otherwise loaded in the document.replace
does not work in LaTeX with format_tt(quarto=TRUE)
. Thanks to @cbgoodman for Issue #263.style_tt(indent)
works for LaTeXformat_tt()
on a table without column names. Thanks to @andrewheiss for report #306.Breaking change:
width
argument is moved from style_tt()
to tt()
.tt()
:
width
argument now accepts a vector of numeric values to control the width of each column, as a proportion of the total linewidth.format_tt()
:
quarto
argument enables Quarto data processing for the whole table and marks specific cells as containing Quarto content. This is especially useful to include @Citation1981 in a table. Thanks to @andrewheiss for issue #215 and @giabaio for further discussion and debugging.replace
argument which accepts a single logical, a single string, or a named list to specify multiple replacements.replace=TRUE
by default replaces NA
by an empty string. FALSE
prints "NA" as string.replace_na
is deprecated in favor of replace
. Backward compatibility is maintained and a warning is issued.theme_tt()
:
style_tt()
:
save_tt()
:
Typst:
caption
argument, and rather to define both the label
and tbl-cap
chunk options in Quarto. This is a breaking change, as Typst tables are no longer enclosed in a #figure
environment in Quarto documents when both tbl-cap
and label
chunk options are defined.format_tt(escape=TRUE)
escapes square brackets.Misc:
beamer_presentations
, but see: https://github.com/vincentarelbundock/tinytable/issues/244options(tinytable_quarto_disable_processing = FALSE)
. Thanks to @andrewheiss for issue #215.Bug fixes:
format_tt()
. Issue #230.save_tt()
can now save to PDF when the table includes a caption. Thanks to @etiennebacher for report #224.group_tt(i)
inserted an extra latex column, which made horizontal lines stop to early. Thanks to @andrewheiss for report #235.rstudioapi
package is available.colnames
and colnames<-
are now exported functions.tt()
supports data.frame-like objects which also inherit from other classes, ex: marginaleffects::slopes()
options(tinytable_tt_print)
is respected in print()
without argument.New features:
rbind()
and rbind2()
can be used to stack tinytable
objects. rbind2()
is more flexible than rbind()
. See ?tinytable::rbind2
print()
: "dataframe"colnames(tab) <- c("a", "b", "c")
theme_tt("resize")
gets a direction
argument with "up", "down", "both" options. Thanks to @MarcoPortmann for feature request #207Minor:
Bugs:
theme_tt()
resize issue with talltblr
environment and notes in LaTeX. Thanks to @MarcoPortmann for reporting issue #206New function theme_tt()
:
tinytable
.resize
: Insert a LaTeX table in a resizebox
environment to ensure a table fits the page, or to scale it to a fraction of \linewidth
placement
: Determine where a LaTeX table float is positioned. Ex: [H]
, [htbp]
multipage
: Split long LaTeX tables across multiple pages with (optional) repeated headers/footers. Uses the longtblr
environment from tabularray
.format_tt()
:
i
argument to format subsets of rows.fn
argument which accepts an arbitrary function to format table content.num_fmt="significant_cell"
rounds significant digits on a cell-by-cell basis rather than for full columns (as is default in base R format()
).num_mark_big
and num_mark_dec
require an explicit digits
. We now raise an informative error.escape = TRUE
now escapes captions, notes, and spanning cells created by group_tt()
when i
and j
are both NULL
. To avoid escaping group labels, users can specify i
and/or j
explicitly.Typst format:
group_tt(i)
plot_tt()
. Thanks to @aghaynes for contribution #155.tinytable
. This allows users to apply targeted show rules. For example, in a table of contents: outline(target: figure.where(kind: "tinytable"))
Misc:
style_tt()
gains a finalize
argument. This accepts functions to be applied to the table object at the very end of the building process, to programmatically change its content. For example, this can be used with regular expressions to modify the text version of the table hosted in tab@table_string
, or the function could programmatically modify the caption in tab@caption
.style_tt()
: LaTeX format supports decimal alignement with align="d"
. The width of columns is determined by the maximum number of digits to the left and to the right in all cells specified by i
, j
.tibble
. ANSI characters (ex: fancy pillar
formatting) are stripped automatically or converted to HTML when the fansi
package is installed. fansi
is a dependency of tibble
, so it should often be installed.tinytable_tt_digits
global option can set the default number of digits in the tt()
function.tinytable
objects are now S4 class objects, with slots to hold data about the content and structure.as.character()
now works on tinytable
objects, returning a string in the output format specified by the @output
slot of the tinytable
object (markdown by default).tt(x, caption = "Blah blah \\label{tab:blah})
Breaking changes:
format_tt()
could be use sequentially to apply two formats to the same cell. Now, multiple calls to format_tt()
can still be make chained with pipes, but they must apply to different cells with i
, j
, otherwise only the last change is respected. One exception is the escape
argument which can be applied to pre-formatted cells.tinytable
objects no longer have a meta_tinytable
attribute. Use S4 slots instead.placement
argument in tt()
is removed in favor of theme_tt("placement")
.Bugs:
format_tt()
did not work on factor vector.format_tt()
escapes <> tags in Typst.group_tt(i)
in HTML.New:
j
argument in style_tt()
and format_tt()
now accepts a string vector to match columns. Issue #122plot_tt(fun = "line")
format_tt(j=NULL, escape=TRUE)
now escapes column headers in addition to all cells.format_tt()
gains a replace_na
argument to replace missing values.style_tt()
: rowspan
and colspan
arguments are now supported in all formats except Typst. In markdown and Word, we get "pseudo-spans" with empty cells around the main cell, instead of true merged cells.style_tt()
: alignv
argument is now supported for LaTeX and HTMLBugfix:
style_tt()
. Thanks to @strengejacke for report #133.New:
Typst
tables are now supported using the tablex
extension:
escape
argument in format_tt()
escapes or substitutes special characters in LaTeX or HTML output to prevent compilation and rendering errors.notes
argument in tt()
can insert superscript markers inside cells to refer to notes at the bottom of the page.
tt(x, notes = list("*" = list(i = 0:1, j = 2, text = "Hello world)))
notes
agument in tt()
now works wth Markdown and Word, but must be a single string.group_tt()
can be called multiple times to create mult-row headers.Improvements:
line
, line_width
, and line_color
arguments.Bug fixes:
Documentation:
Initial package release. Yay!