From 61e17a2416cb0ed4393e3ac2d73aaa9b7ae5db22 Mon Sep 17 00:00:00 2001 From: vincentarelbundock Date: Mon, 12 Aug 2024 11:26:14 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20vincenta?= =?UTF-8?q?relbundock/tinytable@720dcfd2c762b1a72d8b1b63d6533033c1f85e03?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- man/format_tt.html | 134 +- man/group_tt.html | 246 ++-- man/rbind2-tinytable-tinytable-method.html | 92 +- man/theme_tt.html | 34 +- man/tt.html | 88 +- search.json | 12 +- vignettes/custom.html | 204 +-- vignettes/faq.html | 26 +- vignettes/format.html | 362 ++--- vignettes/group.html | 688 ++++----- vignettes/plot.html | 246 ++-- vignettes/style.html | 1230 ++++++++--------- vignettes/theme.html | 128 +- vignettes/tinytable.html | 520 +++---- .../id0kc7nxw5ugerblr8pub4.png | Bin 0 -> 8399 bytes .../id370c2gs6xg8i78rl8f41.png | Bin 0 -> 2444 bytes .../id42x9fz2ohzjtps6ihrps.png | Bin 0 -> 11898 bytes .../id47o62vpq3c1eu5q8kqk7.png | Bin 0 -> 2072 bytes .../id4ga4nm2rvwuzopjihv21.png | Bin 0 -> 11912 bytes .../id5od3yn7n4qixho68l2it.png | Bin 0 -> 11877 bytes .../id5q2x3ng68cx1fdq76xwg.png | Bin 0 -> 2558 bytes .../id5rgazsnjd1b3pqfektf0.png | Bin 0 -> 11745 bytes .../id7iznoku9v76cwympizsv.png | Bin 0 -> 529 bytes .../id9ffvhwla3bljp3stam5g.png | Bin 0 -> 12175 bytes .../idbjm1rl82toyh9xw304n9.png | Bin 0 -> 15240 bytes .../iddpmok54iofhmrggxxn0d.png | Bin 0 -> 2077 bytes .../idfml57yc1z5ye0j894fkv.png | Bin 0 -> 1829 bytes .../idi4yvrcuclp86s33os9nr.png | Bin 0 -> 5080 bytes .../idm3zya235ewlokohfy1ce.png | Bin 0 -> 512 bytes .../idmy282brofai07x0xvwtv.png | Bin 0 -> 2564 bytes .../idpbzammdqon1j7ypqsuf2.png | Bin 0 -> 1127 bytes .../idpvbevrf17t9gvvfejrsx.png | Bin 0 -> 5073 bytes .../idrywcl8tf16azh1uo81em.png | Bin 0 -> 548 bytes .../idsqhdx6r1507tg15exou9.png | Bin 0 -> 1728 bytes .../idsqoycub1mzwagcsno1ey.png | Bin 0 -> 11026 bytes .../idt2phngkq9no6ilgd3nlq.png | Bin 0 -> 2191 bytes .../idua7zgzmjy0hm0utz9abz.png | Bin 0 -> 12915 bytes .../idvwszbq0kqwnyidyemsgg.png | Bin 0 -> 1846 bytes .../idygrux2wolr5xdw4f6qfx.png | Bin 0 -> 2214 bytes .../idyr5ie6mf50gov22745el.png | Bin 0 -> 2250 bytes .../idzcxr6edk5x0bqu29jaoy.png | Bin 0 -> 5057 bytes vignettes/tinytable_tutorial.pdf | Bin 1800057 -> 1795514 bytes 42 files changed, 2006 insertions(+), 2004 deletions(-) create mode 100644 vignettes/tinytable_assets/id0kc7nxw5ugerblr8pub4.png create mode 100644 vignettes/tinytable_assets/id370c2gs6xg8i78rl8f41.png create mode 100644 vignettes/tinytable_assets/id42x9fz2ohzjtps6ihrps.png create mode 100644 vignettes/tinytable_assets/id47o62vpq3c1eu5q8kqk7.png create mode 100644 vignettes/tinytable_assets/id4ga4nm2rvwuzopjihv21.png create mode 100644 vignettes/tinytable_assets/id5od3yn7n4qixho68l2it.png create mode 100644 vignettes/tinytable_assets/id5q2x3ng68cx1fdq76xwg.png create mode 100644 vignettes/tinytable_assets/id5rgazsnjd1b3pqfektf0.png create mode 100644 vignettes/tinytable_assets/id7iznoku9v76cwympizsv.png create mode 100644 vignettes/tinytable_assets/id9ffvhwla3bljp3stam5g.png create mode 100644 vignettes/tinytable_assets/idbjm1rl82toyh9xw304n9.png create mode 100644 vignettes/tinytable_assets/iddpmok54iofhmrggxxn0d.png create mode 100644 vignettes/tinytable_assets/idfml57yc1z5ye0j894fkv.png create mode 100644 vignettes/tinytable_assets/idi4yvrcuclp86s33os9nr.png create mode 100644 vignettes/tinytable_assets/idm3zya235ewlokohfy1ce.png create mode 100644 vignettes/tinytable_assets/idmy282brofai07x0xvwtv.png create mode 100644 vignettes/tinytable_assets/idpbzammdqon1j7ypqsuf2.png create mode 100644 vignettes/tinytable_assets/idpvbevrf17t9gvvfejrsx.png create mode 100644 vignettes/tinytable_assets/idrywcl8tf16azh1uo81em.png create mode 100644 vignettes/tinytable_assets/idsqhdx6r1507tg15exou9.png create mode 100644 vignettes/tinytable_assets/idsqoycub1mzwagcsno1ey.png create mode 100644 vignettes/tinytable_assets/idt2phngkq9no6ilgd3nlq.png create mode 100644 vignettes/tinytable_assets/idua7zgzmjy0hm0utz9abz.png create mode 100644 vignettes/tinytable_assets/idvwszbq0kqwnyidyemsgg.png create mode 100644 vignettes/tinytable_assets/idygrux2wolr5xdw4f6qfx.png create mode 100644 vignettes/tinytable_assets/idyr5ie6mf50gov22745el.png create mode 100644 vignettes/tinytable_assets/idzcxr6edk5x0bqu29jaoy.png diff --git a/man/format_tt.html b/man/format_tt.html index c7afff2d..124304d2 100644 --- a/man/format_tt.html +++ b/man/format_tt.html @@ -678,12 +678,12 @@

Examples

- +
@@ -737,16 +737,16 @@

Examples

- - + + - - + + - - + +
9 9999 99910 00110 001
9 9999 99910 00010 000
9 9999 999 9 999 9 999
@@ -759,12 +759,12 @@

Examples

- +
@@ -838,12 +838,12 @@

Examples

-
+
@@ -929,12 +929,12 @@

Examples

-
+
@@ -1002,12 +1002,12 @@

Examples

-
+
@@ -1075,12 +1075,12 @@

Examples

-
+
@@ -1159,12 +1159,12 @@

Examples

-
+
diff --git a/man/group_tt.html b/man/group_tt.html index 7bab41fa..2840c9f4 100644 --- a/man/group_tt.html +++ b/man/group_tt.html @@ -482,12 +482,12 @@

Examples

-
+
@@ -656,12 +656,12 @@

Examples

-
+
@@ -853,12 +853,12 @@

Examples

-
+
@@ -1043,12 +1043,12 @@

Examples

-
Hamburgers
+
diff --git a/man/rbind2-tinytable-tinytable-method.html b/man/rbind2-tinytable-tinytable-method.html index df2bb27e..0c81e23a 100644 --- a/man/rbind2-tinytable-tinytable-method.html +++ b/man/rbind2-tinytable-tinytable-method.html @@ -487,12 +487,12 @@

Examples

-
Foo
+
@@ -603,12 +603,12 @@

Examples

-
Combine two tiny tables.
+
@@ -720,12 +720,12 @@

Examples

-
Combine two tiny tables.
+
@@ -830,12 +830,12 @@

Examples

-
Combine two tiny tables.
+
diff --git a/man/theme_tt.html b/man/theme_tt.html index c7c9021e..802a19cb 100644 --- a/man/theme_tt.html +++ b/man/theme_tt.html @@ -552,12 +552,12 @@

Examples

-
Combine two tiny tables.
+
diff --git a/man/tt.html b/man/tt.html index 49ed4c6a..2b4a7667 100644 --- a/man/tt.html +++ b/man/tt.html @@ -608,12 +608,12 @@

Examples

-
+
@@ -713,12 +713,12 @@

Examples

-
+
@@ -941,12 +941,12 @@

Examples

