From 9924f495f0ba8e428a42cc1ff9daf0fa4410ef03 Mon Sep 17 00:00:00 2001 From: vincentarelbundock Date: Wed, 3 Jul 2024 11:02:15 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20vincenta?= =?UTF-8?q?relbundock/tinytable@536b29831bb83d24767f0ca6cb137f0bdb609980?= =?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 | 130 +-- man/group_tt.html | 158 ++-- man/rbind2-tinytable-tinytable-method.html | 72 +- man/theme_tt.html | 30 +- man/tt.html | 66 +- search.json | 12 +- vignettes/custom.html | 102 +-- vignettes/faq.html | 157 +--- vignettes/format.html | 342 ++++---- vignettes/group.html | 328 +++---- vignettes/plot.html | 198 ++--- vignettes/style.html | 818 +++++++++--------- vignettes/theme.html | 102 +-- vignettes/tinytable.html | 390 ++++----- .../id3svxglwyt8yicbkcae78.png | Bin 0 -> 5080 bytes .../id4tvxyas554kh8dsbf9fe.png | Bin 0 -> 2214 bytes .../id5l4q20vtujb39wtjaf2g.png | Bin 0 -> 512 bytes .../id8dfzkbynidwl0upo3pdo.png | Bin 0 -> 1127 bytes .../id8n69ukovql4hy3z9547k.png | Bin 0 -> 5073 bytes .../idaviziu7pwrnxbhizufo5.png | Bin 0 -> 2250 bytes .../idban2918gjriuulp8zz3g.png | Bin 0 -> 2077 bytes .../idc7tna1xxp42bimf7m4ee.png | Bin 0 -> 13474 bytes .../ide9hqrs4kj6tvokdqs5yy.png | Bin 0 -> 5057 bytes .../idfq04d4xeoe4cag8oaw9y.png | Bin 0 -> 8399 bytes .../idgop9dpcr8dt84f5sjnvs.png | Bin 0 -> 11898 bytes .../idgq4vixlsmunm2gv6kqhg.png | Bin 0 -> 548 bytes .../idhjfagem8gm4j44kzzsge.png | Bin 0 -> 11877 bytes .../idiyddg67jqsy47kbwt1e5.png | Bin 0 -> 2072 bytes .../idjxah81p4f7tdsubv9x94.png | Bin 0 -> 2564 bytes .../idlritflh5az8wretepx9y.png | Bin 0 -> 12175 bytes .../idm2ukeperwp1edd0tn0yn.png | Bin 0 -> 529 bytes .../idm6lkdb82fshu7w29tz5t.png | Bin 0 -> 11912 bytes .../idnjfa9athzp2uutp5v31n.png | Bin 0 -> 8979 bytes .../idpxm6hsdr26m11euvrc7y.png | Bin 0 -> 15240 bytes .../idq2f8t5t0edidub5kba84.png | Bin 0 -> 2444 bytes .../idrdksirkivz153fe88idl.png | Bin 0 -> 2558 bytes .../idrxh666wpt5k3jno94p64.png | Bin 0 -> 1728 bytes .../idsvj9knfvsdmf7vr8t9qa.png | Bin 0 -> 1846 bytes .../idt0nhn9wmugikhfqnmk8f.png | Bin 0 -> 2191 bytes .../idtqq019n9rgsv5he59sf1.png | Bin 0 -> 11216 bytes .../idwb57m2cdzy1kfaeftfc3.png | Bin 0 -> 1829 bytes vignettes/tinytable_tutorial.pdf | Bin 1787777 -> 1788910 bytes 42 files changed, 1405 insertions(+), 1500 deletions(-) create mode 100644 vignettes/tinytable_assets/id3svxglwyt8yicbkcae78.png create mode 100644 vignettes/tinytable_assets/id4tvxyas554kh8dsbf9fe.png create mode 100644 vignettes/tinytable_assets/id5l4q20vtujb39wtjaf2g.png create mode 100644 vignettes/tinytable_assets/id8dfzkbynidwl0upo3pdo.png create mode 100644 vignettes/tinytable_assets/id8n69ukovql4hy3z9547k.png create mode 100644 vignettes/tinytable_assets/idaviziu7pwrnxbhizufo5.png create mode 100644 vignettes/tinytable_assets/idban2918gjriuulp8zz3g.png create mode 100644 vignettes/tinytable_assets/idc7tna1xxp42bimf7m4ee.png create mode 100644 vignettes/tinytable_assets/ide9hqrs4kj6tvokdqs5yy.png create mode 100644 vignettes/tinytable_assets/idfq04d4xeoe4cag8oaw9y.png create mode 100644 vignettes/tinytable_assets/idgop9dpcr8dt84f5sjnvs.png create mode 100644 vignettes/tinytable_assets/idgq4vixlsmunm2gv6kqhg.png create mode 100644 vignettes/tinytable_assets/idhjfagem8gm4j44kzzsge.png create mode 100644 vignettes/tinytable_assets/idiyddg67jqsy47kbwt1e5.png create mode 100644 vignettes/tinytable_assets/idjxah81p4f7tdsubv9x94.png create mode 100644 vignettes/tinytable_assets/idlritflh5az8wretepx9y.png create mode 100644 vignettes/tinytable_assets/idm2ukeperwp1edd0tn0yn.png create mode 100644 vignettes/tinytable_assets/idm6lkdb82fshu7w29tz5t.png create mode 100644 vignettes/tinytable_assets/idnjfa9athzp2uutp5v31n.png create mode 100644 vignettes/tinytable_assets/idpxm6hsdr26m11euvrc7y.png create mode 100644 vignettes/tinytable_assets/idq2f8t5t0edidub5kba84.png create mode 100644 vignettes/tinytable_assets/idrdksirkivz153fe88idl.png create mode 100644 vignettes/tinytable_assets/idrxh666wpt5k3jno94p64.png create mode 100644 vignettes/tinytable_assets/idsvj9knfvsdmf7vr8t9qa.png create mode 100644 vignettes/tinytable_assets/idt0nhn9wmugikhfqnmk8f.png create mode 100644 vignettes/tinytable_assets/idtqq019n9rgsv5he59sf1.png create mode 100644 vignettes/tinytable_assets/idwb57m2cdzy1kfaeftfc3.png diff --git a/man/format_tt.html b/man/format_tt.html index bff95faa..d63bdda8 100644 --- a/man/format_tt.html +++ b/man/format_tt.html @@ -687,15 +687,15 @@

Examples

- +
@@ -760,11 +760,11 @@

Examples

+ - - + @@ -778,15 +778,15 @@

Examples

-
9 999
10 000 10 00110 002
10 00010 001 10 000
+
@@ -868,15 +868,15 @@

Examples

-
+
@@ -968,15 +968,15 @@

Examples

-
+
@@ -1052,15 +1052,15 @@

Examples

-
+
@@ -1136,15 +1136,15 @@

Examples

-
+
@@ -1230,15 +1230,15 @@

Examples

-
+
diff --git a/man/group_tt.html b/man/group_tt.html index 37a8177d..36663ee0 100644 --- a/man/group_tt.html +++ b/man/group_tt.html @@ -478,15 +478,15 @@

Examples

-
+
@@ -681,15 +681,15 @@

Examples

-
+
@@ -883,15 +883,15 @@

Examples

-
+
@@ -1087,15 +1087,15 @@

Examples

-
Hamburgers
+
diff --git a/man/rbind2-tinytable-tinytable-method.html b/man/rbind2-tinytable-tinytable-method.html index 40f03bd9..b5a5212b 100644 --- a/man/rbind2-tinytable-tinytable-method.html +++ b/man/rbind2-tinytable-tinytable-method.html @@ -483,15 +483,15 @@

Examples

-
Foo
+
@@ -606,15 +606,15 @@

Examples

-
Combine two tiny tables.
+
@@ -730,15 +730,15 @@

Examples

-
Combine two tiny tables.
+
@@ -847,15 +847,15 @@

Examples

-
Combine two tiny tables.
+
diff --git a/man/theme_tt.html b/man/theme_tt.html index c83eb7de..2e680906 100644 --- a/man/theme_tt.html +++ b/man/theme_tt.html @@ -517,15 +517,15 @@

Examples

-
Combine two tiny tables.
+
diff --git a/man/tt.html b/man/tt.html index 82c9c18d..09ff3d71 100644 --- a/man/tt.html +++ b/man/tt.html @@ -608,15 +608,15 @@

Examples

-
+
@@ -720,15 +720,15 @@

Examples

-
+
@@ -952,15 +952,15 @@

Examples

-
+
diff --git a/search.json b/search.json index 2e768281..4e143e1b 100644 --- a/search.json +++ b/search.json @@ -15,7 +15,7 @@ "href": "vignettes/faq.html", "title": "FAQ", "section": "", - "text": "tinytable 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:\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::: {.cell}\n\n```{.r .cell-code}\nlibrary(tinytable)\n\ntt(mtcars[1:5,]) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\n::: {.cell-output-display}\n\n```{=html}\n <table class=\"table table-borderless\" id=\"tinytable_1jsc2fi6o5lmndjm7hyv\" style=\"width: auto; margin-left: auto; margin-right: auto;\" data-quarto-disable-processing='true'>\n <thead>\n \n <tr>\n <th scope=\"col\">mpg</th>\n <th scope=\"col\">cyl</th>\n <th scope=\"col\">disp</th>\n <th scope=\"col\">hp</th>\n <th scope=\"col\">drat</th>\n <th scope=\"col\">wt</th>\n <th scope=\"col\">qsec</th>\n <th scope=\"col\">vs</th>\n <th scope=\"col\">am</th>\n <th scope=\"col\">gear</th>\n <th scope=\"col\">carb</th>\n </tr>\n </thead>\n \n <tbody>\n <tr>\n <td>21.0</td>\n <td>6</td>\n <td>160</td>\n <td>110</td>\n <td>3.90</td>\n <td>2.620</td>\n <td>16.46</td>\n <td>0</td>\n <td>1</td>\n <td>4</td>\n <td>4</td>\n </tr>\n <tr>\n <td>21.0</td>\n <td>6</td>\n <td>160</td>\n <td>110</td>\n <td>3.90</td>\n <td>2.875</td>\n <td>17.02</td>\n <td>0</td>\n <td>1</td>\n <td>4</td>\n <td>4</td>\n </tr>\n <tr>\n <td>22.8</td>\n <td>4</td>\n <td>108</td>\n <td> 93</td>\n <td>3.85</td>\n <td>2.320</td>\n <td>18.61</td>\n <td>1</td>\n <td>1</td>\n <td>4</td>\n <td>1</td>\n </tr>\n <tr>\n <td>21.4</td>\n <td>6</td>\n <td>258</td>\n <td>110</td>\n <td>3.08</td>\n <td>3.215</td>\n <td>19.44</td>\n <td>1</td>\n <td>0</td>\n <td>3</td>\n <td>1</td>\n </tr>\n <tr>\n <td>18.7</td>\n <td>8</td>\n <td>360</td>\n <td>175</td>\n <td>3.15</td>\n <td>3.440</td>\n <td>17.02</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>2</td>\n </tr>\n </tbody>\n </table>\n```\n\n:::\n:::\n\nCaption goes here.\n\n:::", + "text": "tinytable 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:::", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -63,7 +63,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:\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::: {.cell}\n\n```{.r .cell-code}\nlibrary(tinytable)\n\ntt(mtcars[1:5,]) |> theme_tt(\"tabular\", style = \"tabularray\")\n```\n\n::: {.cell-output-display}\n\n```{=html}\n <table class=\"table table-borderless\" id=\"tinytable_1jsc2fi6o5lmndjm7hyv\" style=\"width: auto; margin-left: auto; margin-right: auto;\" data-quarto-disable-processing='true'>\n <thead>\n \n <tr>\n <th scope=\"col\">mpg</th>\n <th scope=\"col\">cyl</th>\n <th scope=\"col\">disp</th>\n <th scope=\"col\">hp</th>\n <th scope=\"col\">drat</th>\n <th scope=\"col\">wt</th>\n <th scope=\"col\">qsec</th>\n <th scope=\"col\">vs</th>\n <th scope=\"col\">am</th>\n <th scope=\"col\">gear</th>\n <th scope=\"col\">carb</th>\n </tr>\n </thead>\n \n <tbody>\n <tr>\n <td>21.0</td>\n <td>6</td>\n <td>160</td>\n <td>110</td>\n <td>3.90</td>\n <td>2.620</td>\n <td>16.46</td>\n <td>0</td>\n <td>1</td>\n <td>4</td>\n <td>4</td>\n </tr>\n <tr>\n <td>21.0</td>\n <td>6</td>\n <td>160</td>\n <td>110</td>\n <td>3.90</td>\n <td>2.875</td>\n <td>17.02</td>\n <td>0</td>\n <td>1</td>\n <td>4</td>\n <td>4</td>\n </tr>\n <tr>\n <td>22.8</td>\n <td>4</td>\n <td>108</td>\n <td> 93</td>\n <td>3.85</td>\n <td>2.320</td>\n <td>18.61</td>\n <td>1</td>\n <td>1</td>\n <td>4</td>\n <td>1</td>\n </tr>\n <tr>\n <td>21.4</td>\n <td>6</td>\n <td>258</td>\n <td>110</td>\n <td>3.08</td>\n <td>3.215</td>\n <td>19.44</td>\n <td>1</td>\n <td>0</td>\n <td>3</td>\n <td>1</td>\n </tr>\n <tr>\n <td>18.7</td>\n <td>8</td>\n <td>360</td>\n <td>175</td>\n <td>3.15</td>\n <td>3.440</td>\n <td>17.02</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>2</td>\n </tr>\n </tbody>\n </table>\n```\n\n:::\n:::\n\nCaption goes here.\n\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:::", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -219,7 +219,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 1972-08-05\n True \n \n \n 201399\n 201.4 \n 1972-02-12\n True \n \n \n 100188\n 0.13\n 1970-09-17\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 August 05 1972\n True\n \n \n 201 399,18\n 201.4\n February 12 1972\n True\n \n \n 100 188,39\n 0.1\n September 17 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 1971-01-08\n True \n \n \n 201399\n 201.4 \n 1971-06-05\n True \n \n \n 100188\n 0.13\n 1972-07-10\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 January 08 1971\n True\n \n \n 201 399,18\n 201.4\n June 05 1971\n True\n \n \n 100 188,39\n 0.1\n July 10 1972\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", @@ -231,7 +231,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 1972-08-05\n True \n \n \n 201399\n 201.4 \n 1972-02-12\n True \n \n \n 100188\n 0.13\n 1970-09-17\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 August 05 1972\n True\n \n \n 201 399,18\n 201.4\n February 12 1972\n True\n \n \n 100 188,39\n 0.1\n September 17 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 1971-01-08\n True \n \n \n 201399\n 201.4 \n 1971-06-05\n True \n \n \n 100188\n 0.13\n 1972-07-10\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 January 08 1971\n True\n \n \n 201 399,18\n 201.4\n June 05 1971\n True\n \n \n 100 188,39\n 0.1\n July 10 1972\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", @@ -467,7 +467,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 = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"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\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\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_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_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 000\n 9 999\n \n \n 10 001\n 10 002\n \n \n 10 000\n 10 000\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 = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"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\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\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_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_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 000\n 9 999\n \n \n 10 000\n 10 001\n \n \n 10 001\n 10 000\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", @@ -479,7 +479,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 = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"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\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\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_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_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 000\n 9 999\n \n \n 10 001\n 10 002\n \n \n 10 000\n 10 000\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 = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"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\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\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_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_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 000\n 9 999\n \n \n 10 000\n 10 001\n \n \n 10 001\n 10 000\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 df2fdb8c..37d2ba3b 100644 --- a/vignettes/custom.html +++ b/vignettes/custom.html @@ -423,15 +423,15 @@

Bootstrap classes

-
+
@@ -536,15 +536,15 @@

Bootstrap classes

-
+
@@ -652,15 +652,15 @@

CSS declarations

-
+
@@ -814,15 +814,15 @@

CSS rules

-
+
@@ -979,15 +979,15 @@

CSS rules

-
+
diff --git a/vignettes/faq.html b/vignettes/faq.html index 399c5b5d..32333d96 100644 --- a/vignettes/faq.html +++ b/vignettes/faq.html @@ -572,132 +572,37 @@

rowspan a

Quarto

Custom crossref styles

-

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:

-
---
-title: "Crossref Example"
-format:
-  pdf: default
-  html: default
-crossref:
-  custom:
-    - kind: float
-      key: apptbl
-      latex-env: apptbl
-      reference-prefix: Table A
-      space-before-numbering: false
-      latex-list-of-description: Appendix Table
-apptbl-cap-location: top
----
-
-See @apptbl-testing
-
-::: {#apptbl-testing}
-
-::: {.cell}
-
-```{.r .cell-code}
-library(tinytable)
-
-tt(mtcars[1:5,]) |> theme_tt("tabular", style = "tabularray")
-```
-
-::: {.cell-output-display}
-
-```{=html}
-      <table class="table table-borderless" id="tinytable_1jsc2fi6o5lmndjm7hyv" style="width: auto; margin-left: auto; margin-right: auto;" data-quarto-disable-processing='true'>
-        <thead>
-        
-              <tr>
-                <th scope="col">mpg</th>
-                <th scope="col">cyl</th>
-                <th scope="col">disp</th>
-                <th scope="col">hp</th>
-                <th scope="col">drat</th>
-                <th scope="col">wt</th>
-                <th scope="col">qsec</th>
-                <th scope="col">vs</th>
-                <th scope="col">am</th>
-                <th scope="col">gear</th>
-                <th scope="col">carb</th>
-              </tr>
-        </thead>
-        
-        <tbody>
-                <tr>
-                  <td>21.0</td>
-                  <td>6</td>
-                  <td>160</td>
-                  <td>110</td>
-                  <td>3.90</td>
-                  <td>2.620</td>
-                  <td>16.46</td>
-                  <td>0</td>
-                  <td>1</td>
-                  <td>4</td>
-                  <td>4</td>
-                </tr>
-                <tr>
-                  <td>21.0</td>
-                  <td>6</td>
-                  <td>160</td>
-                  <td>110</td>
-                  <td>3.90</td>
-                  <td>2.875</td>
-                  <td>17.02</td>
-                  <td>0</td>
-                  <td>1</td>
-                  <td>4</td>
-                  <td>4</td>
-                </tr>
-                <tr>
-                  <td>22.8</td>
-                  <td>4</td>
-                  <td>108</td>
-                  <td> 93</td>
-                  <td>3.85</td>
-                  <td>2.320</td>
-                  <td>18.61</td>
-                  <td>1</td>
-                  <td>1</td>
-                  <td>4</td>
-                  <td>1</td>
-                </tr>
-                <tr>
-                  <td>21.4</td>
-                  <td>6</td>
-                  <td>258</td>
-                  <td>110</td>
-                  <td>3.08</td>
-                  <td>3.215</td>
-                  <td>19.44</td>
-                  <td>1</td>
-                  <td>0</td>
-                  <td>3</td>
-                  <td>1</td>
-                </tr>
-                <tr>
-                  <td>18.7</td>
-                  <td>8</td>
-                  <td>360</td>
-                  <td>175</td>
-                  <td>3.15</td>
-                  <td>3.440</td>
-                  <td>17.02</td>
-                  <td>0</td>
-                  <td>0</td>
-                  <td>3</td>
-                  <td>2</td>
-                </tr>
-        </tbody>
-      </table>
-```
-
-:::
-:::
-
-Caption goes here.
-
-:::
+

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.

+

In 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.

+
---
+title: "Crossref Example"
+format:
+  pdf: default
+  html: default
+crossref:
+  custom:
+    - kind: float
+      key: apptbl
+      latex-env: apptbl
+      reference-prefix: Table A
+      space-before-numbering: false
+      latex-list-of-description: Appendix Table
+apptbl-cap-location: top
+---
+
+See @apptbl-testing
+
+::: {#apptbl-testing}
+
+```{r}
+library(tinytable)
+
+tt(mtcars[1:5,]) |> theme_tt("tabular", style = "tabularray")
+```
+
+Caption goes here.
+
+:::
diff --git a/vignettes/format.html b/vignettes/format.html index 2d518b66..7dec20e8 100644 --- a/vignettes/format.html +++ b/vignettes/format.html @@ -441,15 +441,15 @@

Numbers, dates,
-

+
@@ -514,19 +514,19 @@

Numbers, dates,

- + - + - + @@ -552,15 +552,15 @@

Numbers, dates,
-

143002 1.431972-08-051971-01-08 True
201399 201.4 1972-02-121971-06-05 True
100188 0.131970-09-171972-07-10 False
+
@@ -625,19 +625,19 @@

Numbers, dates,

- + - + - + @@ -660,15 +660,15 @@

Numbers, dates,
-

143 002,21 1.4August 05 1972January 08 1971 True
201 399,18 201.4February 12 1972June 05 1971 True
100 188,39 0.1September 17 1970July 10 1972 False
+
@@ -781,15 +781,15 @@

Significan
-

+
@@ -867,15 +867,15 @@

Significan
-

+
@@ -955,15 +955,15 @@

Significan
-

+
@@ -1046,15 +1046,15 @@

Replacement

-
+
@@ -1136,15 +1136,15 @@

Replacement

-
+
@@ -1226,15 +1226,15 @@

Replacement

-
+
@@ -1321,15 +1321,15 @@

Replacement

-
+
@@ -1430,15 +1430,15 @@

Escape special c
-

+
@@ -1540,15 +1540,15 @@

Markdown

-
+
@@ -1666,15 +1666,15 @@

Markdown

-
+

Vincent sometimes contributes to these R packages.

@@ -1796,15 +1796,15 @@

Custom functions

-

Vincent sometimes contributes to these R packages.

+
@@ -1923,15 +1923,15 @@

Custom functions

-
+
@@ -2041,15 +2041,15 @@

Quarto data process
-

+
@@ -2129,15 +2129,15 @@

Quarto data process
-

Thing
+
@@ -2220,15 +2220,15 @@

Quarto data process
-

Thing
+
diff --git a/vignettes/group.html b/vignettes/group.html index 4a0edf3b..7b014550 100644 --- a/vignettes/group.html +++ b/vignettes/group.html @@ -416,15 +416,15 @@

Rows

-
mpg
+
@@ -617,15 +617,15 @@

Rows

-
+
@@ -765,15 +765,15 @@

Rows

-
+
@@ -912,15 +912,15 @@

Rows

-
+
@@ -1070,15 +1070,15 @@

Rows

-
+
@@ -1288,15 +1288,15 @@

Columns

-
+
@@ -1506,15 +1506,15 @@

Columns

-
Hamburgers
+
@@ -1755,15 +1755,15 @@

Columns

-
Hamburgers
+
diff --git a/vignettes/plot.html b/vignettes/plot.html index f7665cef..e22a024b 100644 --- a/vignettes/plot.html +++ b/vignettes/plot.html @@ -427,15 +427,15 @@

Inserting image
-

Hello
+
@@ -520,15 +520,15 @@

Inserting image
-

+
@@ -643,15 +643,15 @@

Built-in plots

-
+
@@ -726,24 +726,24 @@

Built-in plots

- - - - + + + + - - - - + + + + - - - - + + + +
mpg
hp
qsec
@@ -772,15 +772,15 @@

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

Custom plots: Base

- + - + - +
mpg
hp
qsec
@@ -883,15 +883,15 @@

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

Custom plots: g

- + - + - +
mpg
hp
qsec
@@ -1010,15 +1010,15 @@

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

Custom plots: g

- - - + + + - - - + + + - - - + + +
Adelie
Chinstrap
Gentoo
@@ -1128,15 +1128,15 @@

Fontawesome

- +
diff --git a/vignettes/style.html b/vignettes/style.html index 96c8dc88..11e7fd50 100644 --- a/vignettes/style.html +++ b/vignettes/style.html @@ -445,15 +445,15 @@

Cells, rows, columns
-

+
@@ -572,15 +572,15 @@

Cells, rows, columns
-

+
@@ -694,15 +694,15 @@

Cells, rows, columns
-

+
@@ -816,15 +816,15 @@

Cells, rows, columns
-

+
@@ -938,15 +938,15 @@

Cells, rows, columns
-

+
@@ -1060,15 +1060,15 @@

Cells, rows, columns
-

+
@@ -1179,15 +1179,15 @@

Cells, rows, columns
-

+
@@ -1301,15 +1301,15 @@

Cells, rows, columns
-

+
@@ -1425,15 +1425,15 @@

Cells, rows, columns
-

+
@@ -1573,15 +1573,15 @@

Colors

-
+
@@ -1704,15 +1704,15 @@

Alignment

-
+
@@ -1808,15 +1808,15 @@

Alignment

-
+
@@ -1938,15 +1938,15 @@

Alignment

-
+
@@ -2043,15 +2043,15 @@

Font size

-
+
@@ -2176,15 +2176,15 @@

Spanning cell
-

+
@@ -2299,15 +2299,15 @@

Spanning cell
-

+
@@ -2424,15 +2424,15 @@

Spanning cell
-

+
@@ -2554,15 +2554,15 @@

Headers

-
+
@@ -2659,15 +2659,15 @@

Headers

-
+
@@ -2781,15 +2781,15 @@

Headers

-
+
@@ -2912,15 +2912,15 @@

Conditional styling
-

+
@@ -3060,15 +3060,15 @@

Vectorized sty
-

+
@@ -3216,15 +3216,15 @@

Vectorized sty
-

+
@@ -3367,15 +3367,15 @@

Vectorized sty
-

+
@@ -3694,15 +3694,15 @@

Lines (borders)

-
+
@@ -3809,15 +3809,15 @@

Lines (borders)

-
+
@@ -3946,15 +3946,15 @@

Lines (borders)

-
+
@@ -4041,15 +4041,15 @@

Cell padding
-

+
diff --git a/vignettes/theme.html b/vignettes/theme.html index 686bbde3..3bb74bf4 100644 --- a/vignettes/theme.html +++ b/vignettes/theme.html @@ -415,15 +415,15 @@

Visual themes

-
+
@@ -625,15 +625,15 @@

Visual themes

-
+
@@ -938,15 +938,15 @@

Custom themes

-
Always use the same caption.
+
diff --git a/vignettes/tinytable.html b/vignettes/tinytable.html index 5dc385e0..b4af7cbf 100644 --- a/vignettes/tinytable.html +++ b/vignettes/tinytable.html @@ -419,15 +419,15 @@

Tiny Tables

-
Always use the same caption.
+
@@ -533,15 +533,15 @@

Width

-
+
@@ -644,15 +644,15 @@

Width

-
+
@@ -756,15 +756,15 @@

Width

-
+
@@ -918,15 +918,15 @@

Width

-
+
@@ -1085,15 +1085,15 @@

Width

-
+
@@ -1175,15 +1175,15 @@

Footnotes

-
+

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

@@ -1260,15 +1260,15 @@

Footnotes

-

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

+
@@ -1377,15 +1377,15 @@

Footnotes

-
+
@@ -1510,15 +1510,15 @@

Captions and
-

+
@@ -1655,15 +1655,15 @@

Math

-
+
@@ -1758,15 +1758,15 @@

Line breaks
-

+
@@ -1922,15 +1922,15 @@

Combination an
-

+
@@ -2028,15 +2028,15 @@

Combination an
-

+
@@ -2120,15 +2120,15 @@

Combination an
-

+
@@ -2243,15 +2243,15 @@

Combination an
-

Combine two tiny tables.
+
@@ -2370,15 +2370,15 @@

Combination an
-

Combine two tiny tables.
+
@@ -2489,15 +2489,15 @@

Combination an
-

Combine two tiny tables.
+
diff --git a/vignettes/tinytable_assets/id3svxglwyt8yicbkcae78.png b/vignettes/tinytable_assets/id3svxglwyt8yicbkcae78.png new file mode 100644 index 0000000000000000000000000000000000000000..79d2ec079d343f0019c3277ffd9ec92fb9d02e0d GIT binary patch literal 5080 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id8n69ukovql4hy3z9547k.png b/vignettes/tinytable_assets/id8n69ukovql4hy3z9547k.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/idaviziu7pwrnxbhizufo5.png b/vignettes/tinytable_assets/idaviziu7pwrnxbhizufo5.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e677bcb026c2131152fb680cfb41832dc2ae84 GIT binary patch literal 2250 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fstfQ5aRt%>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/idban2918gjriuulp8zz3g.png b/vignettes/tinytable_assets/idban2918gjriuulp8zz3g.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce82825e755ef77a5aae22a83f323b43a1d7fb5 GIT binary patch literal 2077 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+f3J>rJaRt&sLPCm)igtE( zE-o&9etsb#A<@y%X=!OiMMcx6PoFt+=KT5dmn~biV#SJ;D_5>tw{HFV^&2*9c=qhs zt5>hyy?gim{re9eKK%Uo^Y`!HfB*jd_wV2T|No757V0uEus3?TIEGZrd3!5-QiM5= ztE1%!%k;=w|E=~i`b_Pb#~n~{S6hK`p8dX`3~Rop{bF#Kci|yp3m?BiNd?2g!^|AA zat<#(FgUfd3s~7SfTZSqIzNB=uk0$5FTz!)!t>XCef%XSL;cH??Uyb0ziEGY^Mce6L{I69$iia5h08hSc5~RezKC%dRZ3C_h_~0R zU%!0&wrRj1t$XnH%e8Alz!2sKg{7vGy#g?Fmvj7W07}kN`oav1fl*0n1;U4)=G%XL z`}?K&S3M|jWAFLeulVl{4E6i2FQ&BY>%O4LSu4IUSm>9Y({hzBu`Pa{FLraxophmG z&`NdTd!-VuQHAsho?lDq_y715Hs5!@Pu$cC>U(F$+50Pg@pM|=c|o0XuA0+)m6BN; zwUaJnDvb&b&j7h!Tfh3g{W6h-hnK&7-mmHU;zOn|wDtm5Yz^1B|NaG5V#!q}4Bmcq z`k(qs>wtHh{+Id7)-&yKL9Ooi_&-!F{BKn&`apI6-l!My%l;o_(Ess!vCzLG`wuY5 hJEN<{s5gJ`=Py*$3fz{=3#{iEJYD@<);T3K0RTp-m~;RD literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idc7tna1xxp42bimf7m4ee.png b/vignettes/tinytable_assets/idc7tna1xxp42bimf7m4ee.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e3a07ccb2b6f86d54e074412235ab34f7c57e7 GIT binary patch literal 13474 zcmYLwbzD_X&^IC7-7O&@DIE%WQBpvWMqJX0#H%Gg9iW&4WOd~3=DvY39zsLHa5V)0l2sT4-equ0|Ej-NC=3C05LHj zApxYMfQ$@~lLHD0KuHOxr~oxJprHY@w1AEd(9;732EfP&n3w=FGhkr>4<71JF2KzVczD3$$AFg?@bLkDejp$K1O85!{ODR}k_$jSmaIq>{Bc<}y#fjfKv5AWDFJ0= zprQg)Rl)1mKury(s{;)U@a7HB)C5{uKwBH==m1?^pr;4)^?`u_Ff;^4M!?t@n3w=l zQ($HW%*}y?1+cUPR#w2;8rawXTU%gf2kh;Eg9CW`7C1TrCnwiyD--DPK5E~2P;y`>nNJs!5K7hnT@bM!^N&=rgf#hV6k^)jwL0TF}PX`$pATtwW zWr6H$kdp&)bHV4&ATJN(=YxU*@Z}3AECfYGptu-({R&D-Kxru`D+A@_prQg)R)VT3 zP+bjbYCvr*sH+3tzJdCB@clbzXaJ3kps5KoH-nZI(Ao;x+CY0d=;#2QouI1=ba#WE z9?;th`uaeBKNuJQgM(mb2n-K{kr6OD3dY93_&AuD0F#qoY6|@L0j8(H%nX>F1#@#? zejY3=fW<}d^CwtZ0?W%_Wd*FRg0(fUz794vz^`9ma})gj4Yszx_BPnr0dP3@^9Sti zg1tSkzYh)$z~Lb{Is(VX;N%3Ho`SP8aDEOhF2Lm_Kp?=?6}Y|zH#gw+7Tn!|zkk8~ zJ%Ijt%R?EFkQk9(J%9GbJL@3Z>s@l+Y`?YFVqw90DI>#s6VkqrE+e&QR_1={WRtie zN`5t#F5;Po=;l3@HH-@=DIC-VOz+WOu-K83^}&*vmBmMDCDx2mYPWbM(!~VNR!6S? zwjGTM3L={P4qF9xICwBo2pUQsj1zDwqa7F$Vn>}6zJh7@$k~w;;GhtYwLH8rsL!T( zokeL#==~CRSq|gK%>9{(sb!>4L8>xNu}bV?Ozzm1XHDuI|NGCmiiqz(smX3HJfyR$ zLHS2qr4bIBDnv%RjCy78mpM(6znRh5S=8+Obolk@KPn{BCaw!tj(~rHk=`#Si;H}c zhG_VlA6T7#CksB0ov(pZ}wZZ;6uDZbOOsCyK7^D~vbi zkMS4CX620XhYENXRqBudv_7zS6<#9#8=vRXwAsA(O8%!%7o)58F7K-4KSAiBkPlZ^4aKkOF+%IaZvmrrz1CW(=?IvXZ zEpI$KLR#BU3Wp407K_ZFHf-C`{t7X~roW|b;__%RF8s&QFY2mYs!^}~-#?O&kz4;8 z_c24F%&OG?iF*IycjcSgC(?!g7D$>2EwJXlF<}`r&b^)CgbXWJ&g@k<%q3;_Z$c(d zXtlgP|MNnS8&Z4xghMO#@fQJ)WsQOyA9F1mD%~CdXtp!#AhSNWEb|)Pt=e_-#FlVz zoB@%ZN=kLyax(RSYB{ChOOx&JiroN#21?Q|+fHmX@yp4(JE|3whEbLm9z4_m!b>Y# zh*(e0e=qC~cx8zTa9sS`w0{?$4f^DTTcY0nbBeYSXjS~JZJMLSb!7mRB2N}tZp`W^KL zSq>|Q^yBMgQ#Bi(jg6?~WZ#+8<>v+9==?`>zJkiRU$_>g{8m?V?gT^l97UEcEo6#; z>mQjW=S~xLLMi!4TOBt=T^^4ZCKL0}A|hC!4RFX~Z##j3ojJAcpEpbFq}?a4rauwb z3|Qu|qDQbp8^NUNYaSQqH|p|^`KZt0!O!mwy)x)ZkZ^flVp{9-yptc5=MR-J z`w#vwOwPH<#o%J|$x$jxj+w_!F+5V3^lV|UmE|a^N0-j)z^V}7h;*hhT-lU&{x&6J z=YL*v~Wjw{Z2TWTF>g~0;In0wHmGMdFkJe^#_eV5=5CW6U=fa>ty$EG4&yb zsL7?!O@wvuDlgX?eZzW|mg@ed2%nW9T#FjN9kO|z5ve>?fX9x|+p%JABKEM)3^!O8 zo(n8)e9Ny_2Jej?%2WM~c6a&r?!o$tI~MWB-{xK~n>z0Gllm;~M+w~UziZYGh$6YG zv(Ud|@inoj$y<+IPHygs{Eb<_%Zu83uq~)rv7Qja!7#NWTZV_)ypwYt-;BS8$P?>^ zgOHh(4Y};~%#$w&Sc`83=O?Pp!8W+RGqnujGxT2M*{`1pIf*D=@+Gbo4F-Dh&@h;; zt=7=-vv9|MdC&{VQ~tG16R$$Ed?161E|amh=&2#8c7jKFv0RGiy{~S;m?DD7plN7J zc7;lIape{n>e=`5|911Wx--&gNrh;_PDYDDge~ExNCL){nfp9u;qv8Rh09WEBzEtgiFEjwJgN z7>y}(mgk9A%wGBjdY{)LDUM$_MOEEJq`xC?vj2;^KOyl(Y>v){A;8Z+(aE)3^|i&I|OQu*n8n#g*q48<|ej65DcK(Y)J>KVs zA)E;IVV1adD+2$-2^a3y$6flKL-_LHb4PgR-$vik;t`t`cl(3+o9@tnM%-`2`o&x&3@8uS)-U@p%4lh`uHZkpiGK3sCz_)*Dr zR%oyKg3UX)}0lGLz6Q$Omh{g?Y8JrnC><@t#_$kYQJL@rv};E#6HQ z9HUS+F&H4yx7H2w1hY63DvEA|+6N1B#gjQ2ElYtPPWYnL{^jXK0Ps21dSvhVMr zs}cf9+XveWIZ0{V9=1&Cnj zK_7*o#OzhU_0u#V`?tDp>(oWn$&170N86a(xZBB_BUvwp2J#|*(Vlzy^fdpnHcxn> zzyI1VWQw9;K--68(Vge1N*{$-I72x7d$&+S9!Y`)4Efn8^P6)r>UoC z+0fm7>5L?dLlmq$E4)yEui^cWCP0P8Kl#XwUER5-H2Y*L-235qlz~8xDCDC^mo`HN z*1Jh@`17Ai@>YsmFl#?hhE+X=SvOD!cAL>dPRb@4>?NU*Yj*xV`&iR6XH8{&ORhVS ztS=9zcF;acl2PDnS~n@bN-S3qfpp6 zK`QG=l%<81$vwm7TD9S~uzB0`G1tyLK&*Xuslu66W4-7G)8A0j>)1vck0P8tjm6<| z+07tY%1Ed$@!q|F7kLeNyRkn}Avhc3L{qcRX&D*3wGE!ztczK$&%qpD!;3#JrZFUl zq|kkm`|D*<=ji_TtJ2b#i`~j&1`4>T&B&nP-k}can%5TwKHn#4b&e)vK-n-4`$kzy;?SZF`_FUBbar|z7PY3^QUV3c+c zfNTCdjGYku>Y4%Ap)n2~A=1Ac8`dOw~D0W8IvwJ+1WO94|rH z5k=?%$f)PgGur#RWk%k#Cm;PbDpzo`aayaB0%M0>`g6jy~dg6t+;R2lNd#JXq;l|Ui zojvoP6zzk)f_>)d-!Jh{dt%4&Bq5n=AuY6z)f+ou^Fg5$y2;9(pWm#1ZWd{ewQG2f zuDUt(wC+#h$_~3yqJ+VAWn1X;vc@S7Uhia0;{fTB@XifEe9OTBoA=r%TlOVydDE40B>oHM>v+5)>T;U; zkVw-h76d%@SjTGm$4wc~hT!&>@3a?#A-c2UEsd?S{3UNXrx38FP6$B(iW$nZTY(nQARLi)vMA+NXW0+c^girugM_L~yA1!*gQYoV#d!4$-!L&K1<{swS&eRS4#DQ-d&#cgP(=#O0phxyOcXeH@;Cy;>j34Ic{?{I|62&FrK7rYpR}#jV?x1})?@Hes ztF|?950GgcE}d1P4X0jr&9J` z;U&pxY!Qnzvv3b!YajI!9}KeW79{dOyR|xq45#T7X|T8LAao$DDh&8M-6hrs9i}{< zq*-6Q9?wgo3Lp=(U_KEl6w%6|DXCZ~I=*+p-TLt}$)*h6!J0h5tD6mF5kPMLJ?#v9 zNT0gEyAnt(04%fuypIiKPb%^X#jL5?(Wjt(3Z+MUShNjRBA z*GTzevrqQ@CnQ}31W2{#SCBk8VDfd^CY@`@Xmj0FMNI7aNUoFF?4sKkf@jGqZ zCs=<&w(8!J%#cYXu0EAM!`C^s=Rv6H^#|QJWft!g(L#94IQ)r$P`DF!5me{8N6PUx zlkB@&hOF^3+sL$X^f?i|^RMU>IB%Yi$Vlhrnv(eHMYK!Y6Nx&>U7?#hobz^(&Wf$m z(Nnahq)ZnCFp-hj4l*2Tsw+n~;PHm*J7xw4P>YM0g%&_Q=rxeBn&iaS4=aANcu0E8 z_|xqV@bV=+6l)q9JJw_dKqpE&wDHFfoVJcYSUBk&+1OgQHd@azT(RNRd{a)BgKtUf z)9G?D#2Q8KFgU9%O9eY&4$rxSYX^_}ghR!TYSYoTCt$yi zEZn!t<#**po(@KKn$_4i+!wcXwDflXeIH@2XLoo-agqfUwk8}3TJUgv|m+lSvB z&B>92lF}HCU~4+9LxS{*1$!hLmRcBBx3C~DMT0q5MjV1|Qi_5Ey*+)*B}HSyv3(~< zZjN#uTGmpmpz zYcF#ZO{4B|&W>fQHwB1q8 z0FTC@>`f7jkn!=Xsfeot=)85DnWLXY@s7Rya68UEPfF#gnPt$t^=m;nw5z+OEjW7@ z32n<}waT#Wcj5iGO24kX@|&NC6xoZd#*CMTUXQ1wG%<+KmwRs9&R58tty5ibCr}~q z5~j(X5R!DM8c)Oz)n(bQcliNc(S-301FtVL%%kZWv-wupjusIZ+gfFLx`7T}`H3xt z5u1f3?{n(JB6^|3%G5e;7paN+x36y3!a#v`%g2cP^`32*#WMFT8&}fD)7c%`h{NSg z=(I@g=~hWcG)^ndxNzG+Qx_9yLR@^^lj-)aPGv zB+mL~O%>5=>K-7{I$m1;EQE*j^yHE%7<)zx;Qr&tB73~EYwYS zI8aFvHeU=`*|)g~U%U$r?MvZx%f&sjWmb^&o+s_<9~_5l@osG>VZV?lXOB^o-!m1s zaldo_(_(KQdF$arOY4#l#T~$cEWx;4&HIg8=`}fSX<(haqW$$t&{##nBI^J zSGxtiZ7V40b`x^>Q0ivu*LZ7uf*22{C*}6*wzxGJn{P5>t=>Ea;Q|rC#*L`|qU?47H zzy$3D?)BrW^?#U3%DLaMW-nqEexu}_r%7=8^@^@r%3DLh$JM#nntrPs@X|$pMIQ;A zcmBqLm2wroY`;LX=VIJq z5hlN`A>?0$!anM#A36_r4nR;3EAQP@m|IY-YST4)GD%k}7O8rb@1PBT$nh%P;@lmfbJ6W^j@^B@@Ip%pPf%iYHDLRpY{gDJt>%!B7{0FTVuk2f-UqMa z=|NSAPo@g*AcGm!NF%=OhAqNxj3N7eB;dK>mt1W>@~<$?H@F)-q4~b(($9<4vlw#r zLyzUy%wNLl7)R*o@A$R5EQ@KZhN(xqKKKIotEId>ekCI{BW|i|N&&H(IUhAvnOhH? z{T1B>=xr_e!UI*6nl6H8eEqS;=j(;Dt7-l!cKg^*nZ^#B_@HSg$AFQHbjCypqu9R+G16CYDq{Jw{@88T zVt&64=JUR;4&|$s=pV^jIq%reY2K3b*CgCd-^O&tMwYI6Igw+MLVi_gLJ?zZh#zYd zz}GstYvH=5(G~g}kHarNP>@$`ZQO8FNaF7GCHY8W((UtLh9Vo`l~CHOr->4QN6sNW z6!_3_g}t@IH+|uf-D+`3U#RrZo2wpcFUdci(NOQ~c`(8|E;jCXM| z<{vZtN7gQ+*4@+R>s-y;6)KayhuQi?d?b0xvLxR@tN(QHbz4fdK;wmU0`ac}I&rpR zp-S6UUgbaUs_L#;5E+&a8e&JaC*!8Lyn3{6P#R}j9_@4p*Y1h%9|XWwe8IEJ@2je; zgKKl`s~Fh#%#0F+3+>nxP4)q#b6$R%sceq1mBzsodSo4_-?0v(g)P>uQtNp&8dlr> zDn5s995zSWGQ0O0OH=Pk6xd9D$7`pFNEiGWgom}@*#+4|=G~~b_BEgDCQicN&deQJ zWze&cYpgyyKP$nVIL%F0cYuoRm!xru;0}e8s|MuCSZO>N%o2LEpZac(SB(sBSdVr= z$bvzV!`n8ERa%Fx`%95%f|Fd`gzFhH=-OAJ`Mn$MoL>ue&!r(%wz|-l0AD+d>CJ-< zg=?>x8%(p%12(}i0*uW^ndF1>k65fbyTz>wNcAV7Sd{NtyeT%l9gl6#7i|4u_gc?9 z1~c+t_hVr1$My@ybjrv?O$icrhE3gN(mT8%x}3rnBtp<(luF0@&Y|Zro60aDj6yHD z@GdiJ8r7)`|3w3efQ-GO!xIVpqfpFJ{lEkLl`50B`Zs07Ednm!$y;mXOzg_%3c*AYjlof)`vyMorF$WR!*;e zag}15F@ylBjdLxGy8iG7{KnC{P;*arN?B6nnyESQ;ML+Gh5AvWSNZ_Il<*sk(m_w0 zGn6tE)x0&Cs7~>Bi%QE-XjP$;cxKtmG;0)S69vLx9m0(<*HDH3U4f8On&5FhVSMJm zf6o;`Avyp01faY!kVl6yc$c8*SnPWri6_m0s1xl*=UTmI5d%vEOsai*Gqt=s{G;(` zb&uARx&o24H>zGF;1$-S;Ql+$;f^P(wL3OIaHWT7e4KPrwdJ`ic2eo1bG%`(h5xM%fcCVVdw8nQ=!To5=oY0xvuB=eG^#} zF)ftSrs|thO;cEpFn9em(&?Qr%=90`iMP;cJ3j---%?yv@QsUA5zDin{ zL8!~yxfB=Qv_<6RVRvHcMaQ%>x_KIU=fILVqf^^$2d6;1XK=g6F*cT9W{;T@b|F6t zqq?xC%xAoAn(>GJh_8M~Ok!H0@)Iwm!Fi)wf=F$jHI z9^q&06CC34|6vrSJaS0YtQGz@{^Ial`Mt07Z6Y2Dmm^Q5zlR^T zwMHW$5vl#_1-M$w;p*nNBPkk(SCA(nI@6n3+e*;A`NUb79mVAK21er>jzp86?dCi7 z8hIU8-`JN>zgo+2pgzPip?k_OJ1MZ;9cnH>(ln2BsC=O4xDYv2b{U+imtA=zB(ZuQ zkh2_V?DT3MVZvLyS_V`50jt;{kp5Cwi!#A}d`5UPDdj}~X{{Y<_A>Rm>lI&fV2tx` zy4K{S4@Q5m*!YbK`$_0`A5_v?ofDfiJgoxMA#*gP(eZL`+E5V70g(R&;f~Mbmf-pE zH%sFf*~!Ik`aO|rqWGSY=U^yb=i9j0(*LXcjYMg05J5KeQ+n^SZ5tUo&%T-S&)@e3 z;BLa9sXwD~opVa5pYFH*_URv|QR8nd+xTMeakY{CSTgU0lOIJS>=3WYOcX^*P=yDw z2mFTjSUr>Porjwb-k;|Rcoi#e+p3x;_MZo1``T78&E9sG`uR|#=1C!F;fV1ky`EB3 zZD#D=B}1fmR^%-YaC3#L+X`4TMk0t;m4ts=ie$t-b+VsXmtrvf4n?t_nQt>u=7oj( zUta%`=ugW7k5gJN0zbqUC@V&OZ%8AbehwTv>rM|gu4jY#nY|>hSaYaPEZvpkBGvXG z%z4bPTjCX{&qFV(?4+4+x~_Y$dxCsFKGWyR_Mrxff6}F7 zrzTV^*5U$N!B9n98t>p;d@C~S(JPjs68B)4S9M)ncc~xsF09@EVz$n37}9S4HLj&m zQ?kwxY@9}4M~Iu(yzJO`-{j2{FXQv69)oSj{5L)Y&;IkD-_LE%cjeX#`{6_86_iC` z3%4jH`4P#KTqm8z!=FR@d7l(;twKN}Mmc^5T|muq!ViUmSNwXXW!m^;L|ZZd3fk52@@?TY4eZdM=& zRPro5mA_b^?9uXt$iHOG8J@KgfR;scRd9kLn;95q^lB`dUTz96@ci+m+it)ezvOgn z%19%7aNLutU4|ohwM&(enI9C>^=M3ykPTGC%s*FCoUlpJWWS-~i!V~Wo!+~fxusl9jeqfJ?d>YEs@I%z zHGvph%xeOQV8t#L4eJf%8{r%GJq_d1!g-uD0*$Sem$m`4M&X3!AIf}8OlhSFix(y5 z633v}C^i}XSstc;{?`4kpMOQc;*T?{Y0KvUS95+BZhng@FuC}mRu?R!doD{6#Jr}U zk6uwq@l)HNNd0ri^Q|kzl$YNxvbz^%OAw{(T|pcV@O2Np1su|&jJ4?w4U}Neok}?p z0d6jO1AGM@_P|Wd{me7P3{|lNYqkM3ep@RJy)Ifqlz&fp{zl24-0*b&d^wQ5^#@`6Dhs$r}(V~%t>$H+(Qz^Nd`0WT^6+NODbSm&KA`)53K zzUF(f);T=UDIXz_SQx%qD{a|-u1G{(vpN>5&5UTgm9$$lKdwN=+A-VB$XknG zif#W)YqaNkC$yX*ptI$Q+BeZB^zD~0#;mi)#Bva*od5$Y7E-f-?FN4C*HPHjAVONtIMWA5&vYp zf3n8J?^&#o0{;{8rPn7IX54aQ z(;w;V`KQ63`MW6%b5(TqXvdCOo>qD%HD9cD98RBAxxWsqJl`jrm9Oy05*i$Ha&hgT zUv}fwhv&P6aUN?MIh8j(h2=gQv0mPuFIsK?*eeYeJ=`*sE z@<|n5QNqLn$dDA~*oxIWBTr%S9k1{LYL%O5mBxrqoo`PTzW zzfrcuQ`QyRU;7=3l}eaX*U+@(#a8BqQ~2!s$rBQ`cyvKMEG$@D``gL!=?HS2tZF#j z(Ikm=Jzck6Dc0yu28RhL49aKZ&*o)9s0b{ElLe>LxQw0!j2lvqCdKW?Pm{O%+tkdMSGge8s`Dike$J&A( zy8haaEm_8}<;t3>u^1lM6ccLY`^ckTMzj@55uSrgKdOG0if=+KP1#g1Fiz|8M3l!E z=`ETN1SiH^u!dQyjW4taH@gbI?aE*!^g#6)?@i9MEt&dEKv0lLSJIL;>iD2EG) zJF`2yzI-30nT<3qEkPG4UZuQAwA(U_x8LPlgd({^fB0=wytA_aWAe?*0_|c87c+#KkcWwNx>d}raaftRYzwxaT9S?5V|LwQJV0)@7QBc!Rdi> z71bPQC29EgicQS*g_E%P+#?#+y9e6^W20}}-lWJb>^1GTd6{h5jttobChKO49e-1T zAbew#=KM^;E9Zi}VF{YT4|_KjHfpxqx6)fAw!`;f%)UM^J$`#hhR3rgwPT!ZLY;>V z!Gehy%G|9}^+v9KD~y#kK>o}m(g)r7=fFp~{xJG4_WeIqf3%;|jKcXp{R8{ZN8?_j zjJen3u|_>#^i|f(_rAYvSiD{K6Liz&NeAN67pu1ylPu>*a)wvXok3J~exjc+K24~m zs6=77FcrTq{b}P!1;V^Pl0Jt*8VMM){y5e98QtX%U6i&{WQBigy*G0=pX9=D_XQ&7 z3;r%dBmN$=Dpw`(hfOWKriTAmtFZjH8V~yBQic?WPLtM$|NdSI>z6d^IPzS$Qo~eQsO{o7kh3c zalsP*!j+tE?l$VFcu*Y~SD^W)XOG{1Jk#J5-I}#c*GmamqO@lF&J1fP$j~$3{Fs8; zjwSWsv%e?z0Qa2A)_U&)x_Ofdi(gr{zA9Zp4X-3s7-0<-;m<4=BDjP&mbAV7`F!Q~ zYz-z5zwD-W7Rc-i5*mV0CDHIDYozliSICzt5Ob(K+oa=|Ws&^`I>PJ63ww(;zjM-| z%*M53lCP?0_dM2d?Dkto;>Dtwb4p0>XKu<)7e-H>n!c2(uAGTCka1P{W_dn39=xAA z@EP{rYx6($%ImX^ezpFH@7-AB^ZPeP@lpXvifnf=w;Clt`_d zCor!knZuZ#w6l#qLaq!OLBC&>J4OykGv(p&i=)n3Q~DE1kiE(9e5^%)7W4t-{Qj%y z-nN%9d`9PcDzf$wer(JgjM<68>_SdghrcM&DLEk^x>95bUjS!Ilnkg zokXH^@Dc$}xgBn6s~4uNK$4BfH^=;a$vCJZ5LN3$c~GAVwi8@?v3k*tqBK1|3_mzo zRLWbD5f=8tyL_qsfHun5WLR+%$1Y|n-Mg9c?l+m^y%mfzqSnwutxZOE&8{8l9_c`j zzqnr@?}Zzf%;$SDIBJ+#ko?NTnRFU|qku7UA2YrLZ9Q~uJYTKhiJEHqdYIadF9joW z&hT_xl_C_f64x*1`HpM!bl3zkYZd8u$^PhDOi$zGffcpDv~1i+tCklS3*P*X4p2HAR(9 z7nF4HRYW#sM71b;yZ&?G@IO%YR4Ks4AjOYgoP8uesF>nn(EP9MBA)}d8O&%OILPjl;uX3uhJN2we-VtF3LXkm?g+l60Ta3peO?U|kLcJJiJ z)11Q4M)kg;q^Uu=N(yz-B$GF>r8}?#XUF@9zpR8goC<3j}&CbyLr^Jt8VlFZS_o49%XdOgb$KVTdVVolrX3 z|KC%b5p)p`yHnZ#IRb&4s!ocyP?lWs0-Wm}3X^SfH+n3o-UpqCScw`L9r-#^m`nzKkv#F$7pxWEH=Wm#A zbQv`j-fCW3mb;q{QMS|3!e)Z)`I|pPwl0iCPYKdNNd!kJ)8|!hotZlmgRa!K3e*B? zAL!g}y1*wcFA23CpC+N9F1+WdV&8;t03rnSy7r_1qBXw$DpEHk2sL*}5iCc<4rVh! zq^bNZ)zp8dCO2Q9ajST}*kp&AkLfjBHm&@notj0@oz^2IN?xuZE#^W1k5PZnCTlOBu+1E;bx8ws)T)^@BJ? z-}CG|gPcL&Yrk=?trvguYs^vcrRETgIn|LFl;>VdHBtUIJeJHZl6zTn+Ov9nVTv~+j*Bl zk2^7)pOu{;ivkfwX~?0|E>861MnA7mT^HKi#e24n1n3?@4q78$)gkir-Qc7+o_B|7 ze{23G8|z&Y#9=YF++x{0F_O=PXPu1*)N6OaJ>b0)JxPG}(DZDj(9#yx@%S4|V=lJi zz_fxQVhM#9%cDVzRF)}`ogNA^leJ`P zLMjz8GLsf-it#9tnS|);`i{Pn@9g)#|0nl-UH8%Nstdtha@U?+A|fJ^4*%M?iHL~t zMMSna!^Qqi?ijRGiin6FaB=dm{Ts!_#U&&pBqb#g2m}&|M4?b`_!yR8mq>R#wJfFe)l4s;a7c_wH3wQ&U%0*U-?|w{M@O zrsjbI2eh=b4jw$Ht*w3N&>mNCC#K6Gd=+UEwhK5E)M#jd* zCMG7Prlw|QW>_rN+}s?8!&z8ZSXx>hJ9f;<$_kIiTU%S(*x1u zIyyNyIXgQO2!!LukGr_IxVpN!xw(0GczAkxdU<&fi9~O2Zyz5Y5{cyN>+9#|M<$c~ z{ryj#JbCKWsne%VpE+|TC@3g6I5;FEVPkii(Pkj*f|m zp-?DsadGkS@d*hDiHV69FJ4SaN=i;nPDx2gO-)TpOG{5rzkK=fl`B`SUcH)`nVFT9 zm6MZ0r_*oTxRINio0pfDpPye)P*7M{SX^9OQc_Y@R#skKe*5Bs;awp?^ah= z*VfiD7z`$p$zrkU>gpOA8X6lLo12>-Jb2L3($d=6+TPyY(b4hf(WA$YA9r_m_w@Ai z_Vzw|_N=e3@5PH3uU@?x7#J8F92^=N8Xg`V85!a6c%!4E@87@w@ZrPQ*x1Cx#MIQ( zr%#_gfBrl>JIm+u=jZ1a78bsJ`?k2axU{siyuAG5$B&hj6`@eLy1Kfywzjdc@%#7h z&CSg}fBsDVu8 zxSQ6&(58cJw<}*PN`ap)d%4L-s^U>sjvn1R|9vTc=WU-L)8N4$7YjC4I!6toCsvIH z27H*hqLJkM^?yYE#eiZM)tGKE8X`W0vki$do7#qlnIGe)z~IW?MgF(kFCma%_={%Q z@r|&L<}dwxUd+^PZgHQpY+A`$x9zc^oo9%578rWU=AGMEXoZNd5mZMup)O2UY0a~U z^bo=H*Koq~-mz>N_fD>!#9!7ZmsR(4Mifd zYvAJ{ip-g>zjKS@co93LXy+U0(CI<*h#%X8A5%p@#f2BbooCA9Ms^BG))0K$Wv)Oo zFJZ!33~J5DLw6LBUuwKd@bnC-T9;Jwqn)qRQMt4$rrnf2{j#U}euw*5na4EB+1#!Ty$0K^XV0 zb9YiWua_@0TQX!@Xe3S>o#VXhlcu@i$gG%sexY7H#-OxNr{BCGmbEUT>O(u9dMV>> z(VX)Zo{GAzfj92f9L`u74*GrD0`V^b?58p}A}#D-ahVi3FjKjNF_?GQT2Y;@Z^z5Os-tfZT=ic(>W(;vP>U(UQJ`9JR)Qb(3<`@UuGQNr$3zLS zTzimuD@51=XXV@;CPkP{qn+jRYA-RM``7`V-?&cyOCHM>UQ)$V9gB2hQhd^ zvp`g_@yOx0H`)1}RXWnZK&l_K<7=6`zjywqrn?Do(2G|7=-Uo5h0M5XUjLdvD}PY> zX<7T_%SA607mrkqbZls|+3U8~^PVd1G<*Kbb?z0cX&(#7T(4C-ia*ZXLCJerNb#Zu zprye5^A?mF4llpDs+^!%^Is}7E=%3IEf+-!VWEIi1Y_oDCy&imNGuBl$7$JzakVtR zsX*3QQ*hi~KSa{F#arLO@}?c&{uylwjZwSgr4qc|hJW=JzAWHGY%Tq0>Ry3H{78Z) z@1U^BPL)=kA_lF$;SRzmiYVYWg89*L^eINT%|3yK={%oN|DUAB$X$!i2QoP`Z%>bx zeXQDWp>kXiVBfun)DE-sY^XQq2pmVY9^t+|d(TTHKF^N7TwJ3|2xP3ksM5gGc{9*N z%6-50Vl$**vpA%F!raR;W%b2#kD$gTE;XD1=xJ#;ffXz!tn2kczSh(d*C$^s~nMJ%OC!2 zrF?VvA*(Nq1;^zkGu)4iSqW1j{{ija)at&Bd|$zneiBH-Jd1{|XN^8p4jwqhN0)jA zpSeWhSwA_9r%%OFY>ndaxP70|z?a7!#%D5ckm-IEeP3|+297fn`}KkiPHz$o1U_~v zI9;^9P59K@o}XV-soQ51&6QqJ0*SPb&a{UFoIw{F*mt1?3P1F~A7|L`H*D4CJhv-y zhnm*1INFE1+mGZIJ{eb|z}ccK?o01b1`vr+7knRNq&3OW&)nQA_`XP7J=LJXy}u#{ zX2hQG%Y0@MVVBOaCf%uj78K1JS&;=ZDERSf<3_b}b6R+0*kd!<{$=yPop|JYt(nY6 zUa32s<4D82c@4ST>)Q;Hf#XWmAt$BpcYrGvYJ$ihmUdK6AEX6b;aIPc$FE2qF~6Zh zp<#9zU%&RuLpQ=f5zH8_(|szd&All=fEoJs%2y0xS@!dac;ux?&gq+`^_c2lIF9y_ zn_zNA4M{jI3&P@jl{4Js7=82dc;xv@9g?l#UPB|=G>kXBLt^w|O?mBcIIb~~d$O(i zR-aZ)1}6>jjGHc3-zluV#3?hxI_X96+sm!Srm_4s1aEnh0 zT@P&&i;;q}^K7BI)nS_?!f_F>Ad<ZN~yQ_TmH z42SPSEscsGz3+X4UB`45pdW6>pNag*0*_$1tdsh9l{tMOzN)Y!k=K7x2d|Qu*tO@- z3KPJE+wxCuTC)cZ1pZe5SbeqOpN?80_P(B*4wqFG=s#qw?he$MsRBZ17SA<=a_TAj zetROXa_l#J*-zlJUW9z{bdG(Pr{3Yz(D>O>fOH7YuTt`g(0dX>&3`MVCUBi)66N&6 zTbhhre+R|w5QtpxXpkLPsRp!XZ1}y^wFSF&05vW#~H z6;CvfU$>#w_f^!c?yL@t`7)+}@A|w)Xx8IRso{Q9K;paNqZ)vsfX3n(Xfx{{a3vr6 z-z$u#UWgKW^HT=oocjKVJy&~=7{2S>9kRym!SpvfsRclGz@vMc6(c*Tl|W{|zTMHOX`{)xJj0^Ua|szf93*rO zHb-u134eBD#JL~$q)&nsb7#Zgi$f4KyL*XKz#_uD5?tAh`734ucj(!rz}Q;i!&Bsp zq)s3rKrw7-_k1)zgG&-yI1`Rjcss`-{pAfV3HX%N2PWU1P6l`hb-hP>MwiV{LzPd;)sOo%&VKU9+^cEu~Mv!QdB*a&8;vAMss<-G}6??Yje zxZ6}oYB4|zxNo;m?;|`aSml<8c8=efm}>kju_;;rsu$byuu8cVpk*yt+Iz`QD3vi2 z$hWL5*p6siV8!WKS1>2gCf)T76I2Q6eZY2#_S{OSnK5;e&n}hD@E)rse?gf`Y2HWz1i*|B#=4qOxxU^71aIOeG6V8VZF?xkO{W|M8|Nmy=}GK~nX263_5jF?)R@~2_&KPl&V8*(^>XlGK&l|VfnGg0@tM1kCg$6Q}r<3f?tj$ zIOM)0>iaVn=<5HjDaeMLQ$AX_M8uzcOiOZM!y?PxTQ(<1t+$^L?&+o!sqjeTYbxMe zJXuVNm`q^L?fZpZKP5zT!){7$nT}_2{M{l%ejj#Z&p%s3t&@enr!#FKKfPCJoP@}O zZY%P_hw?K?{F?UB?Qiar*-N%2D!}A+A%8l5l&9!lxBw!5{MvV?e}Hrhi&^JTpr&4| zUAe?UEWbTg$e9KS!U_4Q7=HVE=ti$&1;aSmyuf;BycT0(E^G%@`=U$)R_D<$*_o~C zPDQ{{zWG>i7x1Sq(nw$+3Ay%$U8btfh4Sr9R1haRxsq9*LiiO#R-eQY8>|n|Ft(oC z5p}rxK7_D~)EA85pq*j~NS6Dr>@;xI$!$o!Eu2j7>-Ahr-?C5{I+-<3g)sGzI)a{k z(6FdFSK&g0cOQOF3%1G|2%l?iPKQ+*ciIwn_~-B zBz=qB>Om04ZY-ulw`ddW>02j+XHvXdsKuwOW;2pvKmM4_0yK|_LZfAl+Uix-mQ8^P z;{K0%0>5>>G1Y&|;Uv%dCSr#?QjtvTn|R=66!@p@+w#Xfzurh%yc|d}nD2a6EWJML zm)sdM1F!ORD`bX=B`vHCOYGK49RJap z^IXN339iO1C2tgE$oo!q6X%alxse(BRgGF&oOQk_ zJ9=3xKdEk=T>4$TP*d(geD1MnoN`>#f7pdYOm>)!c4iX6N8DMaCcldB8kl-@7+u%-s3GNy^I0lSJ;gsd1b-nY>@_oE@_hEfOhtrH9NSd>!a#GT3Ue!iGPz@S9p1PEl zQeVfHbqAy8o}@Xw@0=d?HS%=mwTxN|5c|*N&1}FXPF-DHsnJQs6nWYZM!tLhATX4Uu={xy5Y0~n;N)mJn02Hx=atfy3^sYzXA%hz6 zDB%O4j8{~CcK<)gZzKP=xf~coTE~tQ4-aLk@?C)4b|I%@;;w4|C8YLR_e0ED}Lk+*}WdmU>Tk-IRDq#k4#`vJ=RfP?E31&C)JeMs0I)cBUJp-f$i)? zVaDxWIA)~DrvjmAs(**T<#S#2V(D{p>^%}cco$uq646q#|Ja}}1mGLsC8f-QKn{@l z3s5N+#F(M=4ih_Fv3*6}E5%2iieIB!&BiLJUHHpZx%mLHldJ{}m5Pp^uRMzLzQ@L1 z`nsyDo2o>o2#N-C{5){Y%gZ>v*tJ*nvY^bMV_x{lys5I6 z`_Q(sQXn|8T3}EF6;b?pv?7!P-AR!>t}z4iUjk;A_`5#Ivt%SqvnG^rtjG8;@(;$& z=OcyYp|9ad>R5y^rBz*}qR|7Z8@yNfyg+xKXfLj;b2P8jtqTuFZcS;NDLN?LPGS%V z&*SAcfqHbwd!7<^tCbRjB$=xHc3SQlf87<;bt~ee0@?(>l17Aoa}!%b_~=y@eA#7?OVj7iQEwmS8mw>Ue~I={3oQ?uXL%(r~o7=AlHs1C#Z z>M4^wDVXaL{^)OCH}!vkx-KTi8BPLqZsA!dH!-xo3X`)g7yA;aP!3XN zarp|S*S#2iPpKbk>k3K4dK;`^EyrnngV~zd7@&mlQRE>NPxHzGe&}5^z5z50F;>9{ z-I!2N_Rd1LMz1jBe|-Uba~BFe-T6}9UGDCGbk@!0Oh(Knv|llF`ClE`63H!wR}62i zz1ygS2&B@P`Weqjxlm+cd@&&Lc~5N86HKw#3U@GQn3j&jM>IGl^1o3eM43FKMA;%t74 zruA9r@AB)jb^9;Dp;6-j>R3Z2{=x9Gn5P_pX$-0K{@a8njJEXzYOQ?bJdge)7V7&x!ue+(G5SEoyl}wir=&)GIwUNK_ znK{xrnutX)CI47KdgIBtF$9rv(86#>W#&G?1v3Cq0NFtT-<0IVe0A_{+P+F7`m@r?zUQe)6HBa;(H$M3%?P0qV&IUSA??;ios|j%>3h)`LHkl zL@jk~Gisa1P!P=&rfOj~K&2_095+tW96P07pnVCCn3cz;!&`!58Lc)?p_La`#K0sk zzZZEfz3+%+@`ROp`~qO@YS6O;-j(+ZoHo@UgXl?l!atz;+Hd?fk790kW^?XQr3moD zn633KjeT-{^szTR&q$$S4AO!b=)NG`teKCaYmSa*9R|!&vUQqWky@7WKu^S}3^hq&e5ed-Qgp6Q(1=YiVyHzr{VV z!#pHHxq$jfTY~KwR@=A{k}MJ4WU53Wr`uk5<@0SUXYr*w{`t z@iwDY%W?)MfF}DzO>JI*|3*3OaW-Q>Lg~4K&*7gr@ysLcrt`fYbtITAiNK%L;#a7` z-4(N^a0S^~oKqShdCyXs?sg;CCt{X`n{Cej!7gj@TTGGV_IJ7>fR+=$k&$tGsy`;f z6zq{O06f)(UMaoT$3jj|+Z*yI>m>#)`6o9a9P41mYv60ev^u#+5)hNTUAp3kS&+QN z?`D3`j#Dc7(eiumnIQAQdteurrO-yNW{qHEDdwp$4zyem@kV9 z_z?#rK^DIXE6il zg>UJ6J3W2{rF&UD2d`9;95hgY4tZ~>PNU+uy~-`08)pKd_|@8bVZb>3=Wm9PMi~z|MG?}EE@ujvR<0q$K zYr=rIP$|MwbwhOC>HF%MJZ0XPH3xJ8;4;m_pmty`4-?eJh6Ui~`t7U*!J06tC+VG5g6l^#_s}`FhPVQ>Tc;Ydz$bq!&`YW4!;A*Vdq@pl4_Mb) zhNfE-R%d5Oj2 zxMfrQ^uB1pR1HB48S!v;_HK87J=a?sEo{{mX5Pna{0a-65v}|whEHyxvJVP8X5ap3 z%HvhdZof{iI@A-Tl%EESQg&UDce;tYGURVRvyP~XE`&Rj7g;C17dEG@aVpQKcf)&L z=q`AG#N8k0pw;!o4*l-a>0>h!hOVRQK@Ib>e+!w%5lv;B1?b!h+G9tam)OJ3->1dp zT!2*Dr}QUvvXPD1SOL`%{aPVM%6)mCKeJe37e1n1y~|NqYTAy-8`J$0n?)!;)c>WR zxUT9y!SPL8S9@Ph5RYF)>rhVj#Px3ce#&x7jbzz#QfTEU!&FdOqS`A)+c(vOikhIX zy+MtTft4{`nt+>dPabjoEV2x9RJVhdgRS0l^-l1?yr7p*_7Bs^eby8kWrBbqHOKLb z7(I(&;3HXfV*b{?#ny$R99OuE8Zs_>WvxPIh$9CoGvMxBSJBR@?6mP*N2|s1QIkBz zVpBZ_E!gF;yy=}0wcmMhy7DdwQexJng?dKr;t!%ps_Z)&U^bd=GwI96@T#44#d8+5*%W=4Q1)PcF79>(X!^YW!uL}b9 z?R4Z#xg^o~$}Li?SuvUe^?AfZlrJY#5E;~d{UU*)-^ zJ!sD6FZYcFZ5vjNFpZK0DLPKW6WxzuN$(c=1d(e9*#%YtRXNYT-LWao$9mX>(nY&+o?O6^G>t4YgDmi z2w}v%*yx#?+x!MnIpBcG#h_c~!ON45W&dArL?YOP$8mB~ii*AdrG}57Y+N@E>x0|+ zvZaw-<)d3_iTDuLCLhsh|4j7`Eicb-^w=ft=l%Uk|2umfbvR8tDjgBF0ic;gP#`QF zEvbo$2for zlbkZppOzF%XL3zFd>@Z)ywIHeJyiq^P&6gzZDrqbOT|Se^>#G?Rpb=0oGI(XlwGq1 z_$jmxuYAoRj+)INP+C>RZT|4X#B+@N zgNwO+pF)pC-;{c>UAMeJr5EHODuqoR^ejlxs-iMnye)VEzLVsT*En&zMd6%6+MYH}^ILrSq(^KzAz(G`zI;fX6S*Z41W zsGtmS>mFglaE*A2fm`%tcaywx=i4=7G37&`jQSRL<2Cg!}Z9jQuh;f`=B9T$9T((?>Td@8c4g(I|C~2!Wnq!5# zIRJ98(}&ciIQJsFSMb>#Z00+E42Y!_vIRr$-90aH@{YNTXG_^}HX0;w?G6~(O5{}iGMmj#F*M9_z?fCO7!jr7Lu@|k4%qElJ6AhW+;T`4@W*bvPyMRIc--^sD*auuo_LiF-U z0*5fl(iHvcw~Zel-~{=Vz3ax6$V?9&)wYdtohi?ynm)VRehJ?u(e|gJ+I=QXn~X#i z4}U91)tSAHRU#7*UzfBTSH7RqfkUe=*7*@{)V}JL(u%V`lGN6>N_rFzSTh5@up(Mf z>sb>eO~`mQyEozP+^_aCFh?_6%S9bg3uE^udHO)z^ zaA`yIVnEEoAN-0Mz(KP|qt|fH(-2|wm12>#&)NXUyZ!*3cc?NU$G(QHg7ae__!32! zb|+Pu*4%Ec@XMjdhk853U*$L1dZXmU#ROX2Vpgk)83`YI8yG%({RcCXf?Nqb&|kT< zDqSXxZfsc!k13&aPaP@b?|)%vz9Da z6~iU}qNHH8RbCT#=kbdUo=6QRO7HUnP42~~A=S#Kt{J$beSxQwf9;bx{M9RqF{>2k zUPivqOjJpRfV)c@w8&c34K$nk6h>$p-m$6PPbmd-2wS!{L{o+=ChJMxHxBO5yjUbo z0j!$Y7DXqk=E*6txxM6u5q&Vf^boigDxso(eH?*h7S2gNxX3Y~3O=QlP?(4YnxOXR zyUnQH!fSMjZ^X>;WM9BvoYhjxx_5vgtz{QpTukCLI*wNy$#h3O!JKKOEuuyULzK#2 zY?~3aN;?CZ=5Ymo%o(0BBImBI9gXJ6U~8T+>aTT|c0GP5L$GWJD+F)+v{zekWs?YbJD1$0k!cq@~43BVD}kmV8T3T4F`| zVx=nghzv0!36bmd)Z+t%{O3HK`;iB)D1pHQPB(*Rmg@*KRfaJ+gFK$GN1GG+^BDf} zOJI^*fm?}Ggk?#z-_1I)bw$_hhol&KQ1d3I=A?3uh0_(0i#$;IgvtHKXdU{4Gi$_< z6Q~}LDDLr>(rLpRXQ1^tVYfwcX0(HBt!JB&H`Mfoq7^a@Q=3wt+@z3?j46`Kek_j+ z(i~U(o=(e4{eWgiXuxnOTJt3fi5s$=U!L!V!XMZ*na~|6p33RRSe>nYp%86Q_bI)^ zgM7ogRM3j(DyuhKqEZbpC#=&MA+yu5q?UYrY(>jPtOnPixY`{k+ot)sD1*f@Yt|iy z?t8!fU|nM=SW;@3{DqKINh89vvGHMrJtK;};mYVD(`_gDjO*ml=oK~Y=ahHqnYwY; zzQ{}0=9kTmA3D2abE4um5n&)OMz!3wO9&YrP6f8K&ozy8$=rBwgHlIB?{;rGVmFN; z(&~Oh#AQ#m4yp0ku*pDya^@6-T%0m)Zc#c9=o8$ztOOVXZ1qf{+!1V}X(Y#2%Y2;S zj5n$M#&ioI?Ei%lC~3=EbEo_-Jgn#4EicF{IHYqSJUBdl7Z9z=XQW>as2AHqs z!+d;>B>eMfH+w6SwOucLK7BA)!x_R@9B11_KY6NK50YexaY+9B} zZofK;L~jy_)gXXB?y%+(I{n#E&YdqGvDmCqgK$!F=01Gl?ANdC=4$~O$|a(`v*Rd1 z#`hoc4+9(N!E3-<5o_uhLbHpFVF&nJR;8D;!Du8xlTd)xFue1Jca$j_h>$M6y7%3` ztCDqM(~G>Jb#AgibkvBnD6~V6&oh&M1+>O6)rWekdCwFyjuqJd`?jXAcJm}<`3{<6N5=SF7gK*sWLA_O!m za=f{O5KlP0oA*Hc_0f zypN;?VBm&dlDRMaX^CA7k>crZm)br8$zOg_s!crfLC}6t$Q^$fQK_3yGJIFbQ8`qM z{-RSBdNGvf#J;TaNOH*)HQ_I_mo5icZ*8gsZ2O*GR@cM;LUf*nun^A2bH;g1c{JcM zTg3IZ6@rHg2$lX~V8Uhe@oy0|pLPzmF#D%?e>xzEsS#<^H|z&@DC%7{eid{gmo7fX zs^`N?GyGu>aed^GNWwFvT0Xdxe?uVZ1KrrR-r!_USw#(t3K9nogTUO`e66aX; zA(bgT4F=_=g#q&TJO+B(j~`jkAH|6{b8*~Q1`C9UofJ`n`oJeVk(MayE$2k4DT?%F zl&HDR%Fz{J8lk|=NLZ!-LcCE^Pj7f=9fEAi?6h`5QfHA;^sUV8%WeJ0MlB7|nfXivk#ttPR-llVDj{HHrPa8NJ~ z{-p4p#`YZj z#5C3+9Apl=-X*TNcn7Ixc^wiK1f>c_S20dhR{#*5^z7D!q`aG*Fkep;6d%Bc1;NE# z0tZ7m8^JpF+kxR?wr$-R6l{lJkTs90IQ35>lb?TL4R_gXj1_MmV%z6TWw5FB76q^J z>#~MImMKY9jj+w*2aXXMFtZ$egw)bckOIHFFX6)!s*%OS*3v_ehYAinM0{9`1=EQ7 zO`?w*)U7|rm@HonGF;i?#vv3r76Wm&8xCZ=oJQI9q??5h+N8H$H5IIgz<0?fR5q!2 z5V18Re*)@FIk}c6QR0?l#6=uq%t7i`RUM-WAZ8-bexalSJ5g|Hn`aCpVSyx|ja=X94I0{@0 zWv(x`o8A}M+qAFJ!>ZcAno0tyOneH+80I8WaI9s#Vym{sY{j=0SW-z6Ie(^{v*RK5 zE>2}8r#GY2Lp9W&bQ9Pfi7Yj;r@~eE zPM^&B^b(`Blc#*@Y%z26{G;TA_ekRhV&5O6KoG0nZ+pkx@!-G%vc8fJ-1GTnZ`3X2 z)Wbu^DpMf3#?}cVIn8dPcO))fd!sRXv)6wswq30?{RQ5lm@DqjqRbW}spoJ9bjZCo zSjZW-C^Zl$L|cn+Es=5Q{UqVU31WqIu$C$Mf*cj+W1ZF0WIOix9_TFJjJ{;s&9|!b z?s@NmMe0TBSWni5P1o$xB4#SH)pp#b4Dwl){%Nh70j?T3P$e1%vfh94-{;!NNIV+# z^RT1=kX4AP!WcvI%vDP)8>3ou)4|Do15FpfV*Gpi&T!-w)Ms(T2(;uryB>^$1s=Gt z2pLY%3sU3%?Tm*0V^6tF4Z}lPkN5sZ55yP|>~=@EfnsN;*7XtnHHf7{OODHtO^rkl zL4GfmH|*zy^gE*SyP0j{R^RHggdieEeajbG;NRs^;NWL`j5>ai0AhxW%#cj-G72jRS{oO+Mukuk*1!OqhK4%}4VB=kE+R~Z*q22m|2C2`Po zY22eb2A1&aMYb^_Wvc8s34~5DF5UXgF9@)6{ikLwrQv*pwRVdcpHT-Zxls56w`rrk z{n7_AX%c@T{9e|#nvG0VMV=FY?9sRUB8;UdJl(RKObhs!yTjSOILp%|MH9|LpZ7Ec zN)$G8SWr9b&bfKt)qVMkC&coE{S$I0k-7ccAk%KCB-!;Jlk8L<5^ur(0C{|bzSC9P zt|l=HXPCzGc02~@Zo7uvw4bu=6R5K``ZH?Y3sY;27*-pJ7eBF#W18j%3{B%plj%H? zdoLtx*uBMcbcmJLEot%mRSGwZVnf3QOzWKT3K0&Vo?!iTO@&wTnR9>fEClV2Zx3rvar;y}DaZxPwIH3NVu3a-lYt*=z(2m|nfx z;a~sS?L$DB>a6#Ab2lfRf>!J@2`+xGJtqTtd3OK=i;?@r$-K$V4A=V5UY}}v%NzOZ zi1S^UPx@}1ML{9N`;F;~97zHFZzPi1a`TlfM)>Yc^sITDjZ=eSjs)yB0St8 zY-5Rm*od+A;lZv{>@_-aZY};~VKupS{Jk_fHh?1kC3W3iC1ruLwEhXM;{v$=yR&D_8?HIaB^41J|GIJ1d>DCsSf)(>-* z>N?ErCkSC5(~?G);kp|C5|afgMb~Aa>UxWJ(sm^bY{g%=;4lrAozx(D*C|rxR)gkb z*@f-@^4%<`dt_suuIlnhIO$F^E~^x4IwnGkS1`15TnrD7J1MX>y^29)ymCBiYRqx8scP=ZsvloOGdMNp~Cv9(9NQzYkkJUVD_q4t9|U$fAdm zZuP#*b8yeTyzjL_6Du?1C*pe~?6O#)5qnKBJraA-mzVp)ZWNTR>X&P$vYpT1Oc zZv&u1pNEP!8L0GKSgft~Ul$_8p3hW0!@bIu`kGap#A(bexBb1VLvi_$<#kJ|ARzl& zVEqGM*2Po){l7{V`b3n~-XxfQ?a&up)b5;of1*FqYl}^cag$NXNDzX=!zWpJbba$Y ze`kC;NLUr~cw;O*(qSUxY`FY-!j1jAg2d#@;2m!|2(Nk^R~IHT7C7BbS}M6S*i+*+ zHkNC!t?^0mlWR52AV4eNoF9}gBja4UjEL<*c_j-Ky zTp&2MlL&}Z=ZxpzHr2so44#-V9h&~l-7f5(wRvTwh3k^ja9)9W&3Op2_ws|-C*+E` z+u9dnea~;bkgIeoRsZw4a$b8X4H@t8PSW=kp+*EOv@{)|<9@f<^KH)DPiybIu4}Is zdfTYq%zZRzZk7kEfYuu^jHVAZ#X>qPBrU21Ez%Ko8Kupynuk8x)4OsVgYc!|BTw!c ziswzlIH%@>FbhO(Iar8Pp4~2HQ&NASDxM64i{$7a(ue<`U}ssI_N+IA<|$VRX6WFE z3j%G;9YY`epHVn~w$pg1*R9;-lCRylcDm(i9)a@aAogEhJKymSHR^_9(tkHPT92^j z(8?|*zt^(R3rN$-(hblc=K1Jxn(NCRq;F;E0@ZIx0D`)#ydp1in)GyG8}Bi{K4QQ5 zcG8`@S6-tyxOj21PJj#kl&*JcBAx7w4a{d@~jbD=c!`2`P)j^_%Cd#}7aPPld z+QO=Ky*SIM)~1o&)6w4@vOTfLb_6S6DaQaoyZ-3A^6?buuVr%YNq|?{%F0)`yvD)W%gnJAUIKk)FFCtLy?& zv^~yASDh@3w9@@i8CBp^cA???J1sh>PJJckIHv2!sQeGEX-!~E>Vw0>tH=&QZh-{6 zLp;2L-R$nWmV;u``&lScG4sr{%q_#2L=e~h^YMvCtR`yNZ<=@27!tH3W^_lze+A#~ zXq5!4;rl12SWTbT^wSD7R;GH9!WKmx{{BGanjpqac<@l`f_&WiLK8im(N1K9?Usta zbimZ6erk~~Vltk*UMQuEV181rGE4Wjv-~SZ*2`gCmu3vz5RI+a* zU+r~9=TTTU+^)a0dAZZKxVkba14zU$>_;*ujhA?nuP$1b23ka``KfP@caCF003Lf9 zio)>g3*}7}PazZ#jt}G-SPD9yn+VC{4&1XqFkbdE9eJ`!oR1*zspiuJx^z2gH+K^S zY8)y-6z^zkKx_&Fhq}ynKj%vpYGm*jL*U6O&%vSA9u2ZEP^)AxYB@bg%T6QY?H}5V zqk~*STdc@q+|MWBjE8o;J3!FqWd;gVn&*z({UDF;4WN6d$A3RX>C#{7Qo<%#lT6%H zSJrAZ4TZ=EgV$-Aj90^}arv<7<+V2v$eaOVk9zX~X3M&vwvW$|S`)Yh*taWAm71Jyb zGF|#m#Tu|pobhrKSx(OJ)R`HaVUix5l*r4>G(K3_MlM#qh0XO3kw|a1N283#?Gz84 z)^pFjP9MxFYwXqo$D25ylBn~E^>HI-2D>`ava)pLJLnn^FNaAkMS;43uu_b8xN+B` z3rTZw%Ay9o(<EipPdSm`uITBQck0$`?$IO`E(E?+(~4A%}79wsCBi(d992l{PCl4mvH5Q7(7 znbPwj4g4PH4nqgMqb{Em$`tg$jgf9K1^?yhA(2>5P*{z$Q(G`vMD}RR6BfRkZfr$# zXl4UMAYnQ(Sv{}Sf2S-w|F=%=Y?f}7X3$MV=E2RT?>(D(f7v?1jq@t<-N)Rs;USDZ z#|)wdNVEmx|Aa8S4aO}bK2J_3HY(O~$u2&X!cpX*t+VsNvuG62efAqHIdSO)!=T&tRKroWu0H^cp|_6A?f>q)TSi*c}%Gl1X#-SeEY< z9~-^ooWEfLH8sV$)SYKS*gLkv30zYt%jk8;x$?px-v7pk4PeUV*0c|UJCUD;Moki$ zV_J%RtQUuBTVUd-L7}KB6;rK|*RAJ(#XVUS(f=_Ub!U}({dW)f?*b4esv6YY&E?Q7 zj^!_S23LPqzw+5ztqx3pEz%4KxBNwGn0%bC#*Hi#W->1`a;?r)!0X{xc361gk>K;M z?18>hM!E*1Ua9z3Yd?PqF}otMa>-dv;C)yqNWnmsEAHs{l;&f*iTF2=9e_1hw$nWBa=-RL5ZrRuuA32I(+0$-S%<} zm@g|Tdshg^xa0L5!B3#+Ia~W=q^I7})XaYWnlG-8@;%WdX{$#=$wG-N4M9>!K&{cn z?j*nRal&YNgQ}r@-=F)hozDr?Dh^^c^eihepl5=Z9~a>9QzL_34qY$wZSfWK6<@) zk(GgBZjtz_A`)j;UNiDV9mN9N&4LG;vCMh;&1ID64iU7HQG2uTwH0o^!n2-1P>vGdNGfS~CD|5ThRwXX z?ZW4~G!XSBD!^*{vQb$bmJ49NFAWI(Aa_*2D_yyZi#pmK+QUg@{ozDvgbuFcxQl}v zGlXaUiV0D!*qa>A7E39N$U;rbwyW55(@|c0`1+x87Kf0q{`OY%`{5&p6OaHODFcOE z+sx7HX;h`Wz}^-y^ul=AdfFb0?J2YH#*(i#VoyQPcs(X$j=0c8%Bqoxbw|w?X^EhA z&i&L-(YDt%&@xC(@h_~|ooA&WG#cpun5akae}MIusG@AqzGyEijjqr`B4YA5*-yoE zDW=<%rx=u|?UcXIdWGk5 zsk|XQgrN&Y$=?{IRK6%V>MKCn)y%H*O^R;Ll%(W5?KrIb?e5Qw9|8)G)?)n&*H$Kz zJ?Vh)+6HPuyXa} zdQoPP-c~HrayWbUjojN`Jia)~m7KcrxOLQu%DT)Zp3DG!yc&$Uv;<7r$8UDJ8HD`Z zBG)nTfK;rJ^OfN-zxuWqm*k)0Z-gpgg<(Qwf-*w}eFnZsv%3`D+*Xszh)70_$?VrG zFj~0E9R*>z>M2tnZJ?*|(UW{nqZ`B?ecmihO_}g_;#oGvEvEzBttg++N)nf3T~Pt_R*xw+K8)zriC6743cd4A|z#T$G~j zP3^B?wXGL_-?y(k0!<)6$c?rYOYr}Bn1J9HF`7?*mdhA=m)nE4CzqHp0Pk`c>>?=W zp(&zzSx23WxNe2|*SY7{f^zMjY{Si;7og?GrXvp&n3c?p&|e%wa4OM-ok{oRzFB{- z`a=_iBi{u#w~+OWb&Va7SX(g0O; zkJ$l#^_ooSVmGZzI1&y9JRogxkpr&pI6oQYaH^yi&onSjU;DAfHXG0>QW#6&h42et zi&(#!=~ZWo&qI@=yO}K|C@)+H6|pb77YUzHSl@s!h?cqJ>c8kC_>KyV+$dPfmCM5I zZdwSGAD?X)f+n_rG$cJ2$4dhc1jJ@sZI5B1qfBYDgS0C}9z-?#T>w1dx;D0JT3X^n zd$EiYE_oTTywVSQlIG?%H!%@(P-FupM4AtY;!8yorJ>o$!uZp2=lrw2U3e+VRj3j^ zM>2tyHAZYLS<02XNRmd2b&>XGJ#<3_x0hkEB?E$ko8(F)Ce7HT^ z*tqbuVPq1@yAYtd>-1KPUk*{XN6pmc3`H??3F>ze${(A92;KE69p;neWhiRI?0+$F z3&8(N*0nc1gIg07TrKyn0~~=5{=&jerS{+3trUstWi`#P9wZGihj1(YiC2a*F)x4_ zMCokusXn>ZvHn5;upm)6!2-S7-2j0q8r>4dG031XuyL}F-)H5FFAo8cQz7pXKJB8e8@aZXFvH$Y8k`Fp(nvn z=Y3PEmpW@YYH3w4n+m{cc3!o=LM|9({YysR8*^ggD8V{1tvDRZX`cYgS`Jki$QJ*Lal3~_Kln}oLDklyQ5Lt4ot1-PFX*LX74A>zE z018~m@^lcRGuWZadfvXdD~bP_K;c#=zylLE0RbqrrC4)5vwRgmfF0qD!LOif3!cDf zFIa}FfPnJi`BnV}Mx({+)6B6<>jcKY^G{;#V5so^f`8~)9Xyn`3z+4Ny5aRo62PUD3KeoLt^BAKhhgq+^m z@>eoMkx$@dnB$TCEK0SLPwWI>u&{Z?Jc$XX^PuR3J$qW3AL`g!1EGRW&b=ZpyCD?( z`S^pgU(80E9HdXi5soS_KK6Wr50|J%>8GPjC|LknV7K`86RGSo>6y+{x zbxgJaLa6g*r#|>P&7Sx0{vtlnq2N{6tKERDr2?N0AYhPfNAP6IaVLcBl9Qn>5b1vW zE#pF=fP-)J<*TpsA#q?Jt-ik+LViEU_pCExP`~4|yuzqFdZihB?In$*ii=fgZmv)p zdq=R0_*BeYa#zdJIHn6u|5dL|9Nj!yh+)xiqf zc_JLR`^R7TzdlFUOa(9+HRv$79#4_*|Ni62IRMB(T{^`YWA42Z3tLzn`oqkx86J<- z9Nz=KB49qtND%hW59hu;b71W41_Xra3l*Smfbw9lW!KMJ$Pm<|fJEELMrO7lqeZ;* zma2cL<3V0VyDFm^+glLSia=2Np0S}O7J)R#0L5PXRMgYjqXByYMHYh_YCs+nlYqc5 zP$r8g);Tifi~g z-{#-KK>Ky{pkH9>+>xeGKq~3e2GtL5ld3~SFc+)Y@}ENj0`0e;PD>strgUFs&BD|A zoiQi~JH6UfPICsz1vGr+ba?3ifzVW-e7WcJG96L z3ZuZvy^bQOm|Oz2YJPFil~4fWP^fdcpfl>pEiNsSA68c&%u8?%VyBLjE<+t$U5J1^i}_#;v=uPqd4gghf4v4-8ufT4+j zsHEg7%fUmyUMv-WOEUok{?#M|wSBDzu0^N$y4AvY6dzJU-Mt$`AXC}>&|`+ggLgZK z6ZxJ{bcUtF$1&4A+eeQ=Jup>ow_3wP#|*PNz-5x?y(EIUK`VnE|v87VY#yfy&0-8`@r>K z)7_bxiuk_Xs+4kVEUcGxLa0IQ*4mmpcSSAfDUDP_5bAvNZvfT#N4gM&9!FR76#C~kUbW#5~XOm`e5aT0Sby= zj``yuyN-$cz~3K6%A#VEDgQ$Drtq2}j*>ydCzCFas=PR}*Mh!A1nn(m)`s)Rb^~^# zxPVl}Tly{!`{R3A>t_5i9wC+<`}H`d`$YV9a328R@_M=@G5yQ#!zrmCp?%f4zQM=af{~%tHJIqRa3OIOzRd00TTYKr&d%^qJEnDC%2&tMF$=sR>izGP zW@gIJ>C$qu0MfC08sZ=n$G@74P+y-+V8c;|n-ZIV`F-mCr&@d`C?DvT?|90sBI(37Gp zeY)fnN8kIy^qGIx1U&?6zK^0J+)=BhN<;ByOo`a}nn zyn9iE=!enp8EkHDjdv2azxQ{Uo-! zk zy0fV=s>f%PGPXf#Lre?mz_WWF~zgW@py=z6SJzPvA{%LLQ-XA091c>!drfcXbkrm z2|3!GmG4iHZNo%(0Sv=4f^6UpIepG%ULmA)ha0nKOTVk^uo)_gi%DNZ+)vzu^I1AmIV5#61@5c1qD!TKNvCAo zys_|fwl%^1&XOqnu{c=Jp03M(Spj4%d@xsGp1J<5BE0|wf8R~IBA4g)DmCD@|V_WyYdcJ<+X2iny{iV4D zJD>p@j71QPB$EY!0x)SVLs&oEM04jnEj>Vr*~5bUIMyDt!T%}DOVNL(d_2H;(h2@rj6Ze-4Z6gi-hGPQiUkuC2533lk#b96?j=u?kJ}_$7_=?%M`!boG?Sg>b8{kQG*REyii~QChZVH3~4PwrjnpU^dcPL_( z&jSWV-bVJAs4JRu+t_o1Q3dcL(q4DsIS68vhVKGQOi|51Wu(%s+Gm-Y3mB~Pb~Z?` z7@B31VFZmeAW#1KQBsLOXF%fkRYBP6Oy4KJQs5`qG{nKNNf+Yzo-S!_4JKISi&mxd z_{@^t*Ti$qt3zDz9I!gTbioyrPAW~RZl<&FzzPIBxerm7&!}@DDJi3{>st|tzM(g) z7_S)@192ogv{`Z#ki|}XjpT;UKVCm7+Un)>y|QiLjV%zkw(En(YuMwb6&}r>)&=~E zKU21mPi=eP6g%2H)`A?1fuMY9##$ObapQ^51$m$VJV9ba!D4@TSGr7EO$PXc{Xeio z{nvjDcC>-1U>yjK-|MU8H)f<0jTRxe0H8})-A{U|!{8^+KA{iD`<%|HOm-(D;;;3L z0E*v#an>^~E(uq^dW7K!?DR~gBMSFxb@uq20s5IplglMKxGfYGu)X021!Ns350!sm zl3QTR;IpPMFnTCl$jqhycG*qrbT*KolpL@c4HKMe8#T7z3mUHQ@ZUX6jdKmNYvpLo zpWr2DgGr2!<&uvjpNz=h*C_#l#5?J!3sCk|HTMQ(NFTj@j3>*Y{xQ(?NC%yv?Pw zmpylO(rI=xHY)?iE$>vx_U64(f938wBj+Q_@d)_4<>lUPCQh1|-^S9?_SQB4i|_@6 zIP8bn+iG)fK9@)~0Qw=L9DV=cyjj<4grH-_y4rD#r1d}fie@_i zK>aH*GCE$kN2;Vz96L%yzrr*P^TqV#In5Qinqu#H zWQ5-SbB3jFJ7$4Q%3`Z>u!Q@{H}Hm5L{gD|$c6`Xv_g`AmH<`&ja|CWo5w~A{3nqU z^_#oC*?9(xD8#@81s6w9vM2lE%4~)>K;nV$uCkeC-SND#_7f%9S*5R>Y~+r@or}?~ zc7GJgqHnM-0^kyikRm!5n;FM%l+b-Gv!xSBP_(eAJhprmENuTSCPO>b)0kpq2)ic~ z@b!j6;>mL-mnwErRLeE~tW5GAl|lxSeD9aJ41RP9*7qow>dk>5r;q9=4y^peTGxH{ z4TabJiXGU0CO+{{UEm3wmCLDg#i_j^I*4of4NaBA*?ZP;VEF;t_@4N^I(imxaRix? zMEm)y)>nHk6Yf|-Jtn0k%0t<|;<|#KF$;}dm5{m8k7b`Y12&wT-Ej%zZG*w29dG>_ZMCqwlCzMFDc9Ul&vx?#2?r8&DWuc|@mjr}UPt3+99prU3TTcWL zt;WgEF^0@Gt8Lj1=amx4c8;J();;8*UO-$_=q&g+{JQSk{NL*++&MALnd#_vdIfKP zye$bUK~|XkabIP`3jD+VMTqr~QqZJJE2vVxkID7Dp3!~^i!3ZBRwQE@ovA0Bj5g9X zvcGNr$nVj^n-9T1AHv$3=WnhS44rQjg!?w_49BgAiEbTM8@n@^wK?T~T@TuDyDN9b z|8jDamP#+W6pNM&eh6`b*$aXn)*2y9A$fEzisbU{Vl8MhwSX^SGpxXU-?X$!`^$P zTKOYT26juNG`NT)GwxZe&|4@4tNOh}k81Due$AJDbnMS4M^0WIUOuj*H_<(X&Lo$L z(QVw)_=Spaih&VGqIbZ&JiOAbXSaNgfN!({cRAF0(V5lqsJ2Pfi43sG+Cf=|YPQG8~ir{e3wKL$<*%1pCqx zkJ|(@0P*cu$93;)=G@Rz#h5ul3cjPOo*;hQ+_gOB=OlETB zSdm6xrbw>ZJNeV#zJqClaIC6w20CavxXh897g)P5!&Y0Ndsm2TW3O_2RhBT9(C2q0`i#4dvg9!Q?CyZJE2YKKNad2S9o9XUj{A?h99P)CEie%+}T zswMY0eczfPGHl@qDzu-t`1=K$A}8O8(_I9^qJ^T$0L&Ll0f7{jkNm;D3J4@het%<{ zyS94Z#G-azg`zr`ZPpdYwnupBizr@DEK(j@{!(9b8f%6R#8V_q{|Vl?17|Td#r=t_ z@Wh_GYVm%WV8#ZS<~!!<$(=>$-p1TE$j<*75CnL-CVZg@dn$mVe(xrtKz4h1mF-|B zJWzmu%JM`ffhG(nwcXT2V$?FznO2Ue+9!7c3Z0Ia=?1<-DA48LA!#a8O1KpsH{(Nl_xqL0uO2%VezcAHcC_gIxb&U=<=~aVM$AD9%dm`w zw?}hygE}j}Vvd*aovD}~K!i1JH${|o&h^Mh<=AN3?zHlID;(M2A1T(oM|MkzoGf&< za8BG>dKVgx94mKE9c?T;EUXIPIx`StTdzuEh7~$UFZ1L3kHnuuRs?`*?E)jd7`T6< zcyBtqeh-vLGD=>n)iz57X2oUs8LddtRECl8O~;3FtYC`|N$5;0D8>de9D^8w?g-t^ zE?4bvNY(8ueUF+{)?^LwU|j@gFiS3in|7 z0O#3{)mWP@3}&h|rFGh-1q1}>tmqV=jcv-BS{>ra*9h*}VOm+Y3cis4Ze{3dT=r*kBF$`c7!jEV@YgG_p{wb&8T3A8moY!se!R) z)o&u1B2VgimSHJ;o9Xq_w-g|DgNZjYC+uxNN)YT&H#c{CnPtPvYz8rPI4RV{5JnkZ{OlzgeU2e*Lc`xRIX3bW*EBp8b z&4k_Y)J>_CmGzZ%hpB1sL;faoQ9Q?cbru=ACg0oJD=jUZB|0xAD?8B9(SZ$8zdT&g zihY_bD|k&)#*`^ApyQu)n{|ubHVwwQ`J`@PN`{_LuWB}OHr4s;R^X11CTGv3U#;)1 zv>7Mu-J!@&KN_1NnQeb97CSD&(}NkEQ!nmImjrCrMds$`W97`&oSi(JJ^VDPoND@H t{(EP7*-{p)_`lqw27mp3xq`i~q}#C^#(A3*06v6N?`YjFylMIL{{XaJ<>&wa literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idgq4vixlsmunm2gv6kqhg.png b/vignettes/tinytable_assets/idgq4vixlsmunm2gv6kqhg.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/idhjfagem8gm4j44kzzsge.png b/vignettes/tinytable_assets/idhjfagem8gm4j44kzzsge.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/idiyddg67jqsy47kbwt1e5.png b/vignettes/tinytable_assets/idiyddg67jqsy47kbwt1e5.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/idjxah81p4f7tdsubv9x94.png b/vignettes/tinytable_assets/idjxah81p4f7tdsubv9x94.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba387fc3e1135765e809dcc4044514a6a01b861 GIT binary patch literal 2564 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 IIVCg!00q9^&;S4c literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idm6lkdb82fshu7w29tz5t.png b/vignettes/tinytable_assets/idm6lkdb82fshu7w29tz5t.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/idnjfa9athzp2uutp5v31n.png b/vignettes/tinytable_assets/idnjfa9athzp2uutp5v31n.png new file mode 100644 index 0000000000000000000000000000000000000000..b980a6ca90a2d0db7e97fec96b8fe015c005ecb1 GIT binary patch literal 8979 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 KnziaqkN*R|Fzbo{ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idpxm6hsdr26m11euvrc7y.png b/vignettes/tinytable_assets/idpxm6hsdr26m11euvrc7y.png new file mode 100644 index 0000000000000000000000000000000000000000..51ac33e121545a4b551927b2fe78037fdd3f6ce7 GIT binary patch literal 15240 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idrdksirkivz153fe88idl.png b/vignettes/tinytable_assets/idrdksirkivz153fe88idl.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/idrxh666wpt5k3jno94p64.png b/vignettes/tinytable_assets/idrxh666wpt5k3jno94p64.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8a2afc91a3e2ce3e185da6c19afe23505011ed GIT binary patch literal 1728 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 aW%bI*2!S$Y(O_QcVrf0rQ?FLFkNiKhLTQQs literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idwb57m2cdzy1kfaeftfc3.png b/vignettes/tinytable_assets/idwb57m2cdzy1kfaeftfc3.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_tutorial.pdf b/vignettes/tinytable_tutorial.pdf index 837e306b80a1f194987425214ee5638e8c48fb5b..3898729e1156c1c89109b12b0e765414c476c399 100644 GIT binary patch delta 54248 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Ù=d?+!%F!v>aeDI7Ve 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 delta 53148 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%0AXC3na4p#ZJ+W$TI8 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

Combine two tiny tables.