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!