-
+
diff --git a/search.json b/search.json index 3bb621de..decaa4a8 100644 --- a/search.json +++ b/search.json @@ -209,7 +209,7 @@ "href": "vignettes/faq.html", "title": "FAQ", "section": "", - "text": "Relative widths tables: table-layout: fixed vs auto.\n\n\n\n\n\n\ntinytable uses the tabularray package from your LaTeX distribution to draw tables. tabularray, in turn, provides special tblr, talltblr, and longtblr environments to display tabular data.\nWhen rendering a document from Quarto or Rmarkdown directly to PDF, tinytable will populate the LaTeX preamble automatically with all the required packages (except when code chunks are cached). For standalone LaTeX documents, these commands should be inserted in the preamble manually:\n\\usepackage{tabularray}\n\\usepackage{float}\n\\usepackage{graphicx}\n\\usepackage[normalem]{ulem}\n\\UseTblrLibrary{booktabs}\n\\UseTblrLibrary{siunitx}\n\\newcommand{\\tinytableTabularrayUnderline}[1]{\\underline{#1}}\n\\newcommand{\\tinytableTabularrayStrikeout}[1]{\\sout{#1}}\n\\NewTableCommand{\\tinytableDefineColor}[3]{\\definecolor{#1}{#2}{#3}}\n\n\n\nSome users have encountered unexpected spacing behavior when generating tables that are not wrapped in a \\begin{table} environment (ex: multipage or raw tblr).\nOne issue stems from the fact that the \\begin{table} environment resets any spacing commands in the preamble or body by default, such as:\n\\usepackage{setspace}\n\\doublespacing\nThis means that when using theme_tt(\"multipage\") —which does not wrap the table in a table environment— the spacing is not reset, and tables are double spaced. This is not a bug, since double-spacing is in fact what the user requested. Nevertheless, the behavior can seem surprising for those used to the automagical table environment spacing reset.\nOne workaround is to add the following to the document preamble when using multipage/longtblr:\n\\usepackage{etoolbox}\n\\AtBeginEnvironment{longtblr}{\\begin{singlespacing}}\n\\AtEndEnvironment{longtblr}{\\end{singlespacing}}\nExample Quarto doc:\n---\ntitle: longtblr and setspacing\nformat:\n pdf:\n include-in-header:\n - text: |\n % Tinytable preamble\n \\usepackage{tabularray}\n \\usepackage{float}\n \\usepackage{graphicx}\n \\usepackage{codehigh}\n \\usepackage[normalem]{ulem}\n \\UseTblrLibrary{booktabs}\n \\UseTblrLibrary{siunitx}\n \\newcommand{\\tinytableTabularrayUnderline}[1]{\\underline\n {#1}}\n \\newcommand{\\tinytableTabularrayStrikeout}[1]{\\sout{#1}}\n \\NewTableCommand{\\tinytableDefineColor}[3]{\\definecolor{\n #1}{#2}{#3}}\n % Spacing Commands\n \\usepackage{setspace}\n \\doublespacing\n % Fix Spacing in longtblr\n \\usepackage{etoolbox}\n \\AtBeginEnvironment{longtblr}{\\begin{singlespacing}}\n \\AtEndEnvironment{longtblr}{\\end{singlespacing}}\n---\n\n```{=latex}\n\\begin{longtblr}[ %% tabularray outer open\n] %% tabularray outer close\n{ %% tabularray inner open\ncolspec={Q[]Q[]Q[]Q[]},\n} %% tabularray inner close\n\\toprule\nfoo & bar & baz \\\\\nfoo & bar & baz \\\\\nfoo & bar & baz \\\\\n\\bottomrule\n\\end{longtblr}\n```\n\n\n\ntabularray allows very powerful styling and themeing options. See the reference manual for more information.\nFor example, you can change the size of footnotes in all tables of a document with:\n---\nformat: \n pdf:\n keep-tex: true\n header-includes: |\n \\SetTblrStyle{foot}{font=\\LARGE}\n---\n\n```{r}\nlibrary(tinytable)\nlibrary(magrittr)\ntt(head(iris), notes = \"Blah blah\")\n```\n\n\n\nDue to a bug in the upstream package rmarkdown, Quarto or Rmarkdown presentations compiled to Beamer cannot include adequate package loading commands in the preamble automatically. This bug prevents tinytable::usepackage_latex() from modifying the preamble. Here’s a workaround.\nSave this LaTeX code as preamble.tex:\n\\RequirePackage{tabularray}\n\\RequirePackage{booktabs}\n\\RequirePackage{float}\n\\usepackage[normalem]{ulem}\n\\usepackage{graphicx}\n\\UseTblrLibrary{booktabs}\n\\UseTblrLibrary{siunitx}\n\\NewTableCommand{\\tinytableDefineColor}[3]{\\definecolor{#1}{#2}{#3}}\n\\newcommand{\\tinytableTabularrayUnderline}[1]{\\underline{#1}}\n\\newcommand{\\tinytableTabularrayStrikeout}[1]{\\sout{#1}}\nThen, load preamble.tex in your YAML header:\n---\noutput: \n beamer_presentation:\n includes:\n in_header: preamble.tex\n---\nWith these changes, the table should appear with colors as expected.\n\n\n\n\n\n\nDue to a quirk in Quarto reported here, captions in Typst and Quarto documents need to be specified using both the tbl-cap and the label chunk option:\n```{r}\n#| tbl-cap: \"blah blah blah\"\n#| label: tbl-blah\ntinytable::tt(head(iris, 5))\n```\n\n\n\nThe Typst tables created by tinytable are automatically broken across pages with repeated headers. However, in Quarto documents, the Quarto software wraps tables in an non-breakable #figure environment. This can break the display of long tables. One solution is to use a raw Typst code block to set Figures to be breakable:\n---\nformat: typst\n---\n\n```{=typst}\n#show figure: set block(breakable: true)\n```\n\n```{r}\n#| tbl-cap: \"blah blah blah\"\n#| label: tbl-blah\nlibrary(tinytable)\ntt(head(iris, 50))\n```\n\n\n\n\n\n\nThis is an important limitation, but it is difficult to get around. See this issue for discussion: https://github.com/vincentarelbundock/tinytable/issues/125\nUsers can use markdown styling directly in group_tt() to circumvent this. This is documented in the tutorial.\n\n\n\nThese arguments are already implemented in the form of “pseudo-spans”, meaning that we flush the content of adjacent cells, but do not modify the row or column borders. This is probably adequate for most needs.\nOne alternative would be to remove line segments in finalize_grid(). I tried this but it is tricky and the results were brittle, so I rolled it back. I’m open to considering a PR if someone wants to contribute code, but please discuss the feature design in an issue with me before working on this.\n\n\n\n\n\n\nIn Quarto, it is possible to create a custom crossref type for things like appendix tables. One challenge, is that LaTeX will not allow users to nest a tblr environment, inside a table environment, inside the new environment that Quarto creates for the crossref. Therefore, when rendering a table to LaTeX/PDF, it is important to drop the \\begin{table} environment. This can be done using the theme_tt() function.\nIn the example below, we call theme_tt() explicitly for a single table, but the themes vignette shows how to set a global theme using the tinytable_tt_theme option.\n---\ntitle: \"Crossref Example\"\nformat:\n pdf: default\n html: default\ncrossref:\n custom:\n - kind: float\n key: apptbl\n latex-env: apptbl\n reference-prefix: Table A\n space-before-numbering: false\n latex-list-of-description: Appendix Table\napptbl-cap-location: top\n---\n\nSee @apptbl-testing\n\n::: {#apptbl-testing}\n\n```{r}\nlibrary(tinytable)\n\ntt(mtcars[1:5,]) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\nCaption goes here.\n\n:::\n\n\n\nWith version 0.4.0 of tinytable and versions above 1.6 of Quarto—only available as a pre-release build at the time of writing— users can specify sub-captions for tables. This is done by adding a tbl-subcap chunk option to the table chunk. We also need to use a tinytable theme to remove built-in table structure and let Quarto handle the table construction. Here is a simple example document:\n---\nformat: pdf\n---\n\n```{r}\n#| label: tbl-example\n#| tbl-cap: \"Example\"\n#| tbl-subcap: \n#| - \"Cars\"\n#| - \"Pressure\"\n#| layout-ncol: 2\n\nlibrary(tinytable)\ntt(head(cars)) |> theme_tt(\"tabular\", style = \"tabularray\")\ntt(head(pressure)) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\n\n\nIn some cases, the user wants to print a single table multiple times with different styles in a single HTML document. This will sometimes cause issues, because the style_tt() function inserts several javascript functions to modify the same table, thus creating conflicts. A simple solution is to change the unique ID of the table object manually.\nConsider this RevalJS slideshow in which we sequentially highlight different rows of the data frame:\n---\nformat: revealjs\n---\n\n## Page 1\n\n```{r}\nlibrary(tinytable)\n\ntab <- tt(head(iris))\ntab\n```\n\n## Page 2\n\n```{r}\ntab@id <- \"table_01\"\ntab |> style_tt(i = 3, background = \"skyblue\")\n```\n\n## Page 3\n\n```{r}\ntab@id <- \"table_02\"\ntab |> style_tt(i = 5, background = \"orange\")\n```", + "text": "Relative widths tables: table-layout: fixed vs auto.\n\n\n\n\n\n\ntinytable uses the tabularray package from your LaTeX distribution to draw tables. tabularray, in turn, provides special tblr, talltblr, and longtblr environments to display tabular data.\nWhen rendering a document from Quarto or Rmarkdown directly to PDF, tinytable will populate the LaTeX preamble automatically with all the required packages (except when code chunks are cached). For standalone LaTeX documents, these commands should be inserted in the preamble manually:\n\\usepackage{tabularray}\n\\usepackage{float}\n\\usepackage{graphicx}\n\\usepackage[normalem]{ulem}\n\\UseTblrLibrary{booktabs}\n\\UseTblrLibrary{siunitx}\n\\newcommand{\\tinytableTabularrayUnderline}[1]{\\underline{#1}}\n\\newcommand{\\tinytableTabularrayStrikeout}[1]{\\sout{#1}}\n\\NewTableCommand{\\tinytableDefineColor}[3]{\\definecolor{#1}{#2}{#3}}\n\n\n\nSome users have encountered unexpected spacing behavior when generating tables that are not wrapped in a \\begin{table} environment (ex: multipage or raw tblr).\nOne issue stems from the fact that the \\begin{table} environment resets any spacing commands in the preamble or body by default, such as:\n\\usepackage{setspace}\n\\doublespacing\nThis means that when using theme_tt(\"multipage\") —which does not wrap the table in a table environment— the spacing is not reset, and tables are double spaced. This is not a bug, since double-spacing is in fact what the user requested. Nevertheless, the behavior can seem surprising for those used to the automagical table environment spacing reset.\nOne workaround is to add the following to the document preamble when using multipage/longtblr:\n\\usepackage{etoolbox}\n\\AtBeginEnvironment{longtblr}{\\begin{singlespacing}}\n\\AtEndEnvironment{longtblr}{\\end{singlespacing}}\nExample Quarto doc:\n---\ntitle: longtblr and setspacing\nformat:\n pdf:\n include-in-header:\n - text: |\n % Tinytable preamble\n \\usepackage{tabularray}\n \\usepackage{float}\n \\usepackage{graphicx}\n \\usepackage{codehigh}\n \\usepackage[normalem]{ulem}\n \\UseTblrLibrary{booktabs}\n \\UseTblrLibrary{siunitx}\n \\newcommand{\\tinytableTabularrayUnderline}[1]{\\underline\n {#1}}\n \\newcommand{\\tinytableTabularrayStrikeout}[1]{\\sout{#1}}\n \\NewTableCommand{\\tinytableDefineColor}[3]{\\definecolor{\n #1}{#2}{#3}}\n % Spacing Commands\n \\usepackage{setspace}\n \\doublespacing\n % Fix Spacing in longtblr\n \\usepackage{etoolbox}\n \\AtBeginEnvironment{longtblr}{\\begin{singlespacing}}\n \\AtEndEnvironment{longtblr}{\\end{singlespacing}}\n---\n\n```{=latex}\n\\begin{longtblr}[ %% tabularray outer open\n] %% tabularray outer close\n{ %% tabularray inner open\ncolspec={Q[]Q[]Q[]Q[]},\n} %% tabularray inner close\n\\toprule\nfoo & bar & baz \\\\\nfoo & bar & baz \\\\\nfoo & bar & baz \\\\\n\\bottomrule\n\\end{longtblr}\n```\n\n\n\ntabularray allows very powerful styling and themeing options. See the reference manual for more information.\nFor example, you can change the size of footnotes in all tables of a document with:\n---\nformat: \n pdf:\n keep-tex: true\n header-includes: |\n \\SetTblrStyle{foot}{font=\\LARGE}\n---\n\n```{r}\nlibrary(tinytable)\nlibrary(magrittr)\ntt(head(iris), notes = \"Blah blah\")\n```\n\n\n\nDue to a bug in the upstream package rmarkdown, Quarto or Rmarkdown presentations compiled to Beamer cannot include adequate package loading commands in the preamble automatically. This bug prevents tinytable::usepackage_latex() from modifying the preamble. Here’s a workaround.\nSave this LaTeX code as preamble.tex:\n\\RequirePackage{tabularray}\n\\RequirePackage{booktabs}\n\\RequirePackage{float}\n\\usepackage[normalem]{ulem}\n\\usepackage{graphicx}\n\\UseTblrLibrary{booktabs}\n\\UseTblrLibrary{siunitx}\n\\NewTableCommand{\\tinytableDefineColor}[3]{\\definecolor{#1}{#2}{#3}}\n\\newcommand{\\tinytableTabularrayUnderline}[1]{\\underline{#1}}\n\\newcommand{\\tinytableTabularrayStrikeout}[1]{\\sout{#1}}\nThen, load preamble.tex in your YAML header:\n---\noutput: \n beamer_presentation:\n includes:\n in_header: preamble.tex\n---\nWith these changes, the table should appear with colors as expected.\n\n\n\n\n\n\nDue to a quirk in Quarto reported here, captions in Typst and Quarto documents need to be specified using both the tbl-cap and the label chunk option:\n```{r}\n#| tbl-cap: \"blah blah blah\"\n#| label: tbl-blah\ntinytable::tt(head(iris, 5))\n```\n\n\n\nThe Typst tables created by tinytable are automatically broken across pages with repeated headers. However, in Quarto documents, the Quarto software wraps tables in an non-breakable #figure environment. This can break the display of long tables. One solution is to use a raw Typst code block to set Figures to be breakable:\n---\nformat: typst\n---\n\n```{=typst}\n#show figure: set block(breakable: true)\n```\n\n```{r}\n#| tbl-cap: \"blah blah blah\"\n#| label: tbl-blah\nlibrary(tinytable)\ntt(head(iris, 50))\n```\n\n\n\n\n\n\nThis is an important limitation, but it is difficult to get around. See this issue for discussion: https://github.com/vincentarelbundock/tinytable/issues/125\nUsers can use markdown styling directly in group_tt() to circumvent this. This is documented in the tutorial.\n\n\n\nThese arguments are already implemented in the form of “pseudo-spans”, meaning that we flush the content of adjacent cells, but do not modify the row or column borders. This is probably adequate for most needs.\nOne alternative would be to remove line segments in finalize_grid(). I tried this but it is tricky and the results were brittle, so I rolled it back. I’m open to considering a PR if someone wants to contribute code, but please discuss the feature design in an issue with me before working on this.\n\n\n\n\n\n\nIn Quarto, it is possible to create a custom crossref type for things like appendix tables. One challenge, is that LaTeX will not allow users to nest a tblr environment, inside a table environment, inside the new environment that Quarto creates for the crossref. Therefore, when rendering a table to LaTeX/PDF, it is important to drop the \\begin{table} environment. This can be done using the theme_tt() function.\nIn the example below, we call theme_tt() explicitly for a single table, but the themes vignette shows how to set a global theme using the tinytable_tt_theme option.\n---\ntitle: \"Crossref Example\"\nformat:\n pdf: default\n html: default\ncrossref:\n custom:\n - kind: float\n key: apptbl\n latex-env: apptbl\n reference-prefix: Table A\n space-before-numbering: false\n latex-list-of-description: Appendix Table\napptbl-cap-location: top\n---\n\nSee @apptbl-testing\n\n::: {#apptbl-testing}\n\n```{r}\nlibrary(tinytable)\n\ntt(mtcars[1:5,]) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\nCaption goes here.\n\n:::\n\n\n\nWith version 0.4.0 of tinytable and versions above 1.6 of Quarto—only available as a pre-release build at the time of writing— users can specify sub-captions for tables. This is done by adding a tbl-subcap chunk option to the table chunk. We also need to use a tinytable theme to remove built-in table structure and let Quarto handle the table construction. Here is a simple example document:\n---\nformat: pdf\n---\n\nSee @tbl-example, @tbl-example-1, or @tbl-example-2.\n\n```{r}\n#| label: tbl-example\n#| tbl-cap: \"Example\"\n#| tbl-subcap: \n#| - \"Cars\"\n#| - \"Pressure\"\n#| layout-ncol: 2\n\nlibrary(tinytable)\ntt(head(cars)) |> theme_tt(\"tabular\", style = \"tabularray\")\ntt(head(pressure)) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\n\n\nIn some cases, the user wants to print a single table multiple times with different styles in a single HTML document. This will sometimes cause issues, because the style_tt() function inserts several javascript functions to modify the same table, thus creating conflicts. A simple solution is to change the unique ID of the table object manually.\nConsider this RevalJS slideshow in which we sequentially highlight different rows of the data frame:\n---\nformat: revealjs\n---\n\n## Page 1\n\n```{r}\nlibrary(tinytable)\n\ntab <- tt(head(iris))\ntab\n```\n\n## Page 2\n\n```{r}\ntab@id <- \"table_01\"\ntab |> style_tt(i = 3, background = \"skyblue\")\n```\n\n## Page 3\n\n```{r}\ntab@id <- \"table_02\"\ntab |> style_tt(i = 5, background = \"orange\")\n```", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -269,7 +269,7 @@ "href": "vignettes/faq.html#quarto", "title": "FAQ", "section": "", - "text": "In Quarto, it is possible to create a custom crossref type for things like appendix tables. One challenge, is that LaTeX will not allow users to nest a tblr environment, inside a table environment, inside the new environment that Quarto creates for the crossref. Therefore, when rendering a table to LaTeX/PDF, it is important to drop the \\begin{table} environment. This can be done using the theme_tt() function.\nIn the example below, we call theme_tt() explicitly for a single table, but the themes vignette shows how to set a global theme using the tinytable_tt_theme option.\n---\ntitle: \"Crossref Example\"\nformat:\n pdf: default\n html: default\ncrossref:\n custom:\n - kind: float\n key: apptbl\n latex-env: apptbl\n reference-prefix: Table A\n space-before-numbering: false\n latex-list-of-description: Appendix Table\napptbl-cap-location: top\n---\n\nSee @apptbl-testing\n\n::: {#apptbl-testing}\n\n```{r}\nlibrary(tinytable)\n\ntt(mtcars[1:5,]) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\nCaption goes here.\n\n:::\n\n\n\nWith version 0.4.0 of tinytable and versions above 1.6 of Quarto—only available as a pre-release build at the time of writing— users can specify sub-captions for tables. This is done by adding a tbl-subcap chunk option to the table chunk. We also need to use a tinytable theme to remove built-in table structure and let Quarto handle the table construction. Here is a simple example document:\n---\nformat: pdf\n---\n\n```{r}\n#| label: tbl-example\n#| tbl-cap: \"Example\"\n#| tbl-subcap: \n#| - \"Cars\"\n#| - \"Pressure\"\n#| layout-ncol: 2\n\nlibrary(tinytable)\ntt(head(cars)) |> theme_tt(\"tabular\", style = \"tabularray\")\ntt(head(pressure)) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\n\n\nIn some cases, the user wants to print a single table multiple times with different styles in a single HTML document. This will sometimes cause issues, because the style_tt() function inserts several javascript functions to modify the same table, thus creating conflicts. A simple solution is to change the unique ID of the table object manually.\nConsider this RevalJS slideshow in which we sequentially highlight different rows of the data frame:\n---\nformat: revealjs\n---\n\n## Page 1\n\n```{r}\nlibrary(tinytable)\n\ntab <- tt(head(iris))\ntab\n```\n\n## Page 2\n\n```{r}\ntab@id <- \"table_01\"\ntab |> style_tt(i = 3, background = \"skyblue\")\n```\n\n## Page 3\n\n```{r}\ntab@id <- \"table_02\"\ntab |> style_tt(i = 5, background = \"orange\")\n```", + "text": "In Quarto, it is possible to create a custom crossref type for things like appendix tables. One challenge, is that LaTeX will not allow users to nest a tblr environment, inside a table environment, inside the new environment that Quarto creates for the crossref. Therefore, when rendering a table to LaTeX/PDF, it is important to drop the \\begin{table} environment. This can be done using the theme_tt() function.\nIn the example below, we call theme_tt() explicitly for a single table, but the themes vignette shows how to set a global theme using the tinytable_tt_theme option.\n---\ntitle: \"Crossref Example\"\nformat:\n pdf: default\n html: default\ncrossref:\n custom:\n - kind: float\n key: apptbl\n latex-env: apptbl\n reference-prefix: Table A\n space-before-numbering: false\n latex-list-of-description: Appendix Table\napptbl-cap-location: top\n---\n\nSee @apptbl-testing\n\n::: {#apptbl-testing}\n\n```{r}\nlibrary(tinytable)\n\ntt(mtcars[1:5,]) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\nCaption goes here.\n\n:::\n\n\n\nWith version 0.4.0 of tinytable and versions above 1.6 of Quarto—only available as a pre-release build at the time of writing— users can specify sub-captions for tables. This is done by adding a tbl-subcap chunk option to the table chunk. We also need to use a tinytable theme to remove built-in table structure and let Quarto handle the table construction. Here is a simple example document:\n---\nformat: pdf\n---\n\nSee @tbl-example, @tbl-example-1, or @tbl-example-2.\n\n```{r}\n#| label: tbl-example\n#| tbl-cap: \"Example\"\n#| tbl-subcap: \n#| - \"Cars\"\n#| - \"Pressure\"\n#| layout-ncol: 2\n\nlibrary(tinytable)\ntt(head(cars)) |> theme_tt(\"tabular\", style = \"tabularray\")\ntt(head(pressure)) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\n\n\nIn some cases, the user wants to print a single table multiple times with different styles in a single HTML document. This will sometimes cause issues, because the style_tt() function inserts several javascript functions to modify the same table, thus creating conflicts. A simple solution is to change the unique ID of the table object manually.\nConsider this RevalJS slideshow in which we sequentially highlight different rows of the data frame:\n---\nformat: revealjs\n---\n\n## Page 1\n\n```{r}\nlibrary(tinytable)\n\ntab <- tt(head(iris))\ntab\n```\n\n## Page 2\n\n```{r}\ntab@id <- \"table_01\"\ntab |> style_tt(i = 3, background = \"skyblue\")\n```\n\n## Page 3\n\n```{r}\ntab@id <- \"table_02\"\ntab |> style_tt(i = 5, background = \"orange\")\n```", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -302,7 +302,7 @@ "href": "vignettes/format.html", "title": "Formatting", "section": "", - "text": "library(tinytable)\noptions(tinytable_tt_digits = 3)\noptions(tinytable_theme_placement_latex_float = \"H\")\nx <- mtcars[1:4, 1:5]\n\n\n\nThe tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1970-06-08\n True \n \n \n 201399\n 201.4 \n 1971-03-15\n True \n \n \n 100188\n 0.13\n 1970-09-01\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n June 08 1970\n True\n \n \n 201 399,18\n 201.4\n March 15 1971\n True\n \n \n 100 188,39\n 0.1\n September 01 1970\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K\n\n\n\n\n\nBy default, format_tt() formats numbers to ensure that the smallest value in a vector (column) has at least a certain number of significant digits. For example,\n\nk <- data.frame(x = c(0.000123456789, 12.4356789))\ntt(k, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12.43568\n \n \n \n \n\n\n\nWe can alter this behavior to ensure to round significant digits on a per-cell basis, using the num_fmt argument in format_tt():\n\ntt(k) |> format_tt(digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\n\nThe numeric formatting options in format_tt() can also be controlled using global options:\n\noptions(\"tinytable_tt_digits\" = 2)\noptions(\"tinytable_format_num_fmt\" = \"significant_cell\")\ntt(k)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12 \n \n \n \n \n\n\n\n\n\n\nMissing values can be replaced by a custom string using the replace argument (default \"\"):\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\n\ntt(tab)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n NA\n 3\n \n \n 1\n NA\n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt()\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n \n 3\n \n \n 1\n \n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\n\nWe can also specify multiple value replacements at once using a named list of vectors:\n\ntmp <- data.frame(x = 1:5, y = c(pi, NA, NaN, -Inf, Inf))\ndict <- list(\"-\" = c(NA, NaN), \"-∞\" = -Inf, \"∞\" = Inf)\ntt(tmp) |> format_tt(replace = dict, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n y\n \n \n \n \n \n 1\n 3.1\n \n \n 2\n -\n \n \n 3\n -\n \n \n 4\n -∞\n \n \n 5\n ∞\n \n \n \n \n\n\n\n\n\n\nLaTeX and HTML use special characters to indicate strings which should be interpreted rather than displayed as text. For example, including underscores or dollar signs in LaTeX can cause compilation errors in some documents. To display those special characters, we need to substitute or escape them with backslashes, depending on the output format. The escape argument of format_tt() can be used to do this automatically:\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\n\ntt(dat) |> format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>\n \n \n \n \n\n\n\nWhen applied to a tt() table, format_tt() will determine the type of escaping to do automatically. When applied to a string or vector, we must specify the type of escaping to apply:\n\nformat_tt(\"_ Dollars $\", escape = \"latex\")\n\n[1] \"\\\\_ Dollars \\\\$\"\n\n\n\n\n\nMarkdown can be rendered in cells by using the markdown argument of the format_tt() function (note: this requires installing the markdown as an optional dependency).\n\ndat <- data.frame( markdown = c(\n \"This is _italic_ text.\",\n \"This sentence ends with a superscript.^2^\")\n)\n\ntt(dat) |>\n format_tt(j = 1, markdown = TRUE) |>\n style_tt(j = 1, align = \"c\")\n\n\n\n \n\n \n \n \n \n \n \n markdown\n \n \n \n \n \n This is italic text.\n \n \n This sentence ends with a superscript.2\n \n \n \n \n\n\n\nMarkdown syntax can be particularly useful when formatting URLs in a table:\n\ndat <- data.frame(\n `Package (link)` = c(\n \"[`marginaleffects`](https://www.marginaleffects.com/)\",\n \"[`modelsummary`](https://www.modelsummary.com/)\",\n \"[`tinytable`](https://vincentarelbundock.github.io/tinytable/)\",\n \"[`countrycode`](https://vincentarelbundock.github.io/countrycode/)\",\n \"[`WDI`](https://vincentarelbundock.github.io/WDI/)\",\n \"[`softbib`](https://vincentarelbundock.github.io/softbib/)\",\n \"[`tinysnapshot`](https://vincentarelbundock.github.io/tinysnapshot/)\",\n \"[`altdoc`](https://etiennebacher.github.io/altdoc/)\",\n \"[`tinyplot`](https://grantmcdermott.com/tinyplot/)\",\n \"[`parameters`](https://easystats.github.io/parameters/)\",\n \"[`insight`](https://easystats.github.io/insight/)\"\n ),\n Purpose = c(\n \"Interpreting statistical models\",\n \"Data and model summaries\",\n \"Draw beautiful tables easily\",\n \"Convert country codes and names\",\n \"Download data from the World Bank\",\n \"Software bibliographies in R\",\n \"Snapshots for unit tests using `tinytest`\",\n \"Create documentation website for R packages\",\n \"Extension of base R plot functions\",\n \"Extract from model objects\",\n \"Extract information from model objects\"\n ),\n check.names = FALSE\n)\n\ntt(dat) |> format_tt(j = 1, markdown = TRUE)\n\n\n\n \n\n \n \n Vincent sometimes contributes to these R packages.\n \n \n \n Package (link)\n Purpose\n \n \n \n \n \n marginaleffects\n Interpreting statistical models \n \n \n modelsummary\n Data and model summaries \n \n \n tinytable\n Draw beautiful tables easily \n \n \n countrycode\n Convert country codes and names \n \n \n WDI\n Download data from the World Bank \n \n \n softbib\n Software bibliographies in R \n \n \n tinysnapshot\n Snapshots for unit tests using `tinytest` \n \n \n altdoc\n Create documentation website for R packages\n \n \n tinyplot\n Extension of base R plot functions \n \n \n parameters\n Extract from model objects \n \n \n insight\n Extract information from model objects \n \n \n \n \n\n\n\n\n\n\nOn top of the built-in features of format_tt, a custom formatting function can be specified via the fn argument. The fn argument takes a function that accepts a single vector and returns a string (or something that coerces to a string like a number).\n\ntt(x) |> \n format_tt(j = \"mpg\", fn = function(x) paste0(x, \" mpg\")) |>\n format_tt(j = \"drat\", fn = \\(x) signif(x, 2))\n\n\n\n \n\n \n \n \n \n \n \n mpg\n cyl\n disp\n hp\n drat\n \n \n \n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 22.8 mpg\n 4\n 108\n 93\n 3.8\n \n \n 21.4 mpg\n 6\n 258\n 110\n 3.1\n \n \n \n \n\n\n\nFor example, the scales package which is used internally by ggplot2 provides a bunch of useful tools for formatting (e.g. dates, numbers, percents, logs, currencies, etc.). The label_*() functions can be passed to the fn argument.\nNote that we call format_tt(escape = TRUE) at the end of the pipeline because the column names and cells include characters that need to be escaped in LaTeX: _, %, and $. This last call is superfluous in HTML.\n\nthumbdrives <- data.frame(\n date_lookup = as.Date(c(\"2024-01-15\", \"2024-01-18\", \"2024-01-14\", \"2024-01-16\")),\n price = c(18.49, 19.99, 24.99, 24.99),\n price_rank = c(1, 2, 3, 3),\n memory = c(16e9, 12e9, 10e9, 8e9),\n speed_benchmark = c(0.6, 0.73, 0.82, 0.99)\n)\n\ntt(thumbdrives) |>\n format_tt(j = 1, fn = scales::label_date(\"%e %b\", locale = \"fr\")) |>\n format_tt(j = 2, fn = scales::label_currency()) |>\n format_tt(j = 3, fn = scales::label_ordinal()) |> \n format_tt(j = 4, fn = scales::label_bytes()) |> \n format_tt(j = 5, fn = scales::label_percent()) |>\n format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n date_lookup\n price\n price_rank\n memory\n speed_benchmark\n \n \n \n \n \n 2024-01-15\n $18.49\n 1st\n 16 GB\n 60%\n \n \n 2024-01-18\n $19.99\n 2nd\n 12 GB\n 73%\n \n \n 2024-01-14\n $24.99\n 3rd\n 10 GB\n 82%\n \n \n 2024-01-16\n $24.99\n 3rd\n 8 GB\n 99%\n \n \n \n \n\n\n\n\n\n\nQuarto automatically applies some data processing to the content of the tables it renders. By default, tinytable disables this processing, because it can enter in conflict with styling and formatting features of the package.\nTo enable Quarto data processing, we can use the quarto argument of the format_tt() function. This argument allows users to mark certain cells explicitly for processing by Quarto, by wrapping them in a special “span” called “data-qmd”, supported by Quarto:\n\nk <- data.frame(Thing = \"qwerty\", Citation = \"@Lovelace1842\")\n\ntt(k) |> format_tt(quarto = TRUE)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nSome users may want to apply Quarto data processing to all tables. This can be done with themes:\n\ntheme_quarto <- function(x) format_tt(x, quarto = TRUE)\noptions(tinytable_tt_theme = theme_quarto)\n\ntt(k)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nBack to normal:\n\noptions(tinytable_tt_theme = NULL)\n\nAlternatively, users can set a global option to process all tables in Quarto, but they will then have to mark each cell with special content using format_tt(quarto):\n\noptions(tinytable_quarto_disable_processing = FALSE)\n\ntt(x)\n\n\n\n \n\n \n \n \n\n\n\nmpg\ncyl\ndisp\nhp\ndrat\n\n\n\n\n21.0\n6\n160\n110\n3.90\n\n\n21.0\n6\n160\n110\n3.90\n\n\n22.8\n4\n108\n93\n3.85\n\n\n21.4\n6\n258\n110\n3.08\n\n\n\n\n \n\n\n\nNotice that Quarto is now processing the table, so we lose the default tinytable theme and get the default striped Quarto look.\nBack to normal:\n\noptions(tinytable_quarto_disable_processing = TRUE)", + "text": "library(tinytable)\noptions(tinytable_tt_digits = 3)\noptions(tinytable_theme_placement_latex_float = \"H\")\nx <- mtcars[1:4, 1:5]\n\n\n\nThe tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1972-09-03\n True \n \n \n 201399\n 201.4 \n 1971-08-23\n True \n \n \n 100188\n 0.13\n 1970-08-23\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n September 03 1972\n True\n \n \n 201 399,18\n 201.4\n August 23 1971\n True\n \n \n 100 188,39\n 0.1\n August 23 1970\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K\n\n\n\n\n\nBy default, format_tt() formats numbers to ensure that the smallest value in a vector (column) has at least a certain number of significant digits. For example,\n\nk <- data.frame(x = c(0.000123456789, 12.4356789))\ntt(k, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12.43568\n \n \n \n \n\n\n\nWe can alter this behavior to ensure to round significant digits on a per-cell basis, using the num_fmt argument in format_tt():\n\ntt(k) |> format_tt(digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\n\nThe numeric formatting options in format_tt() can also be controlled using global options:\n\noptions(\"tinytable_tt_digits\" = 2)\noptions(\"tinytable_format_num_fmt\" = \"significant_cell\")\ntt(k)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12 \n \n \n \n \n\n\n\n\n\n\nMissing values can be replaced by a custom string using the replace argument (default \"\"):\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\n\ntt(tab)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n NA\n 3\n \n \n 1\n NA\n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt()\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n \n 3\n \n \n 1\n \n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\n\nWe can also specify multiple value replacements at once using a named list of vectors:\n\ntmp <- data.frame(x = 1:5, y = c(pi, NA, NaN, -Inf, Inf))\ndict <- list(\"-\" = c(NA, NaN), \"-∞\" = -Inf, \"∞\" = Inf)\ntt(tmp) |> format_tt(replace = dict, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n y\n \n \n \n \n \n 1\n 3.1\n \n \n 2\n -\n \n \n 3\n -\n \n \n 4\n -∞\n \n \n 5\n ∞\n \n \n \n \n\n\n\n\n\n\nLaTeX and HTML use special characters to indicate strings which should be interpreted rather than displayed as text. For example, including underscores or dollar signs in LaTeX can cause compilation errors in some documents. To display those special characters, we need to substitute or escape them with backslashes, depending on the output format. The escape argument of format_tt() can be used to do this automatically:\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\n\ntt(dat) |> format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>\n \n \n \n \n\n\n\nWhen applied to a tt() table, format_tt() will determine the type of escaping to do automatically. When applied to a string or vector, we must specify the type of escaping to apply:\n\nformat_tt(\"_ Dollars $\", escape = \"latex\")\n\n[1] \"\\\\_ Dollars \\\\$\"\n\n\n\n\n\nMarkdown can be rendered in cells by using the markdown argument of the format_tt() function (note: this requires installing the markdown as an optional dependency).\n\ndat <- data.frame( markdown = c(\n \"This is _italic_ text.\",\n \"This sentence ends with a superscript.^2^\")\n)\n\ntt(dat) |>\n format_tt(j = 1, markdown = TRUE) |>\n style_tt(j = 1, align = \"c\")\n\n\n\n \n\n \n \n \n \n \n \n markdown\n \n \n \n \n \n This is italic text.\n \n \n This sentence ends with a superscript.2\n \n \n \n \n\n\n\nMarkdown syntax can be particularly useful when formatting URLs in a table:\n\ndat <- data.frame(\n `Package (link)` = c(\n \"[`marginaleffects`](https://www.marginaleffects.com/)\",\n \"[`modelsummary`](https://www.modelsummary.com/)\",\n \"[`tinytable`](https://vincentarelbundock.github.io/tinytable/)\",\n \"[`countrycode`](https://vincentarelbundock.github.io/countrycode/)\",\n \"[`WDI`](https://vincentarelbundock.github.io/WDI/)\",\n \"[`softbib`](https://vincentarelbundock.github.io/softbib/)\",\n \"[`tinysnapshot`](https://vincentarelbundock.github.io/tinysnapshot/)\",\n \"[`altdoc`](https://etiennebacher.github.io/altdoc/)\",\n \"[`tinyplot`](https://grantmcdermott.com/tinyplot/)\",\n \"[`parameters`](https://easystats.github.io/parameters/)\",\n \"[`insight`](https://easystats.github.io/insight/)\"\n ),\n Purpose = c(\n \"Interpreting statistical models\",\n \"Data and model summaries\",\n \"Draw beautiful tables easily\",\n \"Convert country codes and names\",\n \"Download data from the World Bank\",\n \"Software bibliographies in R\",\n \"Snapshots for unit tests using `tinytest`\",\n \"Create documentation website for R packages\",\n \"Extension of base R plot functions\",\n \"Extract from model objects\",\n \"Extract information from model objects\"\n ),\n check.names = FALSE\n)\n\ntt(dat) |> format_tt(j = 1, markdown = TRUE)\n\n\n\n \n\n \n \n Vincent sometimes contributes to these R packages.\n \n \n \n Package (link)\n Purpose\n \n \n \n \n \n marginaleffects\n Interpreting statistical models \n \n \n modelsummary\n Data and model summaries \n \n \n tinytable\n Draw beautiful tables easily \n \n \n countrycode\n Convert country codes and names \n \n \n WDI\n Download data from the World Bank \n \n \n softbib\n Software bibliographies in R \n \n \n tinysnapshot\n Snapshots for unit tests using `tinytest` \n \n \n altdoc\n Create documentation website for R packages\n \n \n tinyplot\n Extension of base R plot functions \n \n \n parameters\n Extract from model objects \n \n \n insight\n Extract information from model objects \n \n \n \n \n\n\n\n\n\n\nOn top of the built-in features of format_tt, a custom formatting function can be specified via the fn argument. The fn argument takes a function that accepts a single vector and returns a string (or something that coerces to a string like a number).\n\ntt(x) |> \n format_tt(j = \"mpg\", fn = function(x) paste0(x, \" mpg\")) |>\n format_tt(j = \"drat\", fn = \\(x) signif(x, 2))\n\n\n\n \n\n \n \n \n \n \n \n mpg\n cyl\n disp\n hp\n drat\n \n \n \n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 22.8 mpg\n 4\n 108\n 93\n 3.8\n \n \n 21.4 mpg\n 6\n 258\n 110\n 3.1\n \n \n \n \n\n\n\nFor example, the scales package which is used internally by ggplot2 provides a bunch of useful tools for formatting (e.g. dates, numbers, percents, logs, currencies, etc.). The label_*() functions can be passed to the fn argument.\nNote that we call format_tt(escape = TRUE) at the end of the pipeline because the column names and cells include characters that need to be escaped in LaTeX: _, %, and $. This last call is superfluous in HTML.\n\nthumbdrives <- data.frame(\n date_lookup = as.Date(c(\"2024-01-15\", \"2024-01-18\", \"2024-01-14\", \"2024-01-16\")),\n price = c(18.49, 19.99, 24.99, 24.99),\n price_rank = c(1, 2, 3, 3),\n memory = c(16e9, 12e9, 10e9, 8e9),\n speed_benchmark = c(0.6, 0.73, 0.82, 0.99)\n)\n\ntt(thumbdrives) |>\n format_tt(j = 1, fn = scales::label_date(\"%e %b\", locale = \"fr\")) |>\n format_tt(j = 2, fn = scales::label_currency()) |>\n format_tt(j = 3, fn = scales::label_ordinal()) |> \n format_tt(j = 4, fn = scales::label_bytes()) |> \n format_tt(j = 5, fn = scales::label_percent()) |>\n format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n date_lookup\n price\n price_rank\n memory\n speed_benchmark\n \n \n \n \n \n 2024-01-15\n $18.49\n 1st\n 16 GB\n 60%\n \n \n 2024-01-18\n $19.99\n 2nd\n 12 GB\n 73%\n \n \n 2024-01-14\n $24.99\n 3rd\n 10 GB\n 82%\n \n \n 2024-01-16\n $24.99\n 3rd\n 8 GB\n 99%\n \n \n \n \n\n\n\n\n\n\nQuarto automatically applies some data processing to the content of the tables it renders. By default, tinytable disables this processing, because it can enter in conflict with styling and formatting features of the package.\nTo enable Quarto data processing, we can use the quarto argument of the format_tt() function. This argument allows users to mark certain cells explicitly for processing by Quarto, by wrapping them in a special “span” called “data-qmd”, supported by Quarto:\n\nk <- data.frame(Thing = \"qwerty\", Citation = \"@Lovelace1842\")\n\ntt(k) |> format_tt(quarto = TRUE)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nSome users may want to apply Quarto data processing to all tables. This can be done with themes:\n\ntheme_quarto <- function(x) format_tt(x, quarto = TRUE)\noptions(tinytable_tt_theme = theme_quarto)\n\ntt(k)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nBack to normal:\n\noptions(tinytable_tt_theme = NULL)\n\nAlternatively, users can set a global option to process all tables in Quarto, but they will then have to mark each cell with special content using format_tt(quarto):\n\noptions(tinytable_quarto_disable_processing = FALSE)\n\ntt(x)\n\n\n\n \n\n \n \n \n\n\n\nmpg\ncyl\ndisp\nhp\ndrat\n\n\n\n\n21.0\n6\n160\n110\n3.90\n\n\n21.0\n6\n160\n110\n3.90\n\n\n22.8\n4\n108\n93\n3.85\n\n\n21.4\n6\n258\n110\n3.08\n\n\n\n\n \n\n\n\nNotice that Quarto is now processing the table, so we lose the default tinytable theme and get the default striped Quarto look.\nBack to normal:\n\noptions(tinytable_quarto_disable_processing = TRUE)", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -314,7 +314,7 @@ "href": "vignettes/format.html#numbers-dates-strings-etc.", "title": "Formatting", "section": "", - "text": "The tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1970-06-08\n True \n \n \n 201399\n 201.4 \n 1971-03-15\n True \n \n \n 100188\n 0.13\n 1970-09-01\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n June 08 1970\n True\n \n \n 201 399,18\n 201.4\n March 15 1971\n True\n \n \n 100 188,39\n 0.1\n September 01 1970\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K", + "text": "The tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1972-09-03\n True \n \n \n 201399\n 201.4 \n 1971-08-23\n True \n \n \n 100188\n 0.13\n 1970-08-23\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n September 03 1972\n True\n \n \n 201 399,18\n 201.4\n August 23 1971\n True\n \n \n 100 188,39\n 0.1\n August 23 1970\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -409,7 +409,7 @@ "href": "man/format_tt.html", "title": "tinytable", "section": "", - "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = get_option(\"tinytable_format_digits\", default = NULL),\n num_fmt = get_option(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = get_option(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = get_option(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = get_option(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = get_option(\"tinytable_format_num_mark_dec\", default =\n getOption(\"OutDec\", default = \".\")),\n date = get_option(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = get_option(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = get_option(\"tinytable_format_other\", default = as.character),\n replace = get_option(\"tinytable_format_replace\", default = TRUE),\n escape = get_option(\"tinytable_format_escape\", default = FALSE),\n markdown = get_option(\"tinytable_format_markdown\", default = FALSE),\n quarto = get_option(\"tinytable_format_quarto\", default = FALSE),\n fn = get_option(\"tinytable_format_fn\", default = NULL),\n sprintf = get_option(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 9 999\n 9 999\n \n \n 9 999\n 9 999\n \n \n 9 999\n 9 999\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", + "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = get_option(\"tinytable_format_digits\", default = NULL),\n num_fmt = get_option(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = get_option(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = get_option(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = get_option(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = get_option(\"tinytable_format_num_mark_dec\", default =\n getOption(\"OutDec\", default = \".\")),\n date = get_option(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = get_option(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = get_option(\"tinytable_format_other\", default = as.character),\n replace = get_option(\"tinytable_format_replace\", default = TRUE),\n escape = get_option(\"tinytable_format_escape\", default = FALSE),\n markdown = get_option(\"tinytable_format_markdown\", default = FALSE),\n quarto = get_option(\"tinytable_format_quarto\", default = FALSE),\n fn = get_option(\"tinytable_format_fn\", default = NULL),\n sprintf = get_option(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 001\n 10 001\n \n \n 10 000\n 10 000\n \n \n 9 999\n 9 999\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", "crumbs": [ "Tutorial (PDF)", "Functions", @@ -421,7 +421,7 @@ "href": "man/format_tt.html#format-columns-of-a-data-frame", "title": "tinytable", "section": "", - "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = get_option(\"tinytable_format_digits\", default = NULL),\n num_fmt = get_option(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = get_option(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = get_option(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = get_option(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = get_option(\"tinytable_format_num_mark_dec\", default =\n getOption(\"OutDec\", default = \".\")),\n date = get_option(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = get_option(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = get_option(\"tinytable_format_other\", default = as.character),\n replace = get_option(\"tinytable_format_replace\", default = TRUE),\n escape = get_option(\"tinytable_format_escape\", default = FALSE),\n markdown = get_option(\"tinytable_format_markdown\", default = FALSE),\n quarto = get_option(\"tinytable_format_quarto\", default = FALSE),\n fn = get_option(\"tinytable_format_fn\", default = NULL),\n sprintf = get_option(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 9 999\n 9 999\n \n \n 9 999\n 9 999\n \n \n 9 999\n 9 999\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", + "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = get_option(\"tinytable_format_digits\", default = NULL),\n num_fmt = get_option(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = get_option(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = get_option(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = get_option(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = get_option(\"tinytable_format_num_mark_dec\", default =\n getOption(\"OutDec\", default = \".\")),\n date = get_option(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = get_option(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = get_option(\"tinytable_format_other\", default = as.character),\n replace = get_option(\"tinytable_format_replace\", default = TRUE),\n escape = get_option(\"tinytable_format_escape\", default = FALSE),\n markdown = get_option(\"tinytable_format_markdown\", default = FALSE),\n quarto = get_option(\"tinytable_format_quarto\", default = FALSE),\n fn = get_option(\"tinytable_format_fn\", default = NULL),\n sprintf = get_option(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 001\n 10 001\n \n \n 10 000\n 10 000\n \n \n 9 999\n 9 999\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", "crumbs": [ "Tutorial (PDF)", "Functions", diff --git a/vignettes/custom.html b/vignettes/custom.html index bcb32551..ecb4edbd 100644 --- a/vignettes/custom.html +++ b/vignettes/custom.html @@ -427,12 +427,12 @@

Bootstrap classes

-
+
@@ -532,12 +532,12 @@

Bootstrap classes

-
+
@@ -638,12 +638,12 @@

Bootstrap classes

-
+
@@ -747,12 +747,12 @@

CSS declarations

-
+
@@ -898,12 +898,12 @@

CSS rules

-
+
@@ -1067,12 +1067,12 @@

CSS rules

-
+
diff --git a/vignettes/faq.html b/vignettes/faq.html index e9296abe..451603e3 100644 --- a/vignettes/faq.html +++ b/vignettes/faq.html @@ -624,18 +624,20 @@

Sub-captions

format: pdf--- -```{r} -#| label: tbl-example -#| tbl-cap: "Example" -#| tbl-subcap: -#| - "Cars" -#| - "Pressure" -#| layout-ncol: 2 - -library(tinytable) -tt(head(cars)) |> theme_tt("tabular", style = "tabularray") -tt(head(pressure)) |> theme_tt("tabular", style = "tabularray") -``` +See @tbl-example, @tbl-example-1, or @tbl-example-2. + +```{r} +#| label: tbl-example +#| tbl-cap: "Example" +#| tbl-subcap: +#| - "Cars" +#| - "Pressure" +#| layout-ncol: 2 + +library(tinytable) +tt(head(cars)) |> theme_tt("tabular", style = "tabularray") +tt(head(pressure)) |> theme_tt("tabular", style = "tabularray") +```

Same table, different styles

diff --git a/vignettes/format.html b/vignettes/format.html index 1c2f451a..c6b5be09 100644 --- a/vignettes/format.html +++ b/vignettes/format.html @@ -445,12 +445,12 @@

Numbers, dates,
-

+
@@ -510,19 +510,19 @@

Numbers, dates,

- + - + - + @@ -548,12 +548,12 @@

Numbers, dates,
-

143002 1.431970-06-081972-09-03 True
201399 201.4 1971-03-151971-08-23 True
100188 0.131970-09-011970-08-23 False
+
@@ -613,19 +613,19 @@

Numbers, dates,

- + - + - + @@ -648,12 +648,12 @@

Numbers, dates,
-

143 002,21 1.4June 08 1970September 03 1972 True
201 399,18 201.4March 15 1971August 23 1971 True
100 188,39 0.1September 01 1970August 23 1970 False
+
@@ -760,12 +760,12 @@

Significan
-

+
@@ -835,12 +835,12 @@

Significan
-

+
@@ -912,12 +912,12 @@

Significan
-

+
@@ -992,12 +992,12 @@

Replacement

-
+
@@ -1072,12 +1072,12 @@

Replacement

-
+
@@ -1152,12 +1152,12 @@

Replacement

-
+
@@ -1237,12 +1237,12 @@

Replacement

-
+
@@ -1336,12 +1336,12 @@

Escape special c
-

+
@@ -1436,12 +1436,12 @@

Markdown

-
+
@@ -1544,12 +1544,12 @@

Markdown

-
+

Vincent sometimes contributes to these R packages.

@@ -1664,12 +1664,12 @@

Custom functions

-

Vincent sometimes contributes to these R packages.

+
@@ -1784,12 +1784,12 @@

Custom functions

-
+
@@ -1895,12 +1895,12 @@

Quarto data process
-

+
@@ -1973,12 +1973,12 @@

Quarto data process
-

Thing
+
@@ -2054,12 +2054,12 @@

Quarto data process
-

Thing
+
diff --git a/vignettes/group.html b/vignettes/group.html index b879996c..7e7ea68b 100644 --- a/vignettes/group.html +++ b/vignettes/group.html @@ -423,12 +423,12 @@

Rows

-
mpg
+
@@ -619,12 +619,12 @@

Rows

-
+
@@ -753,12 +753,12 @@

Rows

-
+
@@ -886,12 +886,12 @@

Rows

-
+
@@ -1030,12 +1030,12 @@

Rows

-
+
@@ -1259,12 +1259,12 @@

Automatic row groups<
-

+
@@ -1512,12 +1512,12 @@

Columns

-
+
@@ -1716,12 +1716,12 @@

Columns

-
Hamburgers
+
@@ -1946,12 +1946,12 @@

Columns

-
Hamburgers
+
diff --git a/vignettes/plot.html b/vignettes/plot.html index e51af655..08edd4fd 100644 --- a/vignettes/plot.html +++ b/vignettes/plot.html @@ -431,12 +431,12 @@

Inserting image
-

Hello
+
@@ -514,12 +514,12 @@

Inserting image
-

+
@@ -618,12 +618,12 @@

Built-in plots

-
+
@@ -698,24 +698,24 @@

Built-in plots

- - - - + + + + - - - - + + + + - - - - + + + +
mpg
hp
qsec
@@ -744,12 +744,12 @@

Custom plots: Base
- +
@@ -804,15 +804,15 @@

Custom plots: Base

- + - + - +
mpg
hp
qsec
@@ -845,12 +845,12 @@

Custom plots: g
- +
@@ -905,15 +905,15 @@

Custom plots: g

- + - + - +
mpg
hp
qsec
@@ -962,12 +962,12 @@

Custom plots: g
- +
@@ -1037,21 +1037,21 @@

Custom plots: g

- - - + + + - - - + + + - - - + + +
Adelie
Chinstrap
Gentoo
@@ -1073,12 +1073,12 @@

Fontawesome

- +
diff --git a/vignettes/style.html b/vignettes/style.html index 962f70b7..67708ca6 100644 --- a/vignettes/style.html +++ b/vignettes/style.html @@ -449,12 +449,12 @@

Cells, rows, columns
-

+
@@ -561,12 +561,12 @@

Cells, rows, columns
-

+
@@ -673,12 +673,12 @@

Cells, rows, columns
-

+
@@ -799,12 +799,12 @@

Cells, rows, columns
-

+
@@ -915,12 +915,12 @@

Cells, rows, columns
-

+
@@ -1030,12 +1030,12 @@

Cells, rows, columns
-

+
@@ -1142,12 +1142,12 @@

Cells, rows, columns
-

+
@@ -1257,12 +1257,12 @@

Cells, rows, columns
-

+
@@ -1378,12 +1378,12 @@

Cells, rows, columns
-

+
@@ -1505,12 +1505,12 @@

Colors

-
+
@@ -1624,12 +1624,12 @@

Alignment

-
+
@@ -1719,12 +1719,12 @@

Alignment

-
+
@@ -1824,12 +1824,12 @@

Alignment

-
+
@@ -1913,12 +1913,12 @@

Font size

-
+
@@ -2039,12 +2039,12 @@

Spanning cell
-

+
@@ -2147,12 +2147,12 @@

Spanning cell
-

+
@@ -2265,12 +2265,12 @@

Spanning cell
-

+
@@ -2378,12 +2378,12 @@

Spanning cell
-

+
@@ -2459,12 +2459,12 @@

Spanning cell
-

+
@@ -2544,12 +2544,12 @@

Headers

-
+
@@ -2642,12 +2642,12 @@

Headers

-
+
@@ -2747,12 +2747,12 @@

Headers

-
+
@@ -2871,12 +2871,12 @@

Conditional styling
-

+
@@ -3010,12 +3010,12 @@

Vectorized sty
-

+
@@ -3143,12 +3143,12 @@

Vectorized sty
-

+
@@ -3279,12 +3279,12 @@

Vectorized sty
-

+
@@ -3433,12 +3433,12 @@

Lines (borders)

-
+
@@ -3548,12 +3548,12 @@

Lines (borders)

-
+
@@ -3664,12 +3664,12 @@

Lines (borders)

-
+
@@ -3755,12 +3755,12 @@

Cell padding
-

+
diff --git a/vignettes/theme.html b/vignettes/theme.html index b95a6744..5da084c3 100644 --- a/vignettes/theme.html +++ b/vignettes/theme.html @@ -419,12 +419,12 @@

Visual themes

-
+
@@ -619,12 +619,12 @@

Visual themes

-
+
@@ -911,12 +911,12 @@

Custom themes

-
Always use the same caption.
+
diff --git a/vignettes/tinytable.html b/vignettes/tinytable.html index b878a509..c4183160 100644 --- a/vignettes/tinytable.html +++ b/vignettes/tinytable.html @@ -423,12 +423,12 @@

Tiny Tables

-
Always use the same caption.
+
@@ -530,12 +530,12 @@

Width

-
+
@@ -634,12 +634,12 @@

Width

-
+
@@ -739,12 +739,12 @@

Width

-
+
@@ -867,12 +867,12 @@

Width

-
+
@@ -1002,12 +1002,12 @@

Width

-
+
@@ -1082,12 +1082,12 @@

Footnotes

-
+

A full-width table with wrapped text in cells and a footnote.

@@ -1160,12 +1160,12 @@

Footnotes

-

A full-width table with wrapped text in cells and a footnote.

+
@@ -1276,12 +1276,12 @@

Footnotes

-
+
@@ -1408,12 +1408,12 @@

Captions and
-

+
@@ -1545,12 +1545,12 @@

Math

-
+
@@ -1630,12 +1630,12 @@

Line breaks
-

+
@@ -1784,12 +1784,12 @@

Combination an
-

+
@@ -1880,12 +1880,12 @@

Combination an
-

+
@@ -1962,12 +1962,12 @@

Combination an
-

+
@@ -2078,12 +2078,12 @@

Combination an
-

Combine two tiny tables.
+
@@ -2198,12 +2198,12 @@

Combination an
-

Combine two tiny tables.
+
@@ -2310,12 +2310,12 @@

Combination an
-

Combine two tiny tables.
+
diff --git a/vignettes/tinytable_assets/id0kc7nxw5ugerblr8pub4.png b/vignettes/tinytable_assets/id0kc7nxw5ugerblr8pub4.png new file mode 100644 index 0000000000000000000000000000000000000000..d7222e0ff7be019556caf27e3f140f3db2b94f13 GIT binary patch literal 8399 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id42x9fz2ohzjtps6ihrps.png b/vignettes/tinytable_assets/id42x9fz2ohzjtps6ihrps.png new file mode 100644 index 0000000000000000000000000000000000000000..5f1e6473044bd1b6291d02ab49d447586fdcca56 GIT binary patch literal 11898 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id47o62vpq3c1eu5q8kqk7.png b/vignettes/tinytable_assets/id47o62vpq3c1eu5q8kqk7.png new file mode 100644 index 0000000000000000000000000000000000000000..80279d32d61766aace7757c19c30139e2ae503e5 GIT binary patch literal 2072 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fstE82aRt%}3JQjXhDJt4 zwzjtR_Vx}A4lXV(-rnARetsb#A>rZSIXOAGxw%C}MWv;s<>lpFU0pprJu_#{T(M%s z%9ShEuV24m!-g$ewwyV0=F+80w{G2f@ZiCV7cbttdGq$|+jsBYy?_7y!-o&wzJ2@o z^XIQ$zkdJz{r~@eosU5=3=Hhio-U3d6?5KRW}hVBF5nWFB6y-&-=XjK{Q&V5y%DTW ze1iVoV_mje{r}|a2dezv*)dE|FR^I2@Q}f&otZhD<=F1M*K z>fQbRr1e3+pn05g<;o^0m2}PtF#s0;Wu*FCq(rU0#4(bRoFKPjKOKU>bGu z7qoJ1nFmb09Ja16L`J&8CkHP4udVF#f0y@p?XM5B+H5NW;pVOj=}zgQ3(vQl({h^6IXAS$PS|QS9TiT^cKZKzb@rcMGY$h?7$f}4 zU;OT~-^XR#Ud(YH4DLe-n%@r>2_IIyS6$W0uea-Lf4=UQ>-sgTe~DWM4f`Ztzz literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id4ga4nm2rvwuzopjihv21.png b/vignettes/tinytable_assets/id4ga4nm2rvwuzopjihv21.png new file mode 100644 index 0000000000000000000000000000000000000000..cba1148dde2cbac22768179b25d24971c2b81b77 GIT binary patch literal 11912 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 MEvX;@{$?2Te^F4R`v3p{ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id5od3yn7n4qixho68l2it.png b/vignettes/tinytable_assets/id5od3yn7n4qixho68l2it.png new file mode 100644 index 0000000000000000000000000000000000000000..213bef867cbb32b8585b1686f6174bed4a0a6161 GIT binary patch literal 11877 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%0AdNbE50x{a@ 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id5q2x3ng68cx1fdq76xwg.png b/vignettes/tinytable_assets/id5q2x3ng68cx1fdq76xwg.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b2cddca6c1d229b1f01e786315bce11877ca98 GIT binary patch literal 2558 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fN)GS|aRt&^T3S|CR<^db z_V)G;4i2HAp?P_E#l^+t<>eI>6&)QNot>Ti{rwXrOqe-y=B!z>R;*aDa^=eP>(_7H zx^?^Z?Pt!Mxq9{LqeqY4zJ2@d-MbGTK79N3?Z=NFfB*jd_wV2T|NrM^d`f3v;0*J0 zaSW-L^Y-%ftw+toTn@^;UwbV2sr*wHg#h{Ie)1neSsBcBZ1}AEp(>M~!A}1zJ5=l{m;{Tt=+5c>>)oxp2+n~7rEc>5j zF!n!}7yGmBcPVD_Cv;q}^r&WVZaL?8i&;Xcgzu8v0fB|Z6TUIDam;Pr!fxR5LI$MW z>AAvNMjk;c_E9aPAvVYo%OlM4XaRVQe|<1*IX7qjwt0n7^84B@%vAoewdI`5!u6^p&p2vz7aF_2$mX1D=@jq%;*8+0 zD5vzk3)h9Lid*(g8z`mc-d*^A=b!C?@}Hk0UessAv;NSl7qHqh|H4CV0jnBDr*?gZ z7av$TWcM*FJS?tI@`I^`FTMdovSH_i{h1)W_j_9Zy|w=_>)$=O1B>hH*0=1Be{tX{ g&Q=cArqFMBi-6_IXFQEo0~>M-p00i_>zopr0PGWpYXATM literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id5rgazsnjd1b3pqfektf0.png b/vignettes/tinytable_assets/id5rgazsnjd1b3pqfektf0.png new file mode 100644 index 0000000000000000000000000000000000000000..ab2d9523df3725edada94ea7fafea601fc6f5526 GIT binary patch literal 11745 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 s)x=%cp!B5*&*OFHc@WpKg;G=$h(OYu$_a9} literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id7iznoku9v76cwympizsv.png b/vignettes/tinytable_assets/id7iznoku9v76cwympizsv.png new file mode 100644 index 0000000000000000000000000000000000000000..82861ab5fd3e952e89b50c9a7cd62d32927913c0 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#hD`B=`NlpMaE5fKP}kkp92_%Krl={~tX2 z|G=sL2TmU^d+!JoWh)8t3ufT4bV~i7@VKN3D8gCb5n0T@pr;JNj1^1m%Ydd%_H=O! zshIQj*6F^c01=l!mp}jG^Qu!kF6`re5q`&1Wlq!Pl#<6LZ_n05r{0VG!pF%iB&MR{ z5iwzdLZaiLrWRHV0ZaDRM(c|#zsvsjId`yX@_S>vs$tp%;)`GJvDKNu!L4?vsdGbu z64A{6t*!r^>gO!h*S{`fn}2`TH{t)i_rLcf#~;6ZGjPWJU$?&5DzDj4(7z#pH1s%v z`T2`}o%!2irdO|%R{wH(bMWuV5Bt`ZOYSx6`kH!Qdrf2fUk|t6`<|}8b5&gIODk(_ zqGNo-1tOW+Yf@`DYzzA8R2J7pf4{hO?VDG#^HMDm9qkyB9&WlMCBJ$;FwPh}UHx3v IIVCg!00q9^&;S4c literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id9ffvhwla3bljp3stam5g.png b/vignettes/tinytable_assets/id9ffvhwla3bljp3stam5g.png new file mode 100644 index 0000000000000000000000000000000000000000..e677d3efdb331f0743be1de69bc447012d5ca717 GIT binary patch literal 12175 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idfml57yc1z5ye0j894fkv.png b/vignettes/tinytable_assets/idfml57yc1z5ye0j894fkv.png new file mode 100644 index 0000000000000000000000000000000000000000..8eaafeb9f170fad97d9a846acb7cba6bebb3dc7e GIT binary patch literal 1829 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fG6?Vqan+J$aMWUO(P8lR z_6`gTtgf!^?Ck97>Y6cQ#>|;B=chBgd-v|kJceJte*Is{@c;k+H5-4$F)*-g@N{tu zshIQj^66aBKn9nChBuxi^ZZQrX39VKDB|+7FxLw~uVd;P{@*M8&hX$dr!1dBiABSO zhYU{b%p7Q(g1r|j_y6{*c(ZF?KxNfF5bM{^*{9a8FTc;(&uObt5;jVVhQVk$7|jNw zMZpLv31hE|Yx$oC)d8{jCHLO%6PDZkPL83*X5nGR7Cv?XD;b9u1q|q%b=T$RA3Xhi sxA>p#_xk1fKh)RTy|0;ce*a(AU-N@4Wt=(#f%P7Pr>mdKI;Vst0K#MNOaK4? literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idi4yvrcuclp86s33os9nr.png b/vignettes/tinytable_assets/idi4yvrcuclp86s33os9nr.png new file mode 100644 index 0000000000000000000000000000000000000000..79d2ec079d343f0019c3277ffd9ec92fb9d02e0d GIT binary patch literal 5080 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 MdApad?ESpk{@&wx jZM{cVI?A$Ze_`t@uzfh`w8lya#&dSct$<4#f z%g4>f&nF}-AS@~%A}TB)B_XFEDX%E4q#~!PA+N5f00bIZikjNWItFU`#+oJ;+GbXI zR1_q8Zo-U3d6?5KRZr`SwD%fz* zaDkHB97FA{q;rvhXBd6<{J;Ez=}S~_Z~XmT&)@uIy85-e*8d(`-o44~{}>jim+WA6 zYPVLvNv;3$`>gk$*9*Tt2^6S$x^?;absru%zdyNH;mfJj>-QJ7F6ZB?-rsaV+bLae zVR*|qC8zZqb6s2F1g*L`_9~T#30Aqj&{6u*bs^H_h3LY~9is|IgNNcop~v;td40^I zcK*L}_EzKfCMjh5g^Vy)XTE095>C zlIHsTzb+gv+zib2zvf&p1{MLeelH|}#etprmmXk_pD$eH2F(5EIc=4JCBgHSd7wxs zb~+C%A--5HOdmAb(t=;)|9vTRUj*n2`JKKC|G)Vhzxxn3(EY!Zw`+cx|L4b~>|ZN@ z9{6{HbC5Zm)bKr1-1={OeB2|`h3D^vyx9Nqi|O=l&#hM1&eQ&KzwYDi@E;u)p66+O ziLd=L$@%xO@2}THD^lC;2X9`oW3ST;@I@GuzL_B*01O89mbxZj z+Ng7Qp$%$YOir!%~J_wN1s_y3nN{Qv*|+%+Q;paK6pT^vIy=DfXpoA;1|0LwvE z=4TV@_boZVe&W$Ct)_`?w)zQ`#a|d6d~e}nbZTc<=-hBY(cy)FLJ5a}6$^(f6HvIA zJ?#4oOUCZmH|HOCRJQQ&FWgFTm@q1g8LFdUG8!f**$hX5_m;?5b_h`Y&g2R`A> zd7JP4JNUEeOOt=hd3XIEC!T$N|8w$r{e1iB+n=a+%-;hnIT$=${an^LB{Ts5AWTbI literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idpvbevrf17t9gvvfejrsx.png b/vignettes/tinytable_assets/idpvbevrf17t9gvvfejrsx.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfe3c01c20bb9d917fb6f681803a4b5169b01a3 GIT binary patch literal 5073 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 K$0o%2^#1{gI{m-^ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idrywcl8tf16azh1uo81em.png b/vignettes/tinytable_assets/idrywcl8tf16azh1uo81em.png new file mode 100644 index 0000000000000000000000000000000000000000..04b900e8601a1a502d7058bd6be142b47df7e9ee GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#hD`B=`NlpMaElfKP}kkp92_%KyFR{vSH? z|G>%r2TuJzaQgp&Gye|)(P-?4p)qZ08?j3!!ZS8&cwfTF_)v{}|V1-{4BK*%Uo_EgrspE!qpJ#6P_h-s({xA-5 z;kESBUspU`xLi77`L+AiT-?{*B(&m&dIx9ix?A<<*z3{_>xx%@>jCns%;$c;|8M?= zb!HM_5GZK7<4xtbGO4{kV=5RquG#sE#Yzjy23%U+RScf4elF{r5}E+Z C(&yj+ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idsqhdx6r1507tg15exou9.png b/vignettes/tinytable_assets/idsqhdx6r1507tg15exou9.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8a2afc91a3e2ce3e185da6c19afe23505011ed GIT binary patch literal 1728 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 Hwvqn>ya#&cVga$-~RV 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idvwszbq0kqwnyidyemsgg.png b/vignettes/tinytable_assets/idvwszbq0kqwnyidyemsgg.png new file mode 100644 index 0000000000000000000000000000000000000000..b6cc9f629224963722c35431d023f15477b01514 GIT binary patch literal 1846 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+f@(b_@aRt(9YHAJ+4lXV( zuCA_retv<0fq8j(<>lq`=g(iUV#UgpE7z}IzhT3MW5h! zK7Rc8<;$0^U%&qT{rk_KKmY&#|7&pk76Sv@Vow*xkcv5PFMCcBbrWzoc+F;kAg9W^ z`oOmrxYmfb{JlQ+o%#x|?(bh1E56Q?`^%8v|DvGb!b66IhZ&vPnOpeSIb`_+tYj2Q zEF4}G9PsAf#+)pOycz~CS% z!d|@pzv9>5i>CE$7hVE+`Eqy9bgPtD%@h4~zCZ7otB{qf(|o~EVu**q&tJ1w%YJ+^vl-C-s8ph!5~=TR2T97ug*f@Pj{={r*qB~ zSh${Jlo$;InxumX>+9D1`gf84#}@lmzV-K|7ao4C4lc=Y7V%_D#Or;Dm-{RFAh_;t w(!%-*Zj--X*R;$RxB9S%6R8HlV*CgBO>x<$zvO2L0xLiUPgg&ebxsLQ0LD)B!TFMbm9UUuHtXR2n<@)vOH*DCjd-v`=d-fbSaNyXnV>fQxxOeZ~{rmUdy?giJ!-tO_ zKmPpr^Z)<(MX%kv!j8ZAa6i=2!PUfbf`jl( zv5=3CYkx{t+?)P}pW&Ram5D-0hQo^s4Hp(NE_7ygYG-TVW*60kD)Q1PO^?(dR+ zr|K;4eJXpgzxL;vf0O@~?0Ne3LjBoyr86&Zs(zW(;-|6jx=M)?=U%mi!d@>-Ip+pA zt@nJyqrDXZe{!?^K_3FM^4?Fvv7O4;IG=7vyH!e z({tLdUtQdG@1E<6@2UCcF5KSD@ps>wvyxTS;tTIj-)rfd|6b|KZ=lW>Z)02P;=euP z*}J#0s?}9f+8X! zIyySW#>OTlCbqV=c6N3S4i1ivj!sTaE-o&Gg@xtiXU?2IfBuRUE7q=E zyMF!pUAuPe-@pIRp+jfRoH=*y+=UAlZrr$W>(;HickkZ2ckllF`_G;|d-3AMyLazC zeE9J5=g;52fB*ga_us#N|NsA2eJV16fq{eF)5S5QV$R#kFE8bW^0r-E+@VpX(JR|j z74qZVe>UB}vabSG&YU}Srs2ATbzh%VerJn$AN!rTp~|V9wS|wHLsm?{N=Kn2!r{e+ zh6{;|3lB4aB<6ja|Go9!-M^)GTwi4FuMK}O{cim6SfH@8u2J#z-7YpENmTXrt2|K>Zl zzU;h{$BWEjXZ@?T+={!GaN1rOr5Ell|9Skp-MY_#TqacV{{8?(M!1zrMQIsrG1vQKkt6GI)26Pc^qHg zf6DxxS`_l#R`At**B9k4_o+Mm1zMkGnYw?P-Jg5} zZ;IWY*N3Km7q&_lo!52YbIZBN*5yiHY!()WJzU9Q>;Ga-XoZ&3`C%;mXa0q3&bjUa zRk{m5b2zP6Es=A4v9;x#GRNL&7b;m6UKg_JSNIa;^jxqd&ijQ;6ZI7Dul>I7g8nY{ zw*P{^Zj0ZQcCcKyzxLi<#wo(PE<`%Ka7t%f$UT>}MXy9mfJy=ny6vz3tS&t+uTrA% zef6t8dyf|Z?=C}VKa?s9wJtm0Ul;p)vOTBlyYD+MJgmc8*`ex0ss-sUabV|#{crw> zJZP_})cLag`vK#>uiaJuJa%Gt6UI_YBf0Ovej9%lBlp#e&A>(pgQu&X%Q~loCIH|} B8%qEH literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idzcxr6edk5x0bqu29jaoy.png b/vignettes/tinytable_assets/idzcxr6edk5x0bqu29jaoy.png new file mode 100644 index 0000000000000000000000000000000000000000..0981e71f874c51f262122c8085ceea6b8a4a0e7b GIT binary patch literal 5057 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
Combine two tiny tables